def time_jump_dialog(
parent,
value=0,
relative_label='Time:',
absolute_label='Time:',
relative_checked=True,
show_radio=True):
class TimeJumpDialog(QtWidgets.QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self._label = QtWidgets.QLabel('', self)
self._time_edit = bubblesub.ui.util.TimeEdit(self)
self._radio_rel = QtWidgets.QRadioButton('Relative', self)
self._radio_abs = QtWidgets.QRadioButton('Absolute', self)
if relative_checked:
self._radio_rel.setChecked(True)
else:
self._radio_abs.setChecked(True)
strip = QtWidgets.QDialogButtonBox(self)
strip.addButton(strip.Ok)
strip.addButton(strip.Cancel)
if not show_radio:
self._radio_abs.setHidden(True)
self._radio_rel.setHidden(True)
strip.accepted.connect(self.accept)
strip.rejected.connect(self.reject)
self._radio_rel.clicked.connect(self._on_radio_click)
self._radio_abs.clicked.connect(self._on_radio_click)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self._label)
layout.addWidget(self._time_edit)
layout.addWidget(self._radio_rel)
layout.addWidget(self._radio_abs)
layout.addWidget(strip)
self._on_radio_click()
self._time_edit.set_value(value)
def _on_radio_click(self):
is_relative = self._radio_rel.isChecked()
if is_relative:
self._label.setText(relative_label)
else:
self._label.setText(absolute_label)
self._time_edit.set_allow_negative(is_relative)
def value(self):
return (
self._time_edit.get_value(),
self._radio_rel.isChecked())
dialog = TimeJumpDialog(parent)
if dialog.exec_():
return dialog.value()
return None
评论列表
文章目录