~elachuni/software-center/pep8-test-part11

« back to all changes in this revision

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

  • Committer: Gary Lasker
  • Date: 2012-03-08 17:32:27 UTC
  • mfrom: (2782.2.14 apptreeview-tweaks)
  • Revision ID: gary.lasker@canonical.com-20120308173227-yqyi623xiktze0l8
merged lp:~mvo/software-center/apptreeview-tweaks, many thanks mvo

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
18
18
 
19
 
#~ from __future__ import with_statement
20
19
 
21
20
import logging
22
21
 
23
22
from gi.repository import Gtk, GObject
24
23
from gettext import gettext as _
25
 
#~ import gettext
26
24
 
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
33
31
 
34
32
LOG=logging.getLogger(__name__)
35
33
 
191
189
        # ... also we dont currently support user sorting in the
192
190
        # installedview, so issue is somewhat moot for the time being...
193
191
        if isinstance(self.tree_view.appmodel, AppTreeStore):
 
192
            LOG.debug("display_matches called on AppTreeStore, ignoring")
194
193
            return
195
194
 
196
195
        sort_by_relevance = is_search and not self.user_defined_sort_method
197
 
 
198
196
        if sort_by_relevance:
199
197
            self._use_combobox_with_sort_by_search_ranking()
200
198
            self.set_sort_method_with_no_signal(self._SORT_BY_SEARCH_RANKING)
257
255
                py+self.tree_view.selected_row_renderer.icon_y_offset)
258
256
 
259
257
 
 
258
 
 
259
 
 
260
 
 
261
# ----------------------------------------------- testcode
 
262
from softwarecenter.enums import NonAppVisibility
 
263
 
 
264
def get_query_from_search_entry(search_term):
 
265
    import xapian
 
266
    if not search_term:
 
267
        return xapian.Query("")
 
268
    parser = xapian.QueryParser()
 
269
    user_query = parser.parse_query(search_term)
 
270
    return user_query
 
271
 
 
272
def on_entry_changed(widget, data):
 
273
 
 
274
    def _work():
 
275
        new_text = widget.get_text()
 
276
        (view, enquirer) = data
 
277
 
 
278
        with ExecutionTime("total time"):
 
279
            with ExecutionTime("enquire.set_query()"):
 
280
                enquirer.set_query(get_query_from_search_entry(new_text),
 
281
                                  limit=100*1000,
 
282
                                  nonapps_visible=NonAppVisibility.ALWAYS_VISIBLE)
 
283
 
 
284
            store = view.tree_view.get_model()
 
285
            with ExecutionTime("store.clear()"):
 
286
                store.clear()
 
287
 
 
288
            with ExecutionTime("store.set_from_matches()"):
 
289
                store.set_from_matches(enquirer.matches)
 
290
 
 
291
            with ExecutionTime("model settle (size=%s)" % len(store)):
 
292
                while Gtk.events_pending():
 
293
                    Gtk.main_iteration()
 
294
        return
 
295
 
 
296
    if widget.stamp: 
 
297
        GObject.source_remove(widget.stamp)
 
298
    widget.stamp = GObject.timeout_add(250, _work)
 
299
 
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)
 
306
 
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
265
310
 
266
311
    db = get_test_db()
267
312
    cache = get_test_pkg_info()
268
313
    icons = get_test_gtk3_icon_cache()
269
314
 
270
 
    # create the view
271
 
    appview = AppView(db, cache, icons, show_ratings=True)
272
 
    liststore = AppListStore(db, cache, icons)
273
 
    appview.set_model(liststore)
274
 
 
275
 
    # do a simple query and display that
276
 
    appview.display_matches(get_test_enquirer_matches(db))
277
 
 
278
 
    # and put it in the window
 
315
    # create a filter
 
316
    from softwarecenter.db.appfilter import AppFilter
 
317
    filter = AppFilter(db, cache)
 
318
    filter.set_supported_only(False)
 
319
    filter.set_installed_only(True)
 
320
 
 
321
    # appview
 
322
    from softwarecenter.db.enquire import AppEnquire
 
323
    enquirer = AppEnquire(cache, db)
 
324
    store = AppListStore(db, cache, icons)
 
325
 
 
326
    from softwarecenter.ui.gtk3.views.appview import AppView
 
327
    view = AppView(db, cache, icons, show_ratings=True)
 
328
    view.set_model(store)
 
329
 
 
330
    entry = Gtk.Entry()
 
331
    entry.stamp = 0
 
332
    entry.connect("changed", on_entry_changed, (view, enquirer))
 
333
 
 
334
    box = Gtk.VBox()
 
335
    box.pack_start(entry, False, True, 0)
 
336
    box.pack_start(view, True, True, 0)
 
337
 
279
338
    win = Gtk.Window()
280
 
    win.add(appview)
281
 
    win.set_data("appview", appview)
282
 
 
 
339
    win.set_data("appview", view)
 
340
    win.set_data("entry", entry)
283
341
    win.connect("destroy", lambda x: Gtk.main_quit())
 
342
    win.add(box)
284
343
    win.set_size_request(600, 400)
285
344
    win.show_all()
286
345
 
288
347
 
289
348
if __name__ == "__main__":
290
349
    win = get_test_window()
 
350
    win.get_data("entry").set_text("gtk3")
291
351
    Gtk.main()