Source code for zoom_dialog
from schrodinger.infra import canvas2d
from schrodinger.Qt.QtWidgets import QDialog
from schrodinger.Qt.QtWidgets import QDialogButtonBox
from schrodinger.utils import imputils
zoom_dialog_ui = imputils.import_script('zoom_dialog_ui.py',
subdir='event_analysis_dir')
class EventAnalysisZoomDialog(QDialog):
def __init__(self):
QDialog.__init__(self)
self.ui = zoom_dialog_ui.Ui_EAZoomDialog()
self.ui.setupUi(self)
self.slider = canvas2d.ChmDoubleSlider(self)
self.ui.horizontalLayout.insertWidget(1, self.slider)
self.slider.setRange(0.0, 100.0)
self.zoom_range = [0, 100.0, 0, 100.0, 0.1]
self.applyButton = self.ui.buttonBox.button(QDialogButtonBox.Apply)
self.applyButton.clicked.connect(self.accept)
self.ui.startSB.valueChanged.connect(self.slider.leftPos)
self.ui.endSB.valueChanged.connect(self.slider.rightPos)
self.ui.startSB.valueChanged.connect(self.change_limits_end)
self.ui.endSB.valueChanged.connect(self.change_limits_start)
#self.ui.startSB.valueChanged.connect(self.sliders_moved)
#self.ui.endSB.valueChanged.connect(self.sliders_moved)
self.slider.valuesChanged.connect(self.sliders_moved)
def set_zoom_limits(self, min_f, max_f, dt):
self.slider.setRange(min_f, max_f)
self.zoom_range = [min_f, max_f, min_f, max_f, dt]
self.sliders_moved()
self.update()
def set_zoom_range(self, v):
# set values to widgets
self.slider.leftPos(v[2])
self.slider.rightPos(v[3])
self.sliders_moved()
def get_zoom_range(self):
# read values from widgets and set in self.zoom_range
self.zoom_range[2] = self.ui.startSB.value()
self.zoom_range[3] = self.ui.endSB.value()
def accept(self):
self.get_zoom_range()
self.setResult(QDialog.Accepted)
self.hide()
def reject(self):
self.set_zoom_range(self.zoom_range)
self.setResult(QDialog.Rejected)
self.hide()
def sliders_moved(self):
lpos = self.slider.leftPos()
rpos = self.slider.rightPos()
self.ui.startSB.setRange(self.zoom_range[0], rpos)
self.ui.startSB.setValue(lpos)
self.ui.endSB.setRange(lpos, self.zoom_range[1])
self.ui.endSB.setValue(rpos)
self.update_range_label()
def change_limits_end(self):
lpos = self.slider.leftPos()
self.ui.endSB.setRange(lpos, self.zoom_range[1])
self.update_range_label()
def change_limits_start(self):
rpos = self.slider.rightPos()
self.ui.startSB.setRange(self.zoom_range[0], rpos)
self.update_range_label()
def update_range_label(self):
minT = self.ui.startSB.value() * self.zoom_range[4]
maxT = self.ui.endSB.value() * self.zoom_range[4]
txt = "%.2f - %.2f nsec" % (minT, maxT)
self.ui.label.setText(txt)
def getRangeLabel(self):
"""
This function returns text string showing trajectory
range in nsec.
:return: range string
:rtype: str
"""
return self.ui.label.text()