コード例 #1
0
    def renameMaterial(self, message: QDBusMessage):
        machine_manager = Application.getInstance().getMachineManager()

        material_id = message.arguments()[0]
        new_material_name = message.arguments()[1]

        machine_manager.renameMaterial(material_id, new_material_name)
コード例 #2
0
ファイル: notification.py プロジェクト: mkonig/qutebrowser
 def __init__(self, msg: QDBusMessage) -> None:
     assert msg.type() == QDBusMessage.ErrorMessage
     self.error = msg.errorName()
     self.error_message = msg.errorMessage()
     self.is_fatal = self.error not in self._NON_FATAL_ERRORS
     text = f"{self.error}: {self.error_message}"
     super().__init__(text)
コード例 #3
0
ファイル: notification.py プロジェクト: mkonig/qutebrowser
    def _verify_message(
        self,
        msg: QDBusMessage,
        expected_signature: str,
        expected_type: QDBusMessage.MessageType,
    ) -> None:
        """Check the signature/type of a received message.

        Raises DBusError if the signature doesn't match.
        """
        assert expected_type not in [
            QDBusMessage.ErrorMessage,
            QDBusMessage.InvalidMessage,
        ], expected_type

        if msg.type() == QDBusMessage.ErrorMessage:
            raise DBusError(msg)

        signature = msg.signature()
        if signature != expected_signature:
            raise Error(
                f"Got a message with signature {signature} but expected "
                f"{expected_signature} (args: {msg.arguments()})")

        typ = msg.type()
        if typ != expected_type:
            type_str = debug.qenum_key(QDBusMessage.MessageType, typ)
            expected_type_str = debug.qenum_key(QDBusMessage.MessageType,
                                                expected_type)
            raise Error(
                f"Got a message of type {type_str} but expected {expected_type_str}"
                f"(args: {msg.arguments()})")
コード例 #4
0
    def duplicateMaterial(self, message: QDBusMessage):
        from cura.Settings.ContainerManager import ContainerManager
        container_manager = ContainerManager.getInstance()

        base_material_id = message.arguments()[0]  # material to duplicate from
        new_id = message.arguments()[1]  # (preferred) duplicated material ID

        container_manager.duplicateMaterial(base_material_id, new_id)
コード例 #5
0
    def setQualityProfile(self, message: QDBusMessage):
        qualityProfileName = message.arguments()[0]

        machine_manager = Application.getInstance().getMachineManager()
        machine_manager.setActiveQuality(qualityProfileName)

        reply = message.createReply()
        self._session_bus.send(reply)
コード例 #6
0
    def hasMachine(self, message: QDBusMessage):
        machine_name = message.arguments()[0]

        machine_manager = Application.getInstance().getMachineManager()
        result = machine_manager.hasMachine(machine_name)
        reply = message.createReply()
        reply.setArguments([result])
        self._session_bus.send(reply)
コード例 #7
0
    def hasMaterial(self, message: QDBusMessage):
        machine_manager = Application.getInstance().getMachineManager()

        material_id = message.arguments()[0]

        reply = message.createReply()
        reply.setArguments([machine_manager.hasMaterial(material_id)])
        self._session_bus.send(reply)
コード例 #8
0
    def createMaterial(self, message: QDBusMessage):
        from cura.Settings.ContainerManager import ContainerManager
        container_manager = ContainerManager.getInstance()

        new_id = message.arguments()[0]
        new_name = message.arguments()[1]

        container_manager.createMaterial(new_id=new_id, new_name=new_name)
コード例 #9
0
 def handle_dbus_add(self, msg: QDBusMessage):
     if 'org.freedesktop.UDisks2.Drive' in msg.arguments()[1]:
         vendor = msg.arguments(
         )[1]['org.freedesktop.UDisks2.Drive']['Vendor']
         model = msg.arguments(
         )[1]['org.freedesktop.UDisks2.Drive']['Model']
         # serial = msg.arguments()[1]['org.freedesktop.UDisks2.Drive']['Serial']
         print(f"Dbus detected new device: {vendor} {model}")
         self.drives_list.refresh()
