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, or (at your option)
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.
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., 675 mass ave, cambridge, ma 02139, usa.
15
from xl.nls import gettext as _
17
from xl import xdg, settings, event, devices
18
from xlgui import collection
19
import logging, threading
21
logger = logging.getLogger(__name__)
26
class ManagerDialog(object):
28
the device manager dialog
31
def __init__(self, parent, main):
34
self.device_manager = self.main.exaile.devices
35
self.xml = gtk.glade.XML(
36
xdg.get_data_path('glade/device_manager.glade'),
37
'device_manager', 'exaile')
38
self.window = self.xml.get_widget('device_manager')
39
self.window.set_transient_for(self.parent)
40
self.window.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
41
self.window.connect('delete-event', self.on_close)
43
self.xml.signal_autoconnect({
44
'on_btn_connect_clicked': self.on_connect,
45
'on_btn_disconnect_clicked': self.on_disconnect,
46
'on_btn_edit_clicked': self.on_edit,
47
'on_btn_add_clicked': self.on_add,
48
'on_btn_remove_clicked': self.on_remove,
49
'on_btn_close_clicked': self.on_close,
52
# TODO: make these actually work. For now, they are hidden
53
for item in ('add', 'edit', 'remove'):
54
self.xml.get_widget('btn_%s' % item).destroy()
56
# object should really be devices.Device, but it doesnt work :/
57
self.model = gtk.ListStore(object, gtk.gdk.Pixbuf, str, str)
58
self.tree = self.xml.get_widget('tree_devices')
59
self.tree.set_model(self.model)
61
render = gtk.CellRendererPixbuf()
62
col = gtk.TreeViewColumn(_("Icon"), render)
63
col.add_attribute(render, "pixbuf", 1)
64
self.tree.append_column(col)
66
render = gtk.CellRendererText()
67
col = gtk.TreeViewColumn(_("Device"), render)
69
col.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
70
col.add_attribute(render, "text", 2)
71
self.tree.append_column(col)
73
render = gtk.CellRendererText()
74
col = gtk.TreeViewColumn(_("Driver"), render)
75
col.add_attribute(render, "text", 3)
76
self.tree.append_column(col)
79
event.add_callback(self.populate_tree, 'device_added')
80
event.add_callback(self.populate_tree, 'device_removed')
82
def populate_tree(self, *args):
84
for d in self.device_manager.list_devices():
85
self.model.append([d, None, d.get_name(), d.__class__.__name__])
87
def _get_selected_devices(self):
88
sel = self.tree.get_selection()
89
(model, paths) = sel.get_selected_rows()
92
iter = self.model.get_iter(path)
93
device = self.model.get_value(iter, 0)
94
devices.append(device)
99
def on_connect(self, *args):
100
devices = self._get_selected_devices()
105
def on_disconnect(self, *args):
106
devices = self._get_selected_devices()
111
def on_edit(self, *args):
112
logger.warning("NOT IMPLEMENTED")
114
def on_add(self, *args):
115
logger.warning("NOT IMPLEMENTED")
117
def on_remove(self, *args):
118
logger.warning("NOT IMPLEMENTED")
120
def on_close(self, *args):
122
self.window.destroy()
125
self.window.show_all()