~sdague/onehundredscopes/unity-lens-nx

« back to all changes in this revision

Viewing changes to ohscopes-lens

  • Committer: Sean Dague
  • Date: 2012-05-06 15:32:16 UTC
  • Revision ID: sean@dague.net-20120506153216-6eka0e491fkniiz2
added first drop of nx lens for unity

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /usr/bin/python
2
 
 
3
 
#    Copyright (c) 2011 David Calle <davidc@framli.eu>
4
 
 
5
 
#    This program is free software: you can redistribute it and/or modify
6
 
#    it under the terms of the GNU General Public License as published by
7
 
#    the Free Software Foundation, either version 3 of the License, or
8
 
#    (at your option) any later version.
9
 
 
10
 
#    This program is distributed in the hope that it will be useful,
11
 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 
#    GNU General Public License for more details.
14
 
 
15
 
#    You should have received a copy of the GNU General Public License
16
 
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
 
 
18
 
from gi.repository import GLib, GObject, Gio
19
 
from gi.repository import Dee
20
 
# FIXME: Some weird bug in Dee or PyGI makes Dee fail unless we probe
21
 
#        it *before* we import the Unity module... ?!
22
 
_m = dir(Dee.SequenceModel)
23
 
from gi.repository import Unity
24
 
 
25
 
# The Bus name of the lens, its id on dbus.
26
 
BUS_NAME = "net.launchpad.lens.ohscopes"
27
 
 
28
 
class Daemon:
29
 
 
30
 
        def __init__ (self):
31
 
                ### First, we need to define some constants
32
 
                # The dbus path for the Lens (it *must* match the one in our .lens file)
33
 
                self._lens = Unity.Lens.new ("/net/launchpad/lens/ohscopes", "ohscopes")
34
 
                # The search hint in the search bar
35
 
                self._lens.props.search_hint = "Search"
36
 
                # Is the lens visible in the lens bar?
37
 
                self._lens.props.visible = True;
38
 
                # Is the lens visible in the Home Dash?
39
 
                self._lens.props.search_in_global = True;
40
 
                
41
 
                ### Then, we populate the categories
42
 
                cats = []
43
 
                # A category is a display name, an icon and a renderer
44
 
                cats.append (Unity.Category.new ("VERTICAL_TILE",Gio.ThemedIcon.new("/home/david/Projets/Scopes/ohscopes/ohscopes-cat.svg"),Unity.CategoryRenderer.VERTICAL_TILE))
45
 
                cats.append (Unity.Category.new ("HORIZONTAL_TILE",Gio.ThemedIcon.new("/home/david/Projets/Scopes/ohscopes/ohscopes-cat.svg"),Unity.CategoryRenderer.HORIZONTAL_TILE))
46
 
                self._lens.props.categories = cats
47
 
                
48
 
                ### Populate filters
49
 
                filters = []
50
 
                # A filter is an id, a display name, an icon (not displayed, so it's usually "None"), and a contracted state
51
 
                f = Unity.RadioOptionFilter.new ("filter1", "RadioOption", None, False)
52
 
                # Then we add options to the filter : an id, a display name and an icon.
53
 
                f.add_option ("option 1", "Option 1", None)
54
 
                f.add_option ("option 2", "Option 2", None)
55
 
                f.add_option ("option 3", "option 3", None)
56
 
                filters.append (f)
57
 
                f2 = Unity.CheckOptionFilter.new ("filter2", "CheckOption", None, False)
58
 
                f2.add_option ("option 1", "option 1", None)
59
 
                f2.add_option ("option 2", "option 2", None)
60
 
                f2.add_option ("option 3", "option 3", None)
61
 
                filters.append (f2)
62
 
                f3 = Unity.CheckOptionFilterCompact.new ("filter3", "CheckOptionCompact", None, False)
63
 
                f3.add_option ("option 1", "option 1", None)
64
 
                f3.add_option ("option 2", "option 2", None)
65
 
                f3.add_option ("option 3", "option 3", None)
66
 
                filters.append (f3)
67
 
                f4 = Unity.MultiRangeFilter.new ("filter4", "MultiRange", None, False)
68
 
                f4.add_option ("option 1", "option 1", None)
69
 
                f4.add_option ("option 2", "option 2", None)
70
 
                f4.add_option ("option 3", "option 3", None)
71
 
                filters.append (f4)
72
 
                f5 = Unity.RatingsFilter.new ("filter5", "Ratings", None, False)
73
 
                filters.append (f5)
74
 
                self._lens.props.filters = filters
75
 
                
76
 
                # The lens in now ready
77
 
                self._lens.export ();
78
 
 
79
 
if __name__ == "__main__":
80
 
        session_bus_connection = Gio.bus_get_sync (Gio.BusType.SESSION, None)
81
 
        session_bus = Gio.DBusProxy.new_sync (session_bus_connection, 0, None,
82
 
                                              'org.freedesktop.DBus',
83
 
                                              '/org/freedesktop/DBus',
84
 
                                              'org.freedesktop.DBus', None)
85
 
        result = session_bus.call_sync('RequestName',
86
 
                                       GLib.Variant ("(su)", (BUS_NAME, 0x4)),
87
 
                                       0, -1, None)
88
 
                                       
89
 
        # Unpack variant response with signature "(u)". 1 means we got it.
90
 
        result = result.unpack()[0]
91
 
        
92
 
        if result != 1 :
93
 
                print >> sys.stderr, "Failed to own name %s. Bailing out." % BUS_NAME
94
 
                raise SystemExit (1)
95
 
        
96
 
        daemon = Daemon()
97
 
        GObject.MainLoop().run()