コード例 #10
0
    def exportMaterial(self, message: QDBusMessage):
        material_id = message.arguments()[0]
        material_file_path = message.arguments()[1]

        from cura.Settings.ContainerManager import ContainerManager
        container_manager = ContainerManager.getInstance()
        container_manager.exportContainer(
            material_id,
            container_manager.getContainerNameFilters("material")[0],
            material_file_path)
コード例 #11
0
    def GetCapabilities(self, message: QDBusMessage) -> List[str]:
        assert not message.signature()
        assert not message.arguments()
        assert message.type() == QDBusMessage.MethodCallMessage

        capabilities = ["actions", "x-kde-origin-name"]
        if self.supports_body_markup:
            capabilities.append("body-markup")

        return capabilities
コード例 #12
0
    def Notify(self, dbus_message: QDBusMessage) -> int:
        assert dbus_message.signature() == 'susssasa{sv}i'
        assert dbus_message.type() == QDBusMessage.MethodCallMessage

        message = self._parse_notify_args(*dbus_message.arguments())

        if message.replaces_id == 0:
            message_id = next(self._message_id_gen)
        else:
            message_id = message.replaces_id
        self.messages[message_id] = message

        self.last_id = message_id
        return message_id
コード例 #13
0
    def saveFile(self, message: QDBusMessage):
        if not message.arguments() or len(message.arguments()) > 2:
            return
        file_path = message.arguments()[0]
        mime_type = "text/x-gcode"
        if len(message.arguments()) == 2:
            mime_type = message.arguments()[1]

        nodes = Application.getInstance().getController().getScene().getRoot()
        output_device = Application.getInstance().getOutputDeviceManager(
        ).getOutputDevice("local_file")
        output_device.requestWrite(nodes,
                                   file_path, [mime_type],
                                   silent=True,
                                   preferred_mimetype=mime_type)
コード例 #14
0
    def getActiveMaterial(self, message: QDBusMessage):
        machine_manager = Application.getInstance().getMachineManager()

        reply = message.createReply()
        reply.setArguments(
            [machine_manager.getActiveMaterial().serializeMetaData()])
        self._session_bus.send(reply)
コード例 #15
0
ファイル: DBusInterface.py プロジェクト: wucw1225/libCharon
    def callMethod(cls,
                   method_name: str,
                   signature: str,
                   *args,
                   service_path: str = DefaultServicePath,
                   object_path: str = DefaultObjectPath,
                   interface: str = DefaultInterface) -> Any:
        cls.__ensureDBusSetup()
        assert cls.__connection is not None

        if cls.__use_qt:
            message = QDBusMessage.createMethodCall(service_path, object_path,
                                                    interface, method_name)
            message.setArguments(args)
            result = QDBusReply(cls.__connection.call(message))
            if result.isValid():
                return result.value()
            else:
                log.warning("Did not receive a valid reply for method call %s",
                            method_name)
                log.warning(result.error().message())
                return None

        else:
            return cls.__connection.call_blocking(service_path, object_path,
                                                  interface, method_name,
                                                  signature, args)
コード例 #16
0
ファイル: api_mock.py プロジェクト: krontech/chronos-gui-1
 def test3():
     self._state["recordingExposureNs"] = int(8.5e8)
     signal = QDBusMessage.createSignal(
         '/', 'com.krontech.chronos.control.mock',
         'recordingExposureNs')
     signal << self._state["recordingExposureNs"]
     QDBusConnection.systemBus().send(signal)
コード例 #17
0
 def setIconName(self, value):
     self._iconName = value
     msg = QDBusMessage.createSignal("/StatusNotifierItem",
                                     "org.kde.StatusNotifierItem",
                                     "NewIcon")
     msg.setArguments([])
     self.__sessionService.sessionBus.send(msg)
コード例 #18
0
    def getMaterial(self, message: QDBusMessage):
        from UM.Settings.ContainerRegistry import ContainerRegistry
        container_registry = ContainerRegistry.getInstance()

        material_id = message.arguments()[0]

        material = container_registry.findInstanceContainers(id=material_id,
                                                             type="material")
        material_data = None
        if material:
            material = material[0]
            material_data = material.serializeMetaData()

        reply = message.createReply()
        reply.setArguments([material_data])
        self._session_bus.send(reply)
