mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2025-02-25 23:21:13 +01:00
45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
import logging
|
|
import sys
|
|
|
|
from PyQt5.QtCore import QThread, pyqtSignal
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
if sys.platform == "win32":
|
|
log.info("skipping inotify on win32 as it is not supported")
|
|
else:
|
|
import inotify.adapters
|
|
import inotify.constants
|
|
|
|
|
|
class FileWatcherThread(QThread):
|
|
signal = pyqtSignal()
|
|
|
|
def __init__(self, dir_names, file_names, *args, **kwargs):
|
|
QThread.__init__(self, *args, **kwargs)
|
|
self.dir_names = dir_names
|
|
self.file_names = file_names
|
|
|
|
def run(self):
|
|
# run method gets called when we start the thread
|
|
if sys.platform == "win32":
|
|
log.info("skipping inotify on win32 as it is not supported")
|
|
return
|
|
|
|
log.info("starting config watcher")
|
|
i = inotify.adapters.Inotify()
|
|
|
|
mask = inotify.constants.IN_MODIFY | inotify.constants.IN_CLOSE_WRITE
|
|
|
|
for dir_name in self.dir_names:
|
|
i.add_watch(dir_name, mask=mask)
|
|
|
|
for event in i.event_gen(yield_nones=False):
|
|
_, type_names, path, filename = event
|
|
|
|
log.debug("PATH=[{}] FILENAME=[{}] EVENT_TYPES={}".format(
|
|
path, filename, type_names))
|
|
|
|
if path in self.dir_names and filename in self.file_names:
|
|
log.info("watched file was modified/touched")
|
|
self.signal.emit()
|