61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
from pyqtgraph.Qt import QtCore, QtGui
|
|
|
|
class CmdInput(QtGui.QLineEdit):
|
|
|
|
sigExecuteCmd = QtCore.Signal(object)
|
|
|
|
def __init__(self, parent):
|
|
QtGui.QLineEdit.__init__(self, parent)
|
|
self.history = [""]
|
|
self.ptr = 0
|
|
#self.lastCmd = None
|
|
#self.setMultiline(False)
|
|
|
|
def keyPressEvent(self, ev):
|
|
#print "press:", ev.key(), QtCore.Qt.Key_Up, QtCore.Qt.Key_Down, QtCore.Qt.Key_Enter
|
|
if ev.key() == QtCore.Qt.Key_Up and self.ptr < len(self.history) - 1:
|
|
self.setHistory(self.ptr+1)
|
|
ev.accept()
|
|
return
|
|
elif ev.key() == QtCore.Qt.Key_Down and self.ptr > 0:
|
|
self.setHistory(self.ptr-1)
|
|
ev.accept()
|
|
return
|
|
elif ev.key() == QtCore.Qt.Key_Return:
|
|
self.execCmd()
|
|
else:
|
|
QtGui.QLineEdit.keyPressEvent(self, ev)
|
|
self.history[0] = asUnicode(self.text())
|
|
|
|
def execCmd(self):
|
|
cmd = asUnicode(self.text())
|
|
if len(self.history) == 1 or cmd != self.history[1]:
|
|
self.history.insert(1, cmd)
|
|
#self.lastCmd = cmd
|
|
self.history[0] = ""
|
|
self.setHistory(0)
|
|
self.sigExecuteCmd.emit(cmd)
|
|
|
|
def setHistory(self, num):
|
|
self.ptr = num
|
|
self.setText(self.history[self.ptr])
|
|
|
|
#def setMultiline(self, m):
|
|
#height = QtGui.QFontMetrics(self.font()).lineSpacing()
|
|
#if m:
|
|
#self.setFixedHeight(height*5)
|
|
#else:
|
|
#self.setFixedHeight(height+15)
|
|
#self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
|
#self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
|
|
|
|
|
#def sizeHint(self):
|
|
#hint = QtGui.QPlainTextEdit.sizeHint(self)
|
|
#height = QtGui.QFontMetrics(self.font()).lineSpacing()
|
|
#hint.setHeight(height)
|
|
#return hint
|
|
|
|
|
|
|
|
|