~andrewsomething/exaile/karmic

« back to all changes in this revision

Viewing changes to xlgui/devices.py

  • Committer: Aren Olson
  • Date: 2009-09-12 00:36:59 UTC
  • Revision ID: reacocard@gmail.com-20090912003659-w373sg0n04uoa8op
remove useless files, add soem of the fixes from lp bug 420019

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, or (at your option)
4
 
# 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., 675 mass ave, cambridge, ma 02139, usa.
14
 
 
15
 
from xl.nls import gettext as _
16
 
import gtk, gtk.glade
17
 
from xl import xdg, settings, event, devices
18
 
from xlgui import collection
19
 
import logging, threading
20
 
 
21
 
logger = logging.getLogger(__name__)
22
 
 
23
 
 
24
 
 
25
 
 
26
 
class ManagerDialog(object):
27
 
    """
28
 
        the device manager dialog
29
 
    """
30
 
 
31
 
    def __init__(self, parent, main):
32
 
        self.main = main
33
 
        self.parent = parent
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)
42
 
 
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,
50
 
            })
51
 
 
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()
55
 
 
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)
60
 
 
61
 
        render = gtk.CellRendererPixbuf()
62
 
        col = gtk.TreeViewColumn(_("Icon"), render)
63
 
        col.add_attribute(render, "pixbuf", 1)
64
 
        self.tree.append_column(col)
65
 
 
66
 
        render = gtk.CellRendererText()
67
 
        col = gtk.TreeViewColumn(_("Device"), render)
68
 
        col.set_expand(True)
69
 
        col.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
70
 
        col.add_attribute(render, "text", 2)
71
 
        self.tree.append_column(col)
72
 
 
73
 
        render = gtk.CellRendererText()
74
 
        col = gtk.TreeViewColumn(_("Driver"), render)
75
 
        col.add_attribute(render, "text", 3)
76
 
        self.tree.append_column(col)
77
 
 
78
 
        self.populate_tree()
79
 
        event.add_callback(self.populate_tree, 'device_added')
80
 
        event.add_callback(self.populate_tree, 'device_removed')
81
 
 
82
 
    def populate_tree(self, *args):
83
 
        self.model.clear()
84
 
        for d in self.device_manager.list_devices():
85
 
            self.model.append([d, None, d.get_name(), d.__class__.__name__])
86
 
 
87
 
    def _get_selected_devices(self):
88
 
        sel = self.tree.get_selection()
89
 
        (model, paths) = sel.get_selected_rows()
90
 
        devices = []
91
 
        for path in paths:
92
 
            iter = self.model.get_iter(path)
93
 
            device = self.model.get_value(iter, 0)
94
 
            devices.append(device)
95
 
 
96
 
        return devices
97
 
 
98
 
 
99
 
    def on_connect(self, *args):
100
 
        devices = self._get_selected_devices()
101
 
 
102
 
        for d in devices:
103
 
            d.connect()
104
 
 
105
 
    def on_disconnect(self, *args):
106
 
        devices = self._get_selected_devices()
107
 
 
108
 
        for d in devices:
109
 
            d.disconnect()
110
 
 
111
 
    def on_edit(self, *args):
112
 
        logger.warning("NOT IMPLEMENTED")
113
 
 
114
 
    def on_add(self, *args):
115
 
        logger.warning("NOT IMPLEMENTED")
116
 
 
117
 
    def on_remove(self, *args):
118
 
        logger.warning("NOT IMPLEMENTED")
119
 
 
120
 
    def on_close(self, *args):
121
 
        self.window.hide()
122
 
        self.window.destroy()
123
 
 
124
 
    def run(self):
125
 
        self.window.show_all()