~ubuntu-branches/ubuntu/wily/blueman/wily-proposed

« back to all changes in this revision

Viewing changes to blueman/gui/manager/ManagerToolbar.py

  • Committer: Package Import Robot
  • Author(s): Jackson Doak
  • Date: 2014-01-21 08:54:58 UTC
  • mfrom: (2.3.4 sid)
  • Revision ID: package-import@ubuntu.com-20140121085458-riy3j6wk9vfd599j
Tags: 1.23-git201312311147-1ubuntu1
* Merge from debian unstable. Remaining changes:
  - debian/patches/01_dont_autostart_lxde.patch:
    + Don't autostart the applet in LXDE
  - debian/patches/02_dont_crash_on_non-bluetooth_card.patch:
    + Avoid crashing when receiving event for cards blueman shouldn't handle
  - debian/control: Don't depend on python-appindicator
  - debian/patches/03_filemanager_fix.patch:
    + Add support for more filemanagers 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from blueman.Functions import dprint# Copyright (C) 2008 Valmantas Paliksa <walmis at balticum-tv dot lt>
2
 
# Copyright (C) 2008 Tadas Dailyda <tadas at dailyda dot com>
3
 
#
4
 
# Licensed under the GNU General Public License Version 3
5
 
#
6
 
# This program is free software: you can redistribute it and/or modify
7
 
# it under the terms of the GNU General Public License as published by
8
 
# the Free Software Foundation, either version 3 of the License, or
9
 
# (at your option) any later version.
10
 
#
11
 
# This program is distributed in the hope that it will be useful,
12
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
# GNU General Public License for more details.
15
 
#
16
 
# You should have received a copy of the GNU General Public License
17
 
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
 
 
1
from blueman.Functions import dprint
19
2
from blueman.Sdp import *
20
3
 
 
4
 
21
5
class ManagerToolbar:
22
 
 
23
 
        def __init__(self, blueman):
24
 
                self.blueman = blueman
25
 
                
26
 
                self.blueman.List.connect("device-selected", self.on_device_selected)
27
 
                self.blueman.List.connect("device-property-changed", self.on_device_propery_changed)
28
 
                self.blueman.List.connect("adapter-changed", self.on_adapter_changed)
29
 
                self.blueman.List.connect("adapter-property-changed", self.on_adapter_property_changed)
30
 
                
31
 
                #toolbar = blueman.Builder.get_object("toolbar2")
32
 
                #for c in toolbar.get_children():
33
 
                #       c.set_expand(True)
34
 
                
35
 
                self.b_search = blueman.Builder.get_object("b_search")
36
 
                self.b_search.connect("clicked", lambda button: blueman.inquiry())
37
 
                
38
 
                self.b_bond = blueman.Builder.get_object("b_bond")
39
 
                self.b_bond.connect("clicked", self.on_action, self.blueman.bond)
40
 
                
41
 
                self.b_trust = blueman.Builder.get_object("b_trust")
42
 
                self.b_trust.connect("clicked", self.on_action, self.blueman.toggle_trust)
43
 
                self.b_trust.set_homogeneous(False)
44
 
                
45
 
                self.b_trust.props.label = _("Untrust")
46
 
                size = self.b_trust.size_request()
47
 
                self.b_trust.props.label = _("Trust")
48
 
                size2 = self.b_trust.size_request()
49
 
                
50
 
                self.b_trust.props.width_request = max(size[0], size2[0])
51
 
                
52
 
                
53
 
                self.b_remove = blueman.Builder.get_object("b_remove")
54
 
                self.b_remove.connect("clicked", self.on_action, self.blueman.remove)
55
 
                
56
 
                self.b_add = blueman.Builder.get_object("b_add")
57
 
                self.b_add.connect("clicked", self.on_action, self.blueman.add_device)
58
 
                
59
 
                self.b_setup = blueman.Builder.get_object("b_setup")
60
 
                self.b_setup.connect("clicked", self.on_action, self.blueman.setup)
61
 
                self.b_setup.set_homogeneous(False)
62
 
                
63
 
                self.b_send = blueman.Builder.get_object("b_send")
64
 
                self.b_send.props.sensitive = False
65
 
                self.b_send.connect("clicked", self.on_action, self.blueman.send)
66
 
                self.b_send.set_homogeneous(False)
67
 
                
68
 
                self.b_browse = blueman.Builder.get_object("b_browse")
69
 
                self.b_browse.props.sensitive = False
70
 
                self.b_browse.connect("clicked", self.on_action, self.blueman.browse)
71
 
                #self.b_browse.set_homogeneous(False)
72
 
                
73
 
                self.on_adapter_changed(blueman.List, blueman.List.GetAdapterPath())
74
 
                
75
 
        def on_action(self, button, func):
76
 
                device = self.blueman.List.GetSelectedDevice()
77
 
                if device != None:
78
 
                        func(device)
79
 
 
80
 
                
81
 
                
82
 
        def on_adapter_property_changed(self, List, adapter, (key, value)):
83
 
                if key == "Discovering":
