提交 2a2f4909 编写于 作者: K Kentaro Wada

Store scroll value

上级 1a14f36d
...@@ -635,6 +635,10 @@ class MainWindow(QtWidgets.QMainWindow): ...@@ -635,6 +635,10 @@ class MainWindow(QtWidgets.QMainWindow):
self.zoom_level = 100 self.zoom_level = 100
self.fit_window = False self.fit_window = False
self.zoom_values = {} # key=filename, value=zoom_value self.zoom_values = {} # key=filename, value=zoom_value
self.scroll_values = {
Qt.Horizontal: {},
Qt.Vertical: {},
} # key=filename, value=scroll_value
if filename is not None and osp.isdir(filename): if filename is not None and osp.isdir(filename):
self.importDirImages(filename, load=False) self.importDirImages(filename, load=False)
...@@ -1187,7 +1191,12 @@ class MainWindow(QtWidgets.QMainWindow): ...@@ -1187,7 +1191,12 @@ class MainWindow(QtWidgets.QMainWindow):
def scrollRequest(self, delta, orientation): def scrollRequest(self, delta, orientation):
units = - delta * 0.1 # natural scroll units = - delta * 0.1 # natural scroll
bar = self.scrollBars[orientation] bar = self.scrollBars[orientation]
bar.setValue(bar.value() + bar.singleStep() * units) value = bar.value() + bar.singleStep() * units
self.setScroll(orientation, value)
def setScroll(self, orientation, value):
self.scrollBars[orientation].setValue(value)
self.scroll_values[orientation][self.filename] = value
def setZoom(self, value): def setZoom(self, value):
self.actions.fitWidth.setChecked(False) self.actions.fitWidth.setChecked(False)
...@@ -1213,10 +1222,14 @@ class MainWindow(QtWidgets.QMainWindow): ...@@ -1213,10 +1222,14 @@ class MainWindow(QtWidgets.QMainWindow):
x_shift = round(pos.x() * canvas_scale_factor) - pos.x() x_shift = round(pos.x() * canvas_scale_factor) - pos.x()
y_shift = round(pos.y() * canvas_scale_factor) - pos.y() y_shift = round(pos.y() * canvas_scale_factor) - pos.y()
self.scrollBars[Qt.Horizontal].setValue( self.setScroll(
self.scrollBars[Qt.Horizontal].value() + x_shift) Qt.Horizontal,
self.scrollBars[Qt.Vertical].setValue( self.scrollBars[Qt.Horizontal].value() + x_shift,
self.scrollBars[Qt.Vertical].value() + y_shift) )
self.setScroll(
Qt.Vertical,
self.scrollBars[Qt.Vertical].value() + y_shift,
)
def setFitWindow(self, value=True): def setFitWindow(self, value=True):
if value: if value:
...@@ -1319,10 +1332,17 @@ class MainWindow(QtWidgets.QMainWindow): ...@@ -1319,10 +1332,17 @@ class MainWindow(QtWidgets.QMainWindow):
self.loadShapes(prev_shapes, replace=False) self.loadShapes(prev_shapes, replace=False)
self.setClean() self.setClean()
self.canvas.setEnabled(True) self.canvas.setEnabled(True)
# set zoom values
if self.filename in self.zoom_values: if self.filename in self.zoom_values:
self.setZoom(self.zoom_values[self.filename]) self.setZoom(self.zoom_values[self.filename])
else: else:
self.adjustScale(initial=True) self.adjustScale(initial=True)
# set scroll values
for orientation in self.scroll_values:
if self.filename in self.scroll_values[orientation]:
self.setScroll(
orientation, self.scroll_values[orientation][self.filename]
)
self.paintCanvas() self.paintCanvas()
self.addRecentFile(self.filename) self.addRecentFile(self.filename)
self.toggleActions(True) self.toggleActions(True)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册