~nataliabidart/software-center/winged-migration

« back to all changes in this revision

Viewing changes to softwarecenter/ui/gtk3/views/appview.py

  • Committer: Natalia B. Bidart
  • Date: 2012-05-30 18:39:55 UTC
  • mto: This revision was merged to the branch mainline in revision 3030.
  • Revision ID: natalia.bidart@canonical.com-20120530183955-zbnjczayktmmg5tv
- Initial test cleanup:
  - Renamed test/ dir to tests/.
  - Isolated test code into tests/ directory, including moving all the
    get_test_window_foo from the gtk3 production modules to
    tests/gtk3/windows.py module.
  - Removed all the calls to Gtk.main() in gtk3 tests since that blocks the
    execution of the suite.
  - Pep8 and pyflakes fixes in the files already modified in this branch.
  - Minor bug fix in the softwarecenter/log.py module when trying to create a
    log dir with proper perms.

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
from softwarecenter.ui.gtk3.models.appstore2 import AppTreeStore
28
28
from softwarecenter.ui.gtk3.widgets.apptreeview import AppTreeView
29
29
from softwarecenter.ui.gtk3.models.appstore2 import AppPropertiesHelper
30
 
from softwarecenter.utils import ExecutionTime
31
30
 
32
31
LOG = logging.getLogger(__name__)
33
32
 
282
281
                    py + self.tree_view.selected_row_renderer.icon_y_offset)
283
282
        else:
284
283
            return (px, py)
285
 
 
286
 
 
287
 
# ----------------------------------------------- testcode
288
 
from softwarecenter.enums import NonAppVisibility
289
 
 
290
 
 
291
 
def get_query_from_search_entry(search_term):
292
 
    import xapian
293
 
    if not search_term:
294
 
        return xapian.Query("")
295
 
    parser = xapian.QueryParser()
296
 
    user_query = parser.parse_query(search_term)
297
 
    return user_query
298
 
 
299
 
 
300
 
def on_entry_changed(widget, data):
301
 
 
302
 
    def _work():
303
 
        new_text = widget.get_text()
304
 
        (view, enquirer) = data
305
 
 
306
 
        with ExecutionTime("total time"):
307
 
            with ExecutionTime("enquire.set_query()"):
308
 
                enquirer.set_query(get_query_from_search_entry(new_text),
309
 
                    limit=100 * 1000,
310
 
                    nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE)
311
 
 
312
 
            store = view.tree_view.get_model()
313
 
            with ExecutionTime("store.clear()"):
314
 
                store.clear()
315
 
 
316
 
            with ExecutionTime("store.set_from_matches()"):
317
 
                store.set_from_matches(enquirer.matches)
318
 
 
319
 
            with ExecutionTime("model settle (size=%s)" % len(store)):
320
 
                while Gtk.events_pending():
321
 
                    Gtk.main_iteration()
322
 
        return
323
 
 
324
 
    if widget.stamp:
325
 
        GObject.source_remove(widget.stamp)
326
 
    widget.stamp = GObject.timeout_add(250, _work)
327
 
 
328
 
 
329
 
def get_test_window():
330
 
    import softwarecenter.log
331
 
    softwarecenter.log.root.setLevel(level=logging.DEBUG)
332
 
    softwarecenter.log.add_filters_from_string("performance")
333
 
    fmt = logging.Formatter("%(name)s - %(message)s", None)
334
 
    softwarecenter.log.handler.setFormatter(fmt)
335
 
 
336
 
    from softwarecenter.testutils import (
337
 
        get_test_db, get_test_pkg_info, get_test_gtk3_icon_cache)
338
 
    from softwarecenter.ui.gtk3.models.appstore2 import AppListStore
339
 
 
340
 
    db = get_test_db()
341
 
    cache = get_test_pkg_info()
342
 
    icons = get_test_gtk3_icon_cache()
343
 
 
344
 
    # create a filter
345
 
    from softwarecenter.db.appfilter import AppFilter
346
 
    filter = AppFilter(db, cache)
347
 
    filter.set_supported_only(False)
348
 
    filter.set_installed_only(True)
349
 
 
350
 
    # appview
351
 
    from softwarecenter.db.enquire import AppEnquire
352
 
    enquirer = AppEnquire(cache, db)
353
 
    store = AppListStore(db, cache, icons)
354
 
 
355
 
    from softwarecenter.ui.gtk3.views.appview import AppView
356
 
    view = AppView(db, cache, icons, show_ratings=True)
357
 
    view.set_model(store)
358
 
 
359
 
    entry = Gtk.Entry()
360
 
    entry.stamp = 0
361
 
    entry.connect("changed", on_entry_changed, (view, enquirer))
362
 
 
363
 
    box = Gtk.VBox()
364
 
    box.pack_start(entry, False, True, 0)
365
 
    box.pack_start(view, True, True, 0)
366
 
 
367
 
    win = Gtk.Window()
368
 
    win.set_data("appview", view)
369
 
    win.set_data("entry", entry)
370
 
    win.connect("destroy", lambda x: Gtk.main_quit())
371
 
    win.add(box)
372
 
    win.set_size_request(600, 400)
373
 
    win.show_all()
374
 
 
375
 
    return win
376
 
 
377
 
if __name__ == "__main__":
378
 
    win = get_test_window()
379
 
    win.get_data("entry").set_text("gtk3")
380
 
    Gtk.main()