/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to seahorse.py

Add options to viz treeview to not show the line graph, and to only show the main line.
Set the revision browser to use these options.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# This program is free software; you can redistribute it and/or modify
2
 
# it under the terms of the GNU General Public License as published by
3
 
# the Free Software Foundation; either version 2 of the License, or
4
 
# (at your option) any later version.
5
 
 
6
 
# This program is distributed in the hope that it will be useful,
7
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
8
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9
 
# GNU General Public License for more details.
10
 
 
11
 
# You should have received a copy of the GNU General Public License
12
 
# along with this program; if not, write to the Free Software
13
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
14
 
 
15
 
__copyright__ = 'Copyright (C) 2008 Daniel Schierbeck'
16
 
__author__ = 'Daniel Schierbeck <daniel.schierbeck@gmail.com>'
17
 
 
18
 
import dbus
19
 
 
20
 
BUS_NAME = 'org.gnome.seahorse'
21
 
 
22
 
CRYPTO_INTERFACE = 'org.gnome.seahorse.CryptoService'
23
 
CRYPTO_PATH = '/org/gnome/seahorse/crypto'
24
 
 
25
 
OPENPGP_INTERFACE = 'org.gnome.seahorse.Keys'
26
 
OPENPGP_PATH = '/org/gnome/seahorse/keys/openpgp'
27
 
 
28
 
KEY_TYPE_OPENPGP = 'openpgp'
29
 
KEY_TYPE_SSH = 'ssh'
30
 
 
31
 
try:
32
 
    bus = dbus.SessionBus()
33
 
    crypto = dbus.Interface(bus.get_object(BUS_NAME, CRYPTO_PATH), 
34
 
                            CRYPTO_INTERFACE)
35
 
    openpgp = dbus.Interface(bus.get_object(BUS_NAME, OPENPGP_PATH),
36
 
                             OPENPGP_INTERFACE)
37
 
except dbus.exceptions.DBusException, e:
38
 
    get_name = getattr(e, 'get_dbus_name', None)
39
 
    if get_name is not None:
40
 
        name = get_name()
41
 
    else:
42
 
        name = getattr(e, '_dbus_error_name', None)
43
 
 
44
 
    if name is None:
45
 
        args = getattr(e, 'args', None) # This is case for old python-dbus-0.62
46
 
        if args == ("Unable to determine the address of the message bus (try 'man dbus-launch' and 'man dbus-daemon' for help)",):
47
 
            raise ImportError
48
 
 
49
 
    # DBus sometimes fails like this, just treat it as if seahorse is not
50
 
    # available rather than crashing.
51
 
    if name in ("org.freedesktop.DBus.Error.Spawn.ExecFailed", 
52
 
                "org.freedesktop.DBus.Error.ServiceUnknown",
53
 
                "org.freedesktop.DBus.Error.NotSupported"):
54
 
        raise ImportError
55
 
    else:
56
 
        raise
57
 
 
58
 
FLAG_VALID = 0x0001
59
 
FLAG_CAN_ENCRYPT = 0x0002
60
 
FLAG_CAN_SIGN = 0x0004
61
 
FLAG_EXPIRED = 0x0100
62
 
FLAG_REVOKED = 0x0200
63
 
FLAG_DISABLED = 0x0400
64
 
FLAG_TRUSTED = 0x1000
65
 
 
66
 
TRUST_NEVER = -1
67
 
TRUST_UNKNOWN = 0
68
 
TRUST_MARGINAL = 1
69
 
TRUST_FULL = 5
70
 
TRUST_ULTIMATE = 10
71
 
 
72
 
LOCATION_MISSING = 10
73
 
LOCATION_SEARCHING = 20
74
 
LOCATION_REMOTE = 50
75
 
LOCATION_LOCAL = 100
76
 
 
77
 
keyset = dict()
78
 
 
79
 
def verify(crypttext):
80
 
    (cleartext, key) = crypto.VerifyText(KEY_TYPE_OPENPGP, 1, crypttext)
81
 
 
82
 
    if key != "":
83
 
        if key not in keyset:
84
 
            keyset[key] = Key(key)
85
 
 
86
 
        return (cleartext, keyset[key])
87
 
 
88
 
    return (cleartext, None)
89
 
 
90
 
 
91
 
class Key:
92
 
 
93
 
    def __init__(self, key):
94
 
        self.key = key
95
 
 
96
 
        (keys, unmatched) = openpgp.MatchKeys([self.get_id()], 0x00000010)
97
 
        self.available = (key in keys)
98
 
 
99
 
        if self.available:
100
 
            fields = openpgp.GetKeyFields(key, ['fingerprint', 'trust', 'flags', 'display-name', 'location'])
101
 
        else:
102
 
            fields = dict()
103
 
 
104
 
        self.fingerprint = fields.get('fingerprint', 'N/A')
105
 
        self.trust = fields.get('trust', TRUST_UNKNOWN)
106
 
        self.flags = fields.get('flags', 0)
107
 
        self.display_name = fields.get('display-name', '')
108
 
        self.location = fields.get('location', LOCATION_MISSING)
109
 
    
110
 
    def get_flags(self):
111
 
        return self.flags
112
 
 
113
 
    def get_display_name(self):
114
 
        return self.display_name
115
 
 
116
 
    def get_id(self):
117
 
        return self.key.split(':')[1][8:]
118
 
 
119
 
    def get_fingerprint(self):
120
 
        return self.fingerprint
121
 
 
122
 
    def get_trust(self):
123
 
        return self.trust
124
 
 
125
 
    def get_location(self):
126
 
        return self.location
127
 
 
128
 
    def is_available(self):
129
 
        return self.available
130
 
 
131
 
    def is_trusted(self):
132
 
        return self.flags & FLAG_TRUSTED != 0