1 import os
2 from PyQt4 import QtCore, QtGui
3
4 import envi.cli as e_cli
5 import envi.qt.memory as e_q_memory
6 import envi.qt.memcanvas as e_q_memcanvas
7
8 from envi.threads import firethread
9
10 import vqt.colors as vq_colors
11 import vqt.shortcut as vq_shortcut
12
13 from vqt.basics import *
14 from vqt.main import idlethread
15
16 -class VQCli(QtGui.QWidget):
17 '''
18 A Qt class to wrap and emulate a Cmd object.
19 '''
20
21 __canvas_class__ = e_q_memcanvas.VQMemoryCanvas
22
23 sigCliQuit = QtCore.pyqtSignal()
24
26 QtGui.QWidget.__init__(self, parent=parent)
27 self.cli = cli
28
29 self.input = QtGui.QLineEdit(self)
30
31
32 self.output = QtGui.QTextEdit(self)
33
34 if isinstance(cli, e_cli.EnviCli):
35 self.output.close()
36 self.output = self.__canvas_class__(cli.memobj, syms=cli.symobj, parent=self)
37 self.output.setScrolledCanvas(True)
38 cli.setCanvas(self.output)
39
40 self.setStyleSheet( vq_colors.getDefaultColors() )
41
42
43 vbox = VBox( self.output, self.input )
44 self.setLayout(vbox)
45
46 self.connect(self.input, QtCore.SIGNAL('returnPressed()'), self.returnPressedSlot)
47
48 vq_shortcut.addShortCut(self.input, QtCore.Qt.Key_Up, self.keyCodeUp)
49 vq_shortcut.addShortCut(self.input, QtCore.Qt.Key_Down, self.keyCodeDown)
50
51 self.history = []
52 self.histidx = 0
53
54 self.resize(250, 150)
55
62
66
67 @idlethread
72
73 - def useHistory(self, delta):
74
75 if delta < 0 and self.histidx == 0:
76 return
77
78 if delta > 0 and len(self.history) <= self.histidx+delta:
79 self.histidx = len(self.history)
80 self.input.clear()
81 return
82
83 self.histidx += delta
84 htext = self.history[self.histidx]
85 self.input.setText(htext)
86
87
88 - def addHistory(self, histcmd):
89 if histcmd:
90 self.history.append(histcmd)
91 self.histidx = len(self.history)
92
95
98
99 - def loadHistory(self, filename):
100 if os.path.isfile(filename):
101 hist = file(filename, 'r').readlines()[-1000:]
102 self.history = [ x.strip() for x in hist ]
103 self.histidx = len(self.history)
104
105 - def saveHistory(self, filename):
106
107
108 histbuf = '\n'.join( self.history[-1000:] )
109 file(filename, 'w').write( histbuf )
110