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