Skip to content

Commit 9b17b7b

Browse files
author
Brianna Major
committed
Replace frame spinner with forward/back buttons
Signed-off-by: Brianna Major <[email protected]>
1 parent 5c796ba commit 9b17b7b

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

hexrdgui/image_series_toolbar.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from pathlib import Path
22
from PySide6.QtCore import QCoreApplication, Qt
3-
from PySide6.QtWidgets import QGridLayout, QLabel, QSlider, QSpinBox, QWidget
3+
from PySide6.QtWidgets import (
4+
QGridLayout, QLabel, QSlider, QWidget, QPushButton
5+
)
46
from PySide6.QtGui import QFontMetrics, QPixmap
57
from hexrdgui import resource_loader
68

@@ -61,7 +63,9 @@ def __init__(self, ims, parent=None):
6163

6264
self.ims = ims
6365
self.slider = None
64-
self.frame = None
66+
self.frameValue = None
67+
self.backFrame = None
68+
self.forwardFrame = None
6569
self.layout = None
6670
self.widget = None
6771

@@ -74,14 +78,15 @@ def __init__(self, ims, parent=None):
7478

7579
def setup_connections(self):
7680
self.slider.valueChanged.connect(self.val_changed)
77-
self.slider.valueChanged.connect(self.frame.setValue)
78-
self.frame.valueChanged.connect(
79-
self.slider.setSliderPosition)
81+
self.slider.valueChanged.connect(lambda i: self.frameValue.setText(str(i)))
82+
self.backFrame.clicked.connect(lambda: self.change_frame(-1))
83+
self.forwardFrame.clicked.connect(lambda: self.change_frame(1))
8084

8185
def create_widget(self):
8286
self.slider = QSlider(Qt.Horizontal, self.parent())
83-
self.frame = QSpinBox(self.parent())
84-
self.frame.setKeyboardTracking(False)
87+
self.frameValue = QLabel(self.parent())
88+
self.backFrame = QPushButton('<<')
89+
self.forwardFrame = QPushButton('>>')
8590

8691
self.widget = QWidget(self.parent())
8792
self.omega_label = QLabel(self.parent())
@@ -95,10 +100,15 @@ def create_widget(self):
95100
example_label_text = omega_label_text(359.999, 359.999)
96101
text_width = metrics.boundingRect(example_label_text).width()
97102
self.omega_label.setFixedWidth(text_width)
103+
frame_text_width = metrics.boundingRect('9999').width()
104+
self.frameValue.setFixedWidth(frame_text_width)
105+
self.frameValue.setAlignment(Qt.AlignCenter)
98106

99107
self.layout = QGridLayout(self.widget)
100-
self.layout.addWidget(self.slider, 0, 0, 1, 9)
101-
self.layout.addWidget(self.frame, 0, 9, 1, 1)
108+
self.layout.addWidget(self.slider, 0, 0, 1, 7)
109+
self.layout.addWidget(self.backFrame, 0, 7, 1, 1)
110+
self.layout.addWidget(self.frameValue, 0, 8, 1, 1)
111+
self.layout.addWidget(self.forwardFrame, 0, 9, 1, 1)
102112
self.layout.addWidget(self.omega_label, 0, 10, 1, 1)
103113

104114
self.widget.setLayout(self.layout)
@@ -119,11 +129,10 @@ def set_range(self, current_tab=False):
119129
self.slider.setMinimumWidth(self.parent().width()//2)
120130
if not size == self.slider.maximum():
121131
self.slider.setMaximum(size)
122-
self.frame.setMaximum(size)
123-
self.frame.setToolTip(f'Max: {size}')
124132
self.slider.setToolTip(f'Max: {size}')
125133
self.slider.setValue(0)
126-
self.frame.setValue(self.slider.value())
134+
self.frameValue.setText(str(self.slider.value()))
135+
self.backFrame.setEnabled(False)
127136
else:
128137
self.show = False
129138
self.widget.setVisible(self.show)
@@ -161,6 +170,14 @@ def update_omega_label_text(self):
161170

162171
self.omega_label.setText(omega_label_text(*ome_range))
163172

173+
def change_frame(self, value):
174+
new_frame = int(self.frameValue.text()) + value
175+
self.frameValue.setText(str(new_frame))
176+
self.slider.setSliderPosition(new_frame)
177+
self.backFrame.setEnabled(self.slider.minimum() != new_frame)
178+
self.forwardFrame.setEnabled(self.slider.maximum() != new_frame)
179+
self.val_changed(new_frame)
180+
164181

165182
def omega_label_text(ome_min, ome_max):
166183
# We will display 6 digits at most, because omegas go up to 360

0 commit comments

Comments
 (0)