Skip to content

Commit

Permalink
Replace frame spinner with forward/back buttons
Browse files Browse the repository at this point in the history
Signed-off-by: Brianna Major <[email protected]>
  • Loading branch information
Brianna Major committed Jan 3, 2025
1 parent 9c28ecc commit ac00f50
Showing 1 changed file with 29 additions and 12 deletions.
41 changes: 29 additions & 12 deletions hexrdgui/image_series_toolbar.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from pathlib import Path
from PySide6.QtCore import QCoreApplication, Qt
from PySide6.QtWidgets import QGridLayout, QLabel, QSlider, QSpinBox, QWidget
from PySide6.QtWidgets import (
QGridLayout, QLabel, QSlider, QWidget, QPushButton
)
from PySide6.QtGui import QFontMetrics, QPixmap
from hexrdgui import resource_loader

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

self.ims = ims
self.slider = None
self.frame = None
self.frameValue = None
self.backFrame = None
self.forwardFrame = None
self.layout = None
self.widget = None

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

def setup_connections(self):
self.slider.valueChanged.connect(self.val_changed)
self.slider.valueChanged.connect(self.frame.setValue)
self.frame.valueChanged.connect(
self.slider.setSliderPosition)
self.slider.valueChanged.connect(lambda i: self.frameValue.setText(str(i)))
self.backFrame.clicked.connect(lambda: self.change_frame(-1))
self.forwardFrame.clicked.connect(lambda: self.change_frame(1))

def create_widget(self):
self.slider = QSlider(Qt.Horizontal, self.parent())
self.frame = QSpinBox(self.parent())
self.frame.setKeyboardTracking(False)
self.frameValue = QLabel(self.parent())
self.backFrame = QPushButton('<<')
self.forwardFrame = QPushButton('>>')

self.widget = QWidget(self.parent())
self.omega_label = QLabel(self.parent())
Expand All @@ -95,10 +100,15 @@ def create_widget(self):
example_label_text = omega_label_text(359.999, 359.999)
text_width = metrics.boundingRect(example_label_text).width()
self.omega_label.setFixedWidth(text_width)
frame_text_width = metrics.boundingRect('9999').width()
self.frameValue.setFixedWidth(frame_text_width)
self.frameValue.setAlignment(Qt.AlignCenter)

self.layout = QGridLayout(self.widget)
self.layout.addWidget(self.slider, 0, 0, 1, 9)
self.layout.addWidget(self.frame, 0, 9, 1, 1)
self.layout.addWidget(self.slider, 0, 0, 1, 7)
self.layout.addWidget(self.backFrame, 0, 7, 1, 1)
self.layout.addWidget(self.frameValue, 0, 8, 1, 1)
self.layout.addWidget(self.forwardFrame, 0, 9, 1, 1)
self.layout.addWidget(self.omega_label, 0, 10, 1, 1)

self.widget.setLayout(self.layout)
Expand All @@ -119,11 +129,10 @@ def set_range(self, current_tab=False):
self.slider.setMinimumWidth(self.parent().width()//2)
if not size == self.slider.maximum():
self.slider.setMaximum(size)
self.frame.setMaximum(size)
self.frame.setToolTip(f'Max: {size}')
self.slider.setToolTip(f'Max: {size}')
self.slider.setValue(0)
self.frame.setValue(self.slider.value())
self.frameValue.setText(str(self.slider.value()))
self.backFrame.setEnabled(False)
else:
self.show = False
self.widget.setVisible(self.show)
Expand Down Expand Up @@ -161,6 +170,14 @@ def update_omega_label_text(self):

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

def change_frame(self, value):
new_frame = int(self.frameValue.text()) + value
self.frameValue.setText(str(new_frame))
self.slider.setSliderPosition(new_frame)
self.backFrame.setEnabled(self.slider.minimum() != new_frame)
self.forwardFrame.setEnabled(self.slider.maximum() != new_frame)
self.val_changed(new_frame)


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

0 comments on commit ac00f50

Please sign in to comment.