diff --git a/__main__.py b/__main__.py new file mode 100644 --- /dev/null +++ b/__main__.py @@ -0,0 +1,49 @@ +import sys, os, fcntl, signal +from PyQt5 import QtWidgets, QtCore +from devices import get_storage_devices +from forms.mainwindow import MainWindow +from pics import pics + +devices = get_storage_devices(True, 'disk') + + +#if not os.access('/dev/{}', os.R_OK) or not os.access('/dev/{}', os.W_OK): +# if QtWidgets.QMessageBox.question('Access denied', 'Unable to get access to disk drives') + + +app = QtWidgets.QApplication(sys.argv) + + +def handle_signal_wakeup(): + notifier.setEnabled(False) + read_fd = notifier.socket() + try: + os.read(read_fd, 1) + except OSError: + print("Failed to read wakeup fd.") + notifier.setEnabled(True) + + +def destroy(a, b): + form.clean() + app.exit(128 + a) + + +read_fd, write_fd = os.pipe() +for fd in (read_fd, write_fd): + flags = fcntl.fcntl(fd, fcntl.F_GETFL) + fcntl.fcntl(fd, fcntl.F_SETFL, flags | os.O_NONBLOCK) + + +notifier = QtCore.QSocketNotifier(read_fd, QtCore.QSocketNotifier.Read) +notifier.activated.connect(handle_signal_wakeup) +orig_wakeup_fd = signal.set_wakeup_fd(write_fd) +signal.signal(signal.SIGTERM, destroy) +signal.signal(signal.SIGINT, destroy) + + +form = MainWindow() +form.show() +rval = app.exec() +form.clean() +sys.exit(rval)