|
1 | 1 | from pathlib import Path |
2 | 2 | from PySide6.QtCore import QCoreApplication, Qt |
3 | 3 | from PySide6.QtWidgets import ( |
4 | | - QGridLayout, QLabel, QSlider, QWidget, QPushButton |
| 4 | + QGridLayout, QLabel, QLineEdit, QSlider, QWidget, QPushButton |
5 | 5 | ) |
6 | 6 | from PySide6.QtGui import QFontMetrics, QPixmap |
7 | 7 | from hexrdgui import resource_loader |
8 | 8 |
|
9 | 9 | import hexrdgui.resources.icons |
10 | 10 | from hexrdgui.hexrd_config import HexrdConfig |
| 11 | +from hexrdgui.utils import block_signals |
11 | 12 |
|
12 | 13 |
|
13 | 14 | class ImageSeriesInfoToolbar(QWidget): |
@@ -77,14 +78,14 @@ def __init__(self, ims, parent=None): |
77 | 78 | self.setup_connections() |
78 | 79 |
|
79 | 80 | def setup_connections(self): |
80 | | - self.slider.valueChanged.connect(self.val_changed) |
81 | | - self.slider.valueChanged.connect(lambda i: self.frameValue.setText(str(i))) |
| 81 | + self.slider.valueChanged.connect(self.slider_changed) |
| 82 | + self.frameValue.textChanged.connect(self.frame_changed) |
82 | 83 | self.backFrame.clicked.connect(lambda: self.change_frame(-1)) |
83 | 84 | self.forwardFrame.clicked.connect(lambda: self.change_frame(1)) |
84 | 85 |
|
85 | 86 | def create_widget(self): |
86 | 87 | self.slider = QSlider(Qt.Horizontal, self.parent()) |
87 | | - self.frameValue = QLabel(self.parent()) |
| 88 | + self.frameValue = QLineEdit(self.parent()) |
88 | 89 | self.backFrame = QPushButton('<<') |
89 | 90 | self.backFrame.setFixedSize(35, 22) |
90 | 91 | self.forwardFrame = QPushButton('>>') |
@@ -173,11 +174,20 @@ def update_omega_label_text(self): |
173 | 174 |
|
174 | 175 | self.omega_label.setText(omega_label_text(*ome_range)) |
175 | 176 |
|
| 177 | + def slider_changed(self, value): |
| 178 | + with block_signals(self.frameValue): |
| 179 | + self.frameValue.setText(str(value)) |
| 180 | + self.val_changed(value) |
| 181 | + |
| 182 | + def frame_changed(self, value): |
| 183 | + with block_signals(self.slider): |
| 184 | + self.slider.setSliderPosition(int(value)) |
| 185 | + self.val_changed(int(value)) |
| 186 | + |
176 | 187 | def change_frame(self, value): |
177 | 188 | new_frame = int(self.frameValue.text()) + value |
178 | 189 | self.frameValue.setText(str(new_frame)) |
179 | 190 | self.slider.setSliderPosition(new_frame) |
180 | | - self.update_back_forward_buttons(new_frame) |
181 | 191 | self.val_changed(new_frame) |
182 | 192 |
|
183 | 193 | def update_back_forward_buttons(self, val): |
|
0 commit comments