remote: avoid potential tasks returning None
[git-cola.git] / cola / qtcompat.py
blob1db3f10cb6686be6338d1b21679ac206876670c2
1 from __future__ import absolute_import, division, print_function, unicode_literals
3 from qtpy import QtCore
4 from qtpy import QtGui
5 from qtpy import QtWidgets
6 from qtpy.QtCore import Qt
8 try:
9 from qtpy import PYQT4
10 except ImportError:
11 PYQT4 = False
13 from . import hotkeys
16 def patch(obj, attr, value):
17 if not hasattr(obj, attr):
18 setattr(obj, attr, value)
21 def install():
22 patch(QtWidgets.QGraphicsItem, 'mapRectToScene', _map_rect_to_scene)
23 patch(QtGui.QKeySequence, 'Preferences', hotkeys.PREFERENCES)
26 def add_search_path(prefix, path):
27 if hasattr(QtCore.QDir, 'addSearchPath'):
28 QtCore.QDir.addSearchPath(prefix, path)
31 def set_common_dock_options(window):
32 if not hasattr(window, 'setDockOptions'):
33 return
34 nested = QtWidgets.QMainWindow.AllowNestedDocks
35 tabbed = QtWidgets.QMainWindow.AllowTabbedDocks
36 animated = QtWidgets.QMainWindow.AnimatedDocks
37 window.setDockOptions(nested | tabbed | animated)
40 def _map_rect_to_scene(self, rect):
41 """Only available in newer PyQt4 versions"""
42 return self.sceneTransform().mapRect(rect)
45 def wheel_translation(event):
46 """Return the Tx Ty translation delta for a pan"""
47 if PYQT4:
48 tx = event.delta()
49 ty = 0.0
50 if event.orientation() == Qt.Vertical:
51 (tx, ty) = (ty, tx)
52 else:
53 angle = event.angleDelta()
54 tx = angle.x()
55 ty = angle.y()
56 return (tx, ty)
59 def wheel_delta(event):
60 """Return a single wheel delta"""
61 if PYQT4:
62 delta = event.delta()
63 else:
64 angle = event.angleDelta()
65 x = angle.x()
66 y = angle.y()
67 if abs(x) > abs(y):
68 delta = x
69 else:
70 delta = y
71 return delta