84
 
                        if value:
85
 
                                self.b_search.props.sensitive = False
86
 
                        else:
87
 
                                self.b_search.props.sensitive = True
88
 
                
89
 
        def on_adapter_changed(self, list, adapter_path):
90
 
                dprint("toolbar adapter", adapter_path)
91
 
                if adapter_path == None:
92
 
                        self.b_search.props.sensitive = False
93
 
                        self.update_send_browse(None)
94
 
                else:
95
 
                        self.b_search.props.sensitive = True
96
 
                
97
 
        def on_device_selected(self, dev_list, device, iter):
98
 
                if device == None or iter == None:
99
 
                        self.b_bond.props.sensitive = False
100
 
                        self.b_remove.props.sensitive = False
101
 
                        self.b_trust.props.sensitive = False
102
 
                        self.b_setup.props.sensitive = False
103
 
                        self.b_add.props.sensitive = False
104
 
                else:
105
 
                        row = dev_list.get(iter, "bonded", "trusted", "fake")
106
 
                        self.b_setup.props.sensitive = True
107
 
                        if row["bonded"]:
108
 
                                self.b_bond.props.sensitive = False
109
 
                        else:
110
 
                                self.b_bond.props.sensitive = True
111
 
                        
112
 
                        if row["trusted"]:
113
 
                                self.b_trust.props.sensitive = True
114
 
                                self.b_trust.props.icon_name = "blueman-untrust"
115
 
                                self.b_trust.props.label = _("Untrust")
116
 
 
117
 
                        else:
118
 
                                self.b_trust.props.sensitive = True
119
 
                                self.b_trust.props.icon_name = "blueman-trust"
120
 
                                self.b_trust.props.label = _("Trust")                           
121
 
                        
122
 
                        if row["fake"]:
123
 
                                self.b_remove.props.sensitive = False
124
 
                                self.b_add.props.sensitive = True
125
 
                                self.b_trust.props.sensitive = False
126
 
                                self.b_bond.props.sensitive = True
127
 
                        else:
128
 
                                self.b_remove.props.sensitive = True
129
 
                                self.b_add.props.sensitive = False
130
 
                                
131
 
                self.update_send_browse(device)
132
 
                        
133
 
        def update_send_browse(self, device):
134
 
                self.b_send.props.sensitive = False
135
 
                self.b_browse.props.sensitive = False
136
 
                if device != None and not device.Fake:
137
 
                        for uuid in device.UUIDs:
138
 
                                uuid16 = uuid128_to_uuid16(uuid)
139
 
                                if uuid16 == OBEX_OBJPUSH_SVCLASS_ID:
140
 
                                        self.b_send.props.sensitive = True
141
 
 
142
 
                                if uuid16 == OBEX_FILETRANS_SVCLASS_ID:
143
 
                                        self.b_browse.props.sensitive = True
144
 
                if device and device.Fake:
145
 
                        self.b_send.props.sensitive = True
146
 
                        
147
 
                        
148
 
        def on_device_propery_changed(self, dev_list, device, iter, (key, value)):
149
 
                if dev_list.compare(iter, dev_list.selected()):
150
 
                        if key == "Trusted" or key == "Paired":
151
 
                                self.on_device_selected(dev_list, device, iter)
152
 
                                
153
 
                        elif key == "Fake":
154
 
                                self.on_device_selected(dev_list, device, iter)
155
 
                                self.update_send_browse(device)
156
 
 
157
 
                        elif key == "UUIDs":
158
 
                                self.update_send_browse(device)
 
6
    def __init__(self, blueman):
 
7
        self.blueman = blueman
 
8
 
 
9
        self.blueman.List.connect("device-selected", self.on_device_selected)
 
10
        self.blueman.List.connect("device-property-changed", self.on_device_propery_changed)
 
11
        self.blueman.List.connect("adapter-changed", self.on_adapter_changed)
 
12
        self.blueman.List.connect("adapter-property-changed", self.on_adapter_property_changed)
 
13
 
 
14
        #toolbar = blueman.Builder.get_object("toolbar2")
 
15
        #for c in toolbar.get_children():
 
16
        #       c.set_expand(True)
 
17
 
 
18
        self.b_search = blueman.Builder.get_object("b_search")
 
19
        self.b_search.connect("clicked", lambda button: blueman.inquiry())
 
20
 
 
21
        self.b_bond = blueman.Builder.get_object("b_bond")
 
22
        self.b_bond.connect("clicked", self.on_action, self.blueman.bond)
 
23
 
 
24
        self.b_trust = blueman.Builder.get_object("b_trust")
 
25
        self.b_trust.connect("clicked", self.on_action, self.blueman.toggle_trust)
 
26
        self.b_trust.set_homogeneous(False)
 
27
 
 
28
        self.b_trust.props.label = _("Untrust")
 
29
        size = self.b_trust.size_request()
 
30
        self.b_trust.props.label = _("Trust")
 
31
        size2 = self.b_trust.size_request()
 
32
 
 
33
        self.b_trust.props.width_request = max(size[0], size2[0])
 
