WebBrowser/Tools/DelayedFileWatcher.py

branch
QtWebEngine
changeset 4766
5f8d08aa2217
parent 4763
8ad353f31184
child 5389
9b1c800daff3
equal deleted inserted replaced
4763:8ad353f31184 4766:5f8d08aa2217
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2 2
3 # Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de> 3 # Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de>
4 # 4 #
5 5
6 """
7 Module implementing a file system watcher with a delay.
8 """
9
6 from __future__ import unicode_literals 10 from __future__ import unicode_literals
7 11
8 ##class DelayedFileWatcher : public QFileSystemWatcher 12 from PyQt5.QtCore import pyqtSignal, pyqtSlot, QFileSystemWatcher, QTimer
9 ##{ 13
10 ## Q_OBJECT 14
11 ## 15 class DelayedFileWatcher(QFileSystemWatcher):
12 ##public: 16 """
13 ## explicit DelayedFileWatcher(QObject* parent = 0); 17 Class implementing a file system watcher with a delay.
14 ## explicit DelayedFileWatcher(const QStringList &paths, QObject* parent = 0); 18
15 ## 19 @signal delayedDirectoryChanged(path) emitted to indicate a changed
16 ##signals: 20 directory
17 ## void delayedDirectoryChanged(const QString &path); 21 @signal delayedFileChanged(path) emitted to indicate a changed file
18 ## void delayedFileChanged(const QString &path); 22 """
19 ## 23 delayedDirectoryChanged = pyqtSignal(str)
20 ##private slots: 24 delayedFileChanged = pyqtSignal(str)
21 ## void slotDirectoryChanged(const QString &path); 25
22 ## void slotFileChanged(const QString &path); 26 def __init__(self, paths=None, parent=None):
23 ## 27 """
24 ## void dequeueDirectory(); 28 Constructor
25 ## void dequeueFile(); 29
26 ## 30 @param paths list of paths to be watched
27 ##private: 31 @type list of str
28 ## void init(); 32 @param parent reference to the parent object
29 ## 33 @type QObject
30 ## QQueue<QString> m_dirQueue; 34 """
31 ## QQueue<QString> m_fileQueue; 35 if paths:
32 ##}; 36 super(DelayedFileWatcher, self).__init__(paths, parent)
33 ## 37 else:
34 ## 38 super(DelayedFileWatcher, self).__init__(parent)
35 ##DelayedFileWatcher::DelayedFileWatcher(QObject* parent) 39
36 ## : QFileSystemWatcher(parent) 40 self.__dirQueue = []
37 ##{ 41 self.__fileQueue = []
38 ## init(); 42
39 ##} 43 self.directoryChanged.connect(self.__directoryChanged)
40 ## 44 self.fileChanged.connect(self.__fileChanged)
41 ##DelayedFileWatcher::DelayedFileWatcher(const QStringList &paths, QObject* parent) 45
42 ## : QFileSystemWatcher(paths, parent) 46 @pyqtSlot(str)
43 ##{ 47 def __directoryChanged(self, path):
44 ## init(); 48 """
45 ##} 49 Private slot handling a changed directory.
46 ## 50
47 ##void DelayedFileWatcher::init() 51 @param path name of the changed directory
48 ##{ 52 @type str
49 ## connect(this, SIGNAL(directoryChanged(QString)), this, SLOT(slotDirectoryChanged(QString))); 53 """
50 ## connect(this, SIGNAL(fileChanged(QString)), this, SLOT(slotFileChanged(QString))); 54 self.__dirQueue.append(path)
51 ##} 55 QTimer.singleShot(500, self.__dequeueDirectory)
52 ## 56
53 ##void DelayedFileWatcher::slotDirectoryChanged(const QString &path) 57 @pyqtSlot(str)
54 ##{ 58 def __fileChanged(self, path):
55 ## m_dirQueue.enqueue(path); 59 """
56 ## QTimer::singleShot(500, this, SLOT(dequeueDirectory())); 60 Private slot handling a changed file.
57 ##} 61
58 ## 62 @param path name of the changed file
59 ##void DelayedFileWatcher::slotFileChanged(const QString &path) 63 @type str
60 ##{ 64 """
61 ## m_fileQueue.enqueue(path); 65 self.__fileQueue.append(path)
62 ## QTimer::singleShot(500, this, SLOT(dequeueFile())); 66 QTimer.singleShot(500, self.__dequeueFile)
63 ##} 67
64 ## 68 @pyqtSlot()
65 ##void DelayedFileWatcher::dequeueDirectory() 69 def __dequeueDirectory(self):
66 ##{ 70 """
67 ## emit delayedDirectoryChanged(m_dirQueue.dequeue()); 71 Private slot to signal a directory change.
68 ##} 72 """
69 ## 73 self.delayedDirectoryChanged.emit(self.__dirQueue.pop(0))
70 ##void DelayedFileWatcher::dequeueFile() 74
71 ##{ 75 @pyqtSlot()
72 ## emit delayedFileChanged(m_fileQueue.dequeue()); 76 def __dequeueFile(self):
73 ##} 77 """
78 Private slot to signal a file change.
79 """
80 self.delayedFileChanged.emit(self.__fileQueue.pop(0))

eric ide

mercurial