Merge pull request #65 from yjmade/master

fix some bugs when running on Mac with PyQT5
This commit is contained in:
darrenl 2017-03-09 13:07:45 +08:00 committed by GitHub
commit 634fc0c637
2 changed files with 22 additions and 12 deletions

View File

@ -204,7 +204,7 @@ class MainWindow(QMainWindow, WindowMixin):
'Ctrl+r', 'open', u'Change default saved Annotation dir') 'Ctrl+r', 'open', u'Change default saved Annotation dir')
openAnnotation = action('&Open Annotation', self.openAnnotation, openAnnotation = action('&Open Annotation', self.openAnnotation,
'Ctrl+q', 'openAnnotation', u'Open Annotation') 'Ctrl+Shift+O', 'openAnnotation', u'Open Annotation')
openNextImg = action('&Next Image', self.openNextImg, openNextImg = action('&Next Image', self.openNextImg,
'd', 'next', u'Open Next') 'd', 'next', u'Open Next')
@ -445,7 +445,7 @@ class MainWindow(QMainWindow, WindowMixin):
self.updateFileMenu() self.updateFileMenu()
# Since loading the file may take some time, make sure it runs in the # Since loading the file may take some time, make sure it runs in the
# background. # background.
self.queueEvent(partial(self.loadFile, self.filePath)) self.queueEvent(partial(self.loadFile, self.filePath or ""))
# Callbacks: # Callbacks:
self.zoomWidget.valueChanged.connect(self.paintCanvas) self.zoomWidget.valueChanged.connect(self.paintCanvas)
@ -1035,13 +1035,14 @@ class MainWindow(QMainWindow, WindowMixin):
return return
path = os.path.dirname(str(self.filePath))\ path = os.path.dirname(str(self.filePath))\
if self.filePath else '.' if self.filePath else '.'
formats = ['*.%s' % str(fmt).lower() formats = ['*.%s' % fmt.data().decode("ascii").lower() for fmt in QImageReader.supportedImageFormats()]
for fmt in QImageReader.supportedImageFormats()]
filters = "Image & Label files (%s)" % \ filters = "Image & Label files (%s)" % \
' '.join(formats + ['*%s' % LabelFile.suffix]) ' '.join(formats + ['*%s' % LabelFile.suffix])
filename = QFileDialog.getOpenFileName(self, filename = QFileDialog.getOpenFileName(self,
'%s - Choose Image or Label file' % __appname__, path, filters) '%s - Choose Image or Label file' % __appname__, path, filters)
if filename: if filename:
if isinstance(filename, (tuple,list)):
filename=filename[0]
self.loadFile(filename) self.loadFile(filename)
def saveFile(self, _value=False): def saveFile(self, _value=False):

View File

@ -523,16 +523,25 @@ class Canvas(QWidget):
return super(Canvas, self).minimumSizeHint() return super(Canvas, self).minimumSizeHint()
def wheelEvent(self, ev): def wheelEvent(self, ev):
if ev.orientation() == Qt.Vertical: qt_version = 4 if hasattr(ev, "delta") else 5
mods = ev.modifiers() if qt_version == 4:
if Qt.ControlModifier == int(mods): if ev.orientation() == Qt.Vertical:
self.zoomRequest.emit(ev.delta()) v_delta = ev.delta()
h_delta = 0
else: else:
self.scrollRequest.emit(ev.delta(), h_delta = ev.delta()
Qt.Horizontal if (Qt.ShiftModifier == int(mods)) v_delta = 0
else Qt.Vertical)
else: else:
self.scrollRequest.emit(ev.delta(), Qt.Horizontal) delta = ev.angleDelta()
h_delta = delta.x()
v_delta = delta.y()
mods = ev.modifiers()
if Qt.ControlModifier == int(mods) and v_delta:
self.zoomRequest.emit(v_delta)
else:
v_delta and self.scrollRequest.emit(v_delta, Qt.Vertical)
h_delta and self.scrollRequest.emit(h_delta, Qt.Horizontal)
ev.accept() ev.accept()
def keyPressEvent(self, ev): def keyPressEvent(self, ev):