コード例 #19
0
ファイル: udisksqt.py プロジェクト: Grumbel/dirtool
 def _on_interfaces_added(self, msg: QDBusMessage):
     objpath, interfaces = msg.arguments()
     print("added", objpath)
     for interface, properties in interfaces.items():
         print("  ", interface)
         for name, value in properties.items():
             print("    ", name, "=", value)
コード例 #20
0
ファイル: udisksqt.py プロジェクト: SuicideSin/dirtool
 def _on_interfaces_added(self, msg: QDBusMessage):
     objpath, interfaces = msg.arguments()
     print("added", objpath)
     for interface, properties in interfaces.items():
         print("  ", interface)
         for name, value in properties.items():
             print("    ", name, "=", value)
コード例 #21
0
 def _updateLayout(self):
     self._revision += 1
     msg = QDBusMessage.createSignal("/MenuBar", "com.canonical.dbusmenu", "LayoutUpdated")
     msg.setArguments([
         QDBusArgument(self._revision, QMetaType.UInt),
         QDBusArgument(DBusMenuAction.Root.value, QMetaType.Int),
     ])
     self.__sessionService.sessionBus.send(msg)
コード例 #22
0
def call_cura(method, *args):
    dbus_service = "nl.ultimaker.cura"
    dbus_object = "/Application"
    dbus_interface = "nl.ultimaker.cura.Application"

    message = QDBusMessage.createMethodCall(dbus_service, dbus_object,
                                            dbus_interface, method)
    message.setArguments(args)
    QDBusConnection.sessionBus().call(message)
コード例 #23
0
 def setProgress(self, value: float, visible: bool = True):
     signal = QDBusMessage.createSignal(
         '/com/canonical/unity/launcherentry/337963624',
         'com.canonical.Unity.LauncherEntry', 'Update')
     message = signal << self._desktopfile << {
         'progress-visible': visible,
         'progress': value
     }
     self._sessionbus.send(message)
コード例 #24
0
 def setIconName(self, value):
     self._iconName = value
     msg = QDBusMessage.createSignal(
         "/StatusNotifierItem",
         "org.kde.StatusNotifierItem",
         "NewIcon"
     )
     msg.setArguments([])
     self.__sessionService.sessionBus.send(msg)
コード例 #25
0
 def update(self, progress, visible=True):
     self._progress = progress
     self._visible = visible
     # Automatic forwarding of Qt signals does not work in this case
     # since Qt cannot handle the complex "a{sv}" type.
     # Create the signal message manually.
     message = QDBusMessage.createSignal(self._path, DBUS_INTERFACE, 'Update')
     message.setArguments([self._app_uri, self.current_progress])
     self._bus.send(message)
コード例 #26
0
    def getActiveExtruder(self, message: QDBusMessage):
        extruder_manager = Application.getInstance().getExtruderManager()
        active_extruder = extruder_manager.getActiveExtruderStack()

        extruder_data = active_extruder.serializeMetaData()

        reply = message.createReply()
        reply.setArguments([extruder_data])
        self._session_bus.send(reply)
コード例 #27
0
 def setProgress(self, value: float, visible: bool=True) -> bool:
     if sys.platform.startswith('linux') and self._sessionbus.isConnected():
         signal = QDBusMessage.createSignal('/com/canonical/unity/launcherentry/337963624',
                                            'com.canonical.Unity.LauncherEntry', 'Update')
         message = signal << self._desktopfile << {'progress-visible': visible, 'progress': value}
         return self._sessionbus.send(message)
     elif sys.platform == 'win32' and TaskbarProgress.isValidWinVer():
         self.parent.win_taskbar_button.progress().setValue(int(value * 100))
         return True
コード例 #28
0
    def action(self, notification_id: int, name: str) -> None:
        """Sends an action notification for the given ID."""
        message = QDBusMessage.createSignal(
            notification.DBusNotificationAdapter.PATH,
            notification.DBusNotificationAdapter.INTERFACE, "ActionInvoked")

        message.setArguments([notification._as_uint32(notification_id), name])
        if not self._bus.send(message):
            raise OSError("Could not send action notification")
