|
new file 100644
|
|
|
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)
|