File indexing completed on 2024-05-19 05:35:37
0001 # SPDX-License-Identifier: GPL-3.0-or-later 0002 # SPDX-FileCopyrightText: 2021 Aditya Mehra <aix.m@outlook.com> 0003 0004 import os 0005 import subprocess 0006 import sys 0007 0008 from PySide2.QtCore import QUrl, Slot, Signal, QProcess, QByteArray, Property 0009 from PySide2.QtQml import qmlRegisterType 0010 0011 from PicoWizard.module import Module 0012 from PicoWizard.utils.logger import Logger 0013 0014 0015 class Mycroft(Module): 0016 log = Logger.getLogger(__name__) 0017 0018 def __init__(self, parent=None): 0019 super().__init__(__file__, parent) 0020 0021 @staticmethod 0022 def registerTypes() -> None: 0023 qmlRegisterType(Mycroft, 'PicoWizard', 1, 0, 'MycroftModule') 0024 0025 @staticmethod 0026 def qmlPath() -> QUrl: 0027 return QUrl(os.path.join(os.path.dirname(os.path.realpath(__file__)), "Mycroft.qml")) 0028 0029 @Slot(None, result=str) 0030 def moduleName(self) -> str: 0031 return self.tr("Mycroft") 0032 0033 @Slot(None, result=None) 0034 def enableMycroftIntegration(self): 0035 process = QProcess(self) 0036 args = [os.path.join(os.path.dirname(os.path.realpath(__file__)), 'SetupMycroft.sh'), '--enable'] 0037 process.start('/usr/bin/pkexec', args) 0038 0039 process.finished.connect(lambda exitCode, exitStatus: self.enableMycroftSuccess(exitCode)) 0040 process.error.connect(lambda err: self.enableMycroftFailed(err)) 0041 0042 def enableMycroftSuccess(self, exitCode): 0043 self.log.info('Mycroft Enabled Successfully') 0044 self.mycroftEnabledSuccess.emit() 0045 0046 def enableMycroftFailed(self, exitCode): 0047 self.log.info('Mycroft Enabled Failed') 0048 self.mycroftEnabledFailed.emit() 0049 0050 @Slot(None, result=None) 0051 def disableMycroftIntegration(self): 0052 process = QProcess(self) 0053 args = [os.path.join(os.path.dirname(os.path.realpath(__file__)), 'SetupMycroft.sh'), ' --disable'] 0054 process.start('/usr/bin/pkexec', args) 0055 0056 process.finished.connect(lambda exitCode, exitStatus: self.disableMycroftSuccess(exitCode)) 0057 process.error.connect(lambda err: self.disableMycroftFailed(err)) 0058 0059 def disableMycroftSuccess(self, exitCode): 0060 self.log.info('Mycroft Enabled Successfully') 0061 self.mycroftDisabledSuccess.emit() 0062 0063 def disableMycroftFailed(self, exitCode): 0064 self.log.info('Mycroft Enabled Failed') 0065 self.mycroftDisabledFailed.emit() 0066 0067 @Signal 0068 def mycroftEnabledSuccess(self): 0069 pass 0070 0071 @Signal 0072 def mycroftEnabledFailed(self): 0073 pass 0074 0075 @Signal 0076 def mycroftDisabledSuccess(self): 0077 pass 0078 0079 @Signal 0080 def mycroftDisabledFailed(self): 0081 pass