16
16
# this program; if not, write to the Free Software Foundation, Inc.,
17
17
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
#~ from __future__ import with_statement
23
22
from gi.repository import Gtk, GObject
24
23
from gettext import gettext as _
27
25
from softwarecenter.enums import SortMethods
28
26
from softwarecenter.ui.gtk3.em import StockEms
29
27
from softwarecenter.ui.gtk3.models.appstore2 import AppTreeStore
30
28
from softwarecenter.ui.gtk3.widgets.apptreeview import AppTreeView
31
29
from softwarecenter.ui.gtk3.models.appstore2 import AppPropertiesHelper
32
#~ from softwarecenter.ui.gtk3.widgets.containers import FlowableGrid
30
from softwarecenter.utils import ExecutionTime
34
32
LOG=logging.getLogger(__name__)
257
255
py+self.tree_view.selected_row_renderer.icon_y_offset)
261
# ----------------------------------------------- testcode
262
from softwarecenter.enums import NonAppVisibility
264
def get_query_from_search_entry(search_term):
267
return xapian.Query("")
268
parser = xapian.QueryParser()
269
user_query = parser.parse_query(search_term)
272
def on_entry_changed(widget, data):
275
new_text = widget.get_text()
276
(view, enquirer) = data
278
with ExecutionTime("total time"):
279
with ExecutionTime("enquire.set_query()"):
280
enquirer.set_query(get_query_from_search_entry(new_text),
282
nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE)
284
store = view.tree_view.get_model()
285
with ExecutionTime("store.clear()"):
288
with ExecutionTime("store.set_from_matches()"):
289
store.set_from_matches(enquirer.matches)
291
with ExecutionTime("model settle (size=%s)" % len(store)):
292
while Gtk.events_pending():
297
GObject.source_remove(widget.stamp)
298
widget.stamp = GObject.timeout_add(250, _work)
260
300
def get_test_window():
301
import softwarecenter.log
302
softwarecenter.log.root.setLevel(level=logging.DEBUG)
303
softwarecenter.log.add_filters_from_string("performance")
304
fmt = logging.Formatter("%(name)s - %(message)s", None)
305
softwarecenter.log.handler.setFormatter(fmt)
261
307
from softwarecenter.testutils import (
262
get_test_db, get_test_pkg_info, get_test_gtk3_icon_cache,
263
get_test_enquirer_matches)
308
get_test_db, get_test_pkg_info, get_test_gtk3_icon_cache)
264
309
from softwarecenter.ui.gtk3.models.appstore2 import AppListStore
266
311
db = get_test_db()
267
312
cache = get_test_pkg_info()
268
313
icons = get_test_gtk3_icon_cache()
271
appview = AppView(db, cache, icons, show_ratings=True)
272
liststore = AppListStore(db, cache, icons)
273
appview.set_model(liststore)
275
# do a simple query and display that
276
appview.display_matches(get_test_enquirer_matches(db))
278
# and put it in the window
316
from softwarecenter.db.appfilter import AppFilter
317
filter = AppFilter(db, cache)
318
filter.set_supported_only(False)
319
filter.set_installed_only(True)
322
from softwarecenter.db.enquire import AppEnquire
323
enquirer = AppEnquire(cache, db)
324
store = AppListStore(db, cache, icons)
326
from softwarecenter.ui.gtk3.views.appview import AppView
327
view = AppView(db, cache, icons, show_ratings=True)
328
view.set_model(store)
332
entry.connect("changed", on_entry_changed, (view, enquirer))
335
box.pack_start(entry, False, True, 0)
336
box.pack_start(view, True, True, 0)
279
338
win = Gtk.Window()
281
win.set_data("appview", appview)
339
win.set_data("appview", view)
340
win.set_data("entry", entry)
283
341
win.connect("destroy", lambda x: Gtk.main_quit())
284
343
win.set_size_request(600, 400)