34
 
 
35
        self.b_remove = blueman.Builder.get_object("b_remove")
 
36
        self.b_remove.connect("clicked", self.on_action, self.blueman.remove)
 
37
 
 
38
        self.b_add = blueman.Builder.get_object("b_add")
 
39
        self.b_add.connect("clicked", self.on_action, self.blueman.add_device)
 
40
 
 
41
        self.b_setup = blueman.Builder.get_object("b_setup")
 
42
        self.b_setup.connect("clicked", self.on_action, self.blueman.setup)
 
43
        self.b_setup.set_homogeneous(False)
 
44
 
 
45
        self.b_send = blueman.Builder.get_object("b_send")
 
46
        self.b_send.props.sensitive = False
 
47
        self.b_send.connect("clicked", self.on_action, self.blueman.send)
 
48
        self.b_send.set_homogeneous(False)
 
49
 
 
50
        self.b_browse = blueman.Builder.get_object("b_browse")
 
51
        self.b_browse.props.sensitive = False
 
52
        self.b_browse.connect("clicked", self.on_action, self.blueman.browse)
 
53
        #self.b_browse.set_homogeneous(False)
 
54
 
 
55
        self.on_adapter_changed(blueman.List, blueman.List.GetAdapterPath())
 
56
 
 
57
    def on_action(self, button, func):
 
58
        device = self.blueman.List.GetSelectedDevice()
 
59
        if device != None:
 
60
            func(device)
 
61
 
 
62
 
 
63
    def on_adapter_property_changed(self, List, adapter, (key, value)):
 
64
        if key == "Discovering":
 
65
            if value:
 
66
                self.b_search.props.sensitive = False
 
67
            else:
 
68
                self.b_search.props.sensitive = True
 
69
 
 
70
    def on_adapter_changed(self, list, adapter_path):
 
71
        dprint("toolbar adapter", adapter_path)
 
72
        if adapter_path == None:
 
73
            self.b_search.props.sensitive = False
 
74
            self.update_send_browse(None)
 
75
        else:
 
76
            self.b_search.props.sensitive = True
 
77
 
 
78
    def on_device_selected(self, dev_list, device, iter):
 
79
        if device == None or iter == None:
 
80
            self.b_bond.props.sensitive = False
 
81
            self.b_remove.props.sensitive = False
 
82
            self.b_trust.props.sensitive = False
 
83
            self.b_setup.props.sensitive = False
 
84
            self.b_add.props.sensitive = False
 
85
        else:
 
86
            row = dev_list.get(iter, "bonded", "trusted", "fake")
 
87
            self.b_setup.props.sensitive = True
 
88
            if row["bonded"]:
 
89
                self.b_bond.props.sensitive = False
 
90
            else:
 
91
                self.b_bond.props.sensitive = True
 
92
 
 
93
            if row["trusted"]:
 
94
                self.b_trust.props.sensitive = True
 
95
                self.b_trust.props.icon_name = "blueman-untrust"
 
96
                self.b_trust.props.label = _("Untrust")
 
97
 
 
98
            else:
 
99
                self.b_trust.props.sensitive = True
 
100
                self.b_trust.props.icon_name = "blueman-trust"
 
101
                self.b_trust.props.label = _("Trust")
 
102
 
 
103
            if row["fake"]:
 
104
                self.b_remove.props.sensitive = False
 
105
                self.b_add.props.sensitive = True
 
106
                self.b_trust.props.sensitive = False
 
107
                self.b_bond.props.sensitive = True
 
108
            else:
 
109
                self.b_remove.props.sensitive = True
 
110
                self.b_add.props.sensitive = False
 
111
 
 
112
        self.update_send_browse(device)
 
113
 
 
114
    def update_send_browse(self, device):
 
115
        self.b_send.props.sensitive = False
 
116
        self.b_browse.props.sensitive = False
 
117
        if device != None and not device.Fake:
 
118
            for uuid in device.UUIDs:
 
119
                uuid16 = uuid128_to_uuid16(uuid)
 
120
                if uuid16 == OBEX_OBJPUSH_SVCLASS_ID:
 
121
                    self.b_send.props.sensitive = True
 
122
 
 
123
                if uuid16 == OBEX_FILETRANS_SVCLASS_ID:
 
124
                    self.b_browse.props.sensitive = True
 
125
        if device and device.Fake:
 
126
            self.b_send.props.sensitive = True
 
127
 
 
128
 
 
129
    def on_device_propery_changed(self, dev_list, device, iter, (key, value)):
 
130
        if dev_list.compare(iter, dev_list.selected()):
 
131
            if key == "Trusted" or key == "Paired":
 
132
                self.on_device_selected(dev_list, device, iter)
 
133
 
 
134
            elif key == "Fake":
 
135
                self.on_device_selected(dev_list, device, iter)
 
136
                self.update_send_browse(device)
 
137
 
 
138
            elif key == "UUIDs":
 
139
                self.update_send_browse(device)
159
140
                                
160
141
                
161
142