1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 from PyQt4 import QtCore, QtGui
29
30 from camelot.view import art
31
33 """A control that displays a single text field in which search
34 keywords can be typed
35
36 emits a search and a cancel signal if the user starts or cancels
37 the search
38 """
39
41 QtGui.QWidget.__init__(self)
42 layout = QtGui.QHBoxLayout()
43 layout.setSpacing(0)
44 layout.setMargin(0)
45
46 self.search_button = QtGui.QToolButton()
47 self.search_button.setIcon(QtGui.QIcon(art.icon16('actions/system-search')))
48 self.search_button.setIconSize(QtCore.QSize(14, 14))
49 self.search_button.setAutoRaise(True)
50 self.connect(self.search_button, QtCore.SIGNAL('clicked()'), self.emit_search)
51
52 self.search_input = QtGui.QLineEdit()
53 self.connect(self.search_input, QtCore.SIGNAL('returnPressed()'), self.emit_search)
54
55 self.cancel_button = QtGui.QToolButton()
56 self.cancel_button.setIcon(QtGui.QIcon(art.icon16('actions/edit-clear')))
57 self.cancel_button.setIconSize(QtCore.QSize(14, 14))
58 self.cancel_button.setAutoRaise(True)
59 self.connect(self.cancel_button, QtCore.SIGNAL('clicked()'), self.emit_cancel)
60
61 layout.addWidget(self.search_button)
62 layout.addWidget(self.search_input)
63 layout.addWidget(self.cancel_button)
64 self.setLayout(layout)
65
66 - def search(self, search_text):
67 """Start searching for search_text"""
68 self.search_input.setText(search_text)
69 self.emit_search()
70
72 text = str(self.search_input.text())
73 self.emit(QtCore.SIGNAL('search'), text)
74
76 self.search_input.setText('')
77 self.emit(QtCore.SIGNAL('cancel'))
78