browse: display errors when saving blobs
[git-cola.git] / cola / qtcompat.py
blobbbc9b430e8740365f385154002a2a7accba0dc0f
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
7 try:
8 from qtpy import PYQT4
9 except ImportError:
10 PYQT4 = False
12 from . import hotkeys
15 def patch(obj, attr, value):
16 if not hasattr(obj, attr):
17 setattr(obj, attr, value)
20 def install():
21 patch(QtWidgets.QGraphicsItem, 'mapRectToScene', _map_rect_to_scene)
22 patch(QtGui.QKeySequence, 'Preferences', hotkeys.PREFERENCES)
25 def add_search_path(prefix, path):
26 if hasattr(QtCore.QDir, 'addSearchPath'):
27 QtCore.QDir.addSearchPath(prefix, path)
30 def set_common_dock_options(window):
31 if not hasattr(window, 'setDockOptions'):
32 return
33 nested = QtWidgets.QMainWindow.AllowNestedDocks
34 tabbed = QtWidgets.QMainWindow.AllowTabbedDocks
35 animated = QtWidgets.QMainWindow.AnimatedDocks
36 window.setDockOptions(nested | tabbed | animated)
39 def _map_rect_to_scene(self, rect):
40 """Only available in newer PyQt4 versions"""
41 return self.sceneTransform().mapRect(rect)
44 def wheel_translation(event):
45 """Return the Tx Ty translation delta for a pan"""
46 if PYQT4:
47 tx = event.delta()
48 ty = 0.0
49 if event.orientation() == Qt.Vertical:
50 (tx, ty) = (ty, tx)
51 else:
52 angle = event.angleDelta()
53 tx = angle.x()
54 ty = angle.y()
55 return (tx, ty)
58 def wheel_delta(event):
59 """Return a single wheel delta"""
60 if PYQT4:
61 delta = event.delta()
62 else:
63 angle = event.angleDelta()
64 x = angle.x()
65 y = angle.y()
66 if abs(x) > abs(y):
67 delta = x
68 else:
69 delta = y
70 return delta