app.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #!/usr/bin/env python3
  2. import os, pathlib, subprocess, re
  3. import yaml
  4. from PySide2 import Qt, QtCore, QtWidgets, QtGui
  5. class App(QtWidgets.QApplication):
  6. def __init__(self, argv):
  7. super().__init__(argv)
  8. self.__env = Environment()
  9. self.__boot = True if 'boot' in argv else False
  10. def get_icon(self) -> str:
  11. return f"{self.__env.get_base()}/gui/ozwadmin.png"
  12. def get_yaml(self) -> str:
  13. with open(self.__env.get_yaml()) as yaml_file:
  14. return yaml.full_load(yaml_file)
  15. def get_env(self) -> str:
  16. return self.__env
  17. def boot(self) -> bool:
  18. return self.__boot
  19. class Environment(object):
  20. def __init__(self):
  21. self.__env = 'snap' if os.getenv('SNAP') is not None else 'local'
  22. self.__base = f"{os.getenv('SNAP')}/meta" if self.__env == 'snap' else f"{pathlib.Path(__file__).parent.absolute()}/../../../snap"
  23. def get_yaml(self) -> str:
  24. return f"{self.__base}/{'snap' if self.__base.endswith('meta') else 'snapcraft'}.yaml"
  25. def get_base(self) -> str:
  26. return self.__base
  27. def is_connected(self, plug, provider) -> bool:
  28. if self.__env != "snap":
  29. op = subprocess.check_output(['snap', 'connections', 'ozwadmin'], encoding="UTF-8")
  30. regex = r"ozwadmin\:" + plug + r"\s+" + (provider if provider is not None else '' ) + r"\:" + plug
  31. return True if re.search(regex, op) else False
  32. p = subprocess.run(['snapctl', 'is-connected', plug], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  33. return p.returncode == 0