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>
4
# Licensed under the GNU General Public License Version 3
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.
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.
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/>.
1
from blueman.Functions import dprint
19
2
from blueman.Sdp import *
21
5
class ManagerToolbar:
23
def __init__(self, blueman):
24
self.blueman = blueman
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)
31
#toolbar = blueman.Builder.get_object("toolbar2")
32
#for c in toolbar.get_children():
35
self.b_search = blueman.Builder.get_object("b_search")
36
self.b_search.connect("clicked", lambda button: blueman.inquiry())
38
self.b_bond = blueman.Builder.get_object("b_bond")
39
self.b_bond.connect("clicked", self.on_action, self.blueman.bond)
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)
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()
50
self.b_trust.props.width_request = max(size[0], size2[0])
53
self.b_remove = blueman.Builder.get_object("b_remove")
54
self.b_remove.connect("clicked", self.on_action, self.blueman.remove)
56
self.b_add = blueman.Builder.get_object("b_add")
57
self.b_add.connect("clicked", self.on_action, self.blueman.add_device)
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)
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)
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)
73
self.on_adapter_changed(blueman.List, blueman.List.GetAdapterPath())
75
def on_action(self, button, func):
76
device = self.blueman.List.GetSelectedDevice()
82
def on_adapter_property_changed(self, List, adapter, (key, value)):
83
if key == "Discovering":
85
self.b_search.props.sensitive = False
87
self.b_search.props.sensitive = True
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)
95
self.b_search.props.sensitive = True
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
105
row = dev_list.get(iter, "bonded", "trusted", "fake")
106
self.b_setup.props.sensitive = True
108
self.b_bond.props.sensitive = False
110
self.b_bond.props.sensitive = True
113
self.b_trust.props.sensitive = True
114
self.b_trust.props.icon_name = "blueman-untrust"
115
self.b_trust.props.label = _("Untrust")
118
self.b_trust.props.sensitive = True
119
self.b_trust.props.icon_name = "blueman-trust"
120
self.b_trust.props.label = _("Trust")
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
128
self.b_remove.props.sensitive = True
129
self.b_add.props.sensitive = False
131
self.update_send_browse(device)
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
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
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)
154
self.on_device_selected(dev_list, device, iter)
155
self.update_send_browse(device)
158
self.update_send_browse(device)
6
def __init__(self, blueman):
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)
14
#toolbar = blueman.Builder.get_object("toolbar2")
15
#for c in toolbar.get_children():
18
self.b_search = blueman.Builder.get_object("b_search")
19
self.b_search.connect("clicked", lambda button: blueman.inquiry())
21
self.b_bond = blueman.Builder.get_object("b_bond")
22
self.b_bond.connect("clicked", self.on_action, self.blueman.bond)
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)
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()
33
self.b_trust.props.width_request = max(size[0], size2[0])
35
self.b_remove = blueman.Builder.get_object("b_remove")
36
self.b_remove.connect("clicked", self.on_action, self.blueman.remove)
38
self.b_add = blueman.Builder.get_object("b_add")
39
self.b_add.connect("clicked", self.on_action, self.blueman.add_device)
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)
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)
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)
55
self.on_adapter_changed(blueman.List, blueman.List.GetAdapterPath())
57
def on_action(self, button, func):
58
device = self.blueman.List.GetSelectedDevice()
63
def on_adapter_property_changed(self, List, adapter, (key, value)):
64
if key == "Discovering":
66
self.b_search.props.sensitive = False
68
self.b_search.props.sensitive = True
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)
76
self.b_search.props.sensitive = True
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
86
row = dev_list.get(iter, "bonded", "trusted", "fake")
87
self.b_setup.props.sensitive = True
89
self.b_bond.props.sensitive = False
91
self.b_bond.props.sensitive = True
94
self.b_trust.props.sensitive = True
95
self.b_trust.props.icon_name = "blueman-untrust"
96
self.b_trust.props.label = _("Untrust")
99
self.b_trust.props.sensitive = True
100
self.b_trust.props.icon_name = "blueman-trust"
101
self.b_trust.props.label = _("Trust")
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
109
self.b_remove.props.sensitive = True
110
self.b_add.props.sensitive = False
112
self.update_send_browse(device)
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
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
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)
135
self.on_device_selected(dev_list, device, iter)
136
self.update_send_browse(device)
139
self.update_send_browse(device)