Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 from python_qt_binding.QtCore import QEvent, QObject, Signal
00034
00035
00036 class WindowChangedSignaler(QObject):
00037
00038 """Signaler for for filtered events of an icon or title change of a widget."""
00039
00040 hide_signal = Signal(object)
00041 show_signal = Signal(object)
00042
00043 window_icon_changed_signal = Signal(object)
00044 window_title_changed_signal = Signal(object)
00045
00046 def __init__(self, widget, parent=None):
00047 super(WindowChangedSignaler, self).__init__(parent)
00048 self._widget = widget
00049 self.setObjectName('WindowChangedSignaler__' + self._widget.objectName())
00050 self._recursive_invocation = False
00051 self._widget.installEventFilter(self)
00052
00053 def emit_all(self):
00054 if self._widget.isVisible():
00055 self.show_signal.emit(self._widget)
00056 else:
00057 self.hide_signal.emit(self._widget)
00058 self.window_icon_changed_signal.emit(self._widget)
00059 self.window_title_changed_signal.emit(self._widget)
00060
00061 def eventFilter(self, watched, event):
00062 if event.type() == QEvent.Hide:
00063 self.hide_signal.emit(watched)
00064
00065 if event.type() == QEvent.Show:
00066 self.show_signal.emit(watched)
00067
00068 if event.type() == QEvent.WindowIconChange:
00069
00070 if not self._recursive_invocation:
00071 self._recursive_invocation = True
00072 self.window_icon_changed_signal.emit(watched)
00073 self._recursive_invocation = False
00074
00075 if event.type() == QEvent.WindowTitleChange:
00076
00077 if not self._recursive_invocation:
00078 self._recursive_invocation = True
00079 self.window_title_changed_signal.emit(watched)
00080 self._recursive_invocation = False
00081
00082 return QObject.eventFilter(self, watched, event)