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.art import Icon
31 from camelot.core.utils import ugettext as _
32
34 """A control that displays a single text field in which search keywords can
35 be typed
36
37 emits a search and a cancel signal if the user starts or cancels the search
38 """
39
40 expand_search_options_signal = QtCore.SIGNAL('expand_search_options()')
41
43 QtGui.QWidget.__init__(self, parent)
44 layout = QtGui.QHBoxLayout()
45 layout.setSpacing(0)
46 layout.setMargin(3)
47
48
49 self.search_button = QtGui.QToolButton()
50 icon = Icon('tango/16x16/actions/system-search.png').getQIcon()
51 self.search_button.setIcon(icon)
52 self.search_button.setIconSize(QtCore.QSize(14, 14))
53 self.search_button.setAutoRaise(True)
54 self.search_button.setToolTip(_('Expand or collapse search options'))
55 self.connect(self.search_button,
56 QtCore.SIGNAL('clicked()'),
57 self.expand_search_options_signal)
58
59
60 from camelot.view.controls.decorated_line_edit import DecoratedLineEdit
61 self.search_input = DecoratedLineEdit(self)
62 self.search_input.set_background_text(_('Search...'))
63 self.search_input.setToolTip(_('type words to search for'))
64
65 self.connect(self.search_input,
66 QtCore.SIGNAL('returnPressed()'),
67 self.emit_search)
68 self.connect(self.search_input,
69 QtCore.SIGNAL('textEdited(const QString&)'),
70 self.emit_search)
71 self.setFocusProxy( self.search_input )
72
73
74 self.cancel_button = QtGui.QToolButton()
75 icon = Icon('tango/16x16/actions/edit-clear.png').getQIcon()
76 self.cancel_button.setIcon(icon)
77 self.cancel_button.setIconSize(QtCore.QSize(14, 14))
78 self.cancel_button.setAutoRaise(True)
79 self.connect(self.cancel_button,
80 QtCore.SIGNAL('clicked()'),
81 self.emit_cancel)
82
83
84 layout.addWidget(self.search_button)
85 layout.addWidget(self.search_input)
86 layout.addWidget(self.cancel_button)
87 self.setLayout(layout)
88
89 - def search(self, search_text):
90 """Start searching for search_text"""
91 self.search_input.setText(search_text)
92 self.emit_search()
93
96
98 text = unicode(self.search_input.user_input())
99 self.emit(QtCore.SIGNAL('search'), text)
100
102 self.search_input.setText('')
103 self.emit(QtCore.SIGNAL('cancel'))
104