forked from M-Labs/artiq
moninj: add _DoubleClickLineEdit
This commit is contained in:
parent
c4e775aa49
commit
15e1aef38b
|
@ -27,6 +27,42 @@ class _CancellableLineEdit(QtWidgets.QLineEdit):
|
|||
QtWidgets.QLineEdit.keyPressEvent(self, event)
|
||||
|
||||
|
||||
# Cancellable and editable with double click.
|
||||
# This class should not be used for programmatically changing text.
|
||||
class _DoubleClickLineEdit(QtWidgets.QLineEdit):
|
||||
finished = QtCore.pyqtSignal()
|
||||
|
||||
def __init__(self, init):
|
||||
QtWidgets.QLineEdit.__init__(self, init)
|
||||
self.setFrame(False)
|
||||
self.setReadOnly(True)
|
||||
self.returnPressed.connect(self._return_pressed)
|
||||
self.editingFinished.connect(self._editing_finished)
|
||||
self._text = init
|
||||
|
||||
def mouseDoubleClickEvent(self, event):
|
||||
if self.isReadOnly():
|
||||
self.setReadOnly(False)
|
||||
self.setFrame(True)
|
||||
QtWidgets.QLineEdit.mouseDoubleClickEvent(self, event)
|
||||
|
||||
def _return_pressed(self):
|
||||
self._text = self.text()
|
||||
|
||||
def _editing_finished(self):
|
||||
self.setReadOnly(True)
|
||||
self.setFrame(False)
|
||||
self.setText(self._text)
|
||||
self.finished.emit()
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
key = event.key()
|
||||
if key == QtCore.Qt.Key_Escape and not self.isReadOnly():
|
||||
self.editingFinished.emit()
|
||||
else:
|
||||
QtWidgets.QLineEdit.keyPressEvent(self, event)
|
||||
|
||||
|
||||
class _TTLWidget(QtWidgets.QFrame):
|
||||
override_toggled = QtCore.pyqtSignal(bool)
|
||||
level_toggled = QtCore.pyqtSignal(bool)
|
||||
|
@ -853,6 +889,7 @@ class _MonInjDock(QDockWidgetCloseDetect):
|
|||
self.name = name
|
||||
self.manager = manager
|
||||
grid = LayoutWidget()
|
||||
self.setWidget(grid)
|
||||
self._channel_dialog = _AddChannelDialog(self, self.manager.channel_model)
|
||||
|
||||
self._channel_dialog.accepted.connect(self.add_channels)
|
||||
|
@ -863,13 +900,17 @@ class _MonInjDock(QDockWidgetCloseDetect):
|
|||
QtWidgets.QStyle.SP_FileDialogListView))
|
||||
add_channel_btn.clicked.connect(self._channel_dialog.open)
|
||||
grid.addWidget(add_channel_btn, 0, 0)
|
||||
|
||||
newdock = QtWidgets.QToolButton()
|
||||
newdock.setToolTip("Create new moninj dock")
|
||||
newdock.setIcon(QtWidgets.QApplication.style().standardIcon(
|
||||
QtWidgets.QStyle.SP_FileDialogNewFolder))
|
||||
newdock.clicked.connect(lambda: manager.create_new_dock())
|
||||
grid.addWidget(newdock, 0, 1)
|
||||
self.setWidget(grid)
|
||||
|
||||
display_name_edit = _DoubleClickLineEdit(name)
|
||||
grid.addWidget(display_name_edit, 0, 1)
|
||||
|
||||
scroll_area = QtWidgets.QScrollArea()
|
||||
grid.addWidget(scroll_area, 1, 0, 1, 10)
|
||||
self.flow = FlowLayout()
|
||||
|
|
Loading…
Reference in New Issue