add copyrights information
[appstream:software-center.git] / appcenter / view / cat_and_app.py
1 # Copyright (C) 2009 Canonical
2 #
3 # Authors:
4 #  Michael Vogt
5 #
6 # This program is free software; you can redistribute it and/or modify it under
7 # the terms of the GNU General Public License as published by the Free Software
8 # Foundation; either version 2 of the License, or (at your option) any later
9 # version.
10 #
11 # This program is distributed in the hope that it will be useful, but WITHOUT
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 # FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
14 # details.
15 #
16 # You should have received a copy of the GNU General Public License along with
17 # this program; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
20 import gtk
21 import logging
22 import os
23 import xapian
24
25 from appview import *
26 from catview import *
27
28 def category_activated(iconview, path, app_view, label):
29     (name, pixbuf, query) = iconview.get_model()[path]
30     new_model = AppStore(iconview.xapiandb, 
31                          iconview.icons, 
32                          query, 
33                          limit=0,
34                          sort=True)
35     app_view.set_model(new_model)
36     label.set_text("%s items" % len(new_model))
37
38 if __name__ == "__main__":
39
40     logging.basicConfig(level=logging.DEBUG)
41
42     datadir = "/usr/share/app-install"
43
44     xapian_base_path = "/var/cache/app-install"
45     pathname = os.path.join(xapian_base_path, "xapian")
46     db = xapian.Database(pathname)
47
48     # additional icons come from app-install-data
49     icons = gtk.icon_theme_get_default()
50     icons.append_search_path("/usr/share/app-install/icons/")
51
52     # now the categories
53     cat_view = CategoriesView(datadir, db, icons)
54     scroll_cat = gtk.ScrolledWindow()
55     scroll_cat.add(cat_view)
56     
57     # and the apps
58     app_store = AppStore(db, icons)
59     app_view = AppView(app_store)
60     scroll_app = gtk.ScrolledWindow()
61     scroll_app.add(app_view)
62
63     # status label
64     label = gtk.Label()
65     label.set_text("%s items" % len(app_store))
66
67     # and a status label
68     
69     # pack and show
70     box = gtk.VBox()
71     box.pack_start(scroll_cat)
72     box.pack_start(scroll_app)
73     box.pack_start(label, expand=False)
74
75     # setup signals
76     cat_view.connect("item-activated", category_activated, app_view, label)
77
78     win = gtk.Window()
79     win.add(box)
80     win.set_size_request(600,400)
81     win.show_all()
82
83     gtk.main()