コード例 #29
0
 def _updateLayout(self):
     self._revision += 1
     msg = QDBusMessage.createSignal("/MenuBar", "com.canonical.dbusmenu",
                                     "LayoutUpdated")
     msg.setArguments([
         QDBusArgument(self._revision, QMetaType.UInt),
         QDBusArgument(DBusMenuAction.Root.value, QMetaType.Int),
     ])
     self.__sessionService.sessionBus.send(msg)
コード例 #30
0
ファイル: api_mock.py プロジェクト: krontech/chronos-gui-1
    def set(self, data):
        # Check all errors first to avoid partially applying an update.
        for key, value in data.items():
            if key not in self._state:
                # return self.sendErrorReply('unknownValue', f"The value '{key}' is not known. Valid keys are: {self._state.keys()}")
                cameraControlAPI.send(
                    QDBusMessage.createErrorReply(
                        'unknownValue',
                        f"The value '{key}' is not known. Valid keys are: {self._state.keys()}"
                    ))
            if not isinstance(value, type(self._state[key])):
                return cameraControlAPI.send(
                    QDBusMessage.createErrorReply(
                        'wrongType',
                        f"Can not set '{key}' to {value}. (Previously {self._state[key]}.) Expected {type(self._state[key])}, got {type(value)}."
                    ))

        for key, value in data.items():
            self._state[key] = value
コード例 #31
0
ファイル: notification.py プロジェクト: mkonig/qutebrowser
    def _handle_close(self, msg: QDBusMessage) -> None:
        """Handle NotificationClosed from DBus."""
        try:
            self._verify_message(msg, "uu", QDBusMessage.SignalMessage)
        except Error:
            if not self._quirks.wrong_closes_type:
                raise
            self._verify_message(msg, "ui", QDBusMessage.SignalMessage)

        notification_id, _close_reason = msg.arguments()
        self.close_id.emit(notification_id)
コード例 #32
0
    def getActiveQuality(self, message: QDBusMessage):
        machine_manager = Application.getInstance().getMachineManager()
        quality = machine_manager.activeMachine.quality

        data = quality.getMetaData().copy()
        data["id"] = quality.getId()
        data["name"] = quality.getName()

        reply = message.createReply()
        reply.setArguments([json.dumps(data)])
        self._session_bus.send(reply)
コード例 #33
0
    def getQualityProfiles(self, message: QDBusMessage):
        available_quality_profiles = ProfilesModel.getInstance().items
        qualities = []
        for quality_profile in available_quality_profiles:
            qualities.append({
                "name": quality_profile["name"],
                "id": quality_profile["id"]
            })

        reply = message.createReply()
        reply.setArguments(qualities)
        self._session_bus.send(reply)
コード例 #34
0
ファイル: remote_control.py プロジェクト: hydrargyrum/eye
def sendRequest(req, *args):
	global BUS

	LOGGER.debug('sending request %r%r', req, args)

	method_args = [req]
	method_args.extend(args)

	msg = QDBusMessage.createMethodCall('re.indigo.eye', '/', 're.indigo.eye', 'request')
	msg.setArguments(method_args)

	BUS = QDBusConnection.sessionBus()
	reply = BUS.call(msg)

	if reply.type() == QDBusMessage.ErrorMessage:
		raise ValueError(reply.errorMessage())
	return list(reply.arguments())
コード例 #35
0
ファイル: chat.py プロジェクト: death-finger/Scripts
 def sendClickedSlot(self):
     msg = QDBusMessage.createSignal('/', 'org.example.chat', 'message')
     msg << self.m_nickname << self.messageLineEdit.text()
     QDBusConnection.sessionBus().send(msg)
     self.messageLineEdit.setText('')
コード例 #36
0
ファイル: main.py プロジェクト: steafen/deepin-menu
 def invokeItem(self, id):
     msg = QDBusMessage.createSignal('/com/deepin/menu', 'com.deepin.menu.Menu', 'ItemInvoked')
     msg << id
     QDBusConnection.sessionBus().send(msg)
コード例 #37
0
ファイル: udisksqt.py プロジェクト: Grumbel/dirtool
 def _on_interfaces_removed(self, msg: QDBusMessage):
     print("removed", msg.arguments())