l10n: Updated Polish (pl) translation to 100%
[gpodder.git] / doc / dev / deviceconfig.py
blob3682a1d735c0ceb36026372f7742f161c5815fcd
1 # New device configuration UI draft
2 # Thomas Perl <thp@gpodder.org>; 2010-03-23
4 import gtk
5 import os
7 w = gtk.Window()
8 w.set_default_size(400, 200)
9 v = gtk.HBox()
10 v.set_border_width(12)
11 v.set_spacing(6)
12 w.add(v)
14 sw = gtk.ScrolledWindow()
15 sw.set_shadow_type(gtk.SHADOW_IN)
16 sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
18 v.add(sw)
20 class Device(object):
21 __slots__ = {
22 'type': int,
23 'name': str,
24 'mountpoint': str,
25 'on_sync_mark_played': bool,
26 'on_sync_delete': bool,
27 'disable_pre_sync_conversion': bool,
28 # MP3-Player specific
29 'delete_played': bool,
30 'playlist_file': str,
31 'playlist_absolute_path': bool,
32 'playlist_win_path': bool,
33 'use_scrobbler_log': bool,
34 'max_filename_length': int,
35 'custom_sync_name': str,
36 'only_sync_not_played': bool,
37 'channel_subfolders': bool,
38 'rockbox_copy_coverart': bool,
39 # iPod-specific
40 'purge_old_episodes': bool,
41 'delete_played_from_db': bool,
43 FOLDER, IPOD, MTP = range(3)
45 def __init__(self, type_, name, mountpoint):
46 self.type = type_
47 self.name = name
48 self.mountpoint = mountpoint
50 def get_markup(self):
51 return '%s\n<small>%s</small>' % (self.name, self.mountpoint)
53 def get_icon(self, images_folder='data/images'):
54 if self.type == self.FOLDER:
55 return os.path.join(images_folder, 'folder.png')
56 elif self.type == self.IPOD:
57 return os.path.join(images_folder, 'ipod.png')
58 elif self.type == self.MTP:
59 return os.path.join(images_folder, 'mtp.png')
61 class DeviceList(gtk.ListStore):
62 C_DEVICE, C_ICON, C_NAME = range(3)
64 def __init__(self):
65 gtk.ListStore.__init__(self, object, gtk.gdk.Pixbuf, str)
67 def add_device(self, device):
68 pixbuf = gtk.gdk.pixbuf_new_from_file(device.get_icon())
69 self.append((device, pixbuf, device.get_markup()))
71 m = DeviceList()
72 m.add_device(Device(Device.IPOD, 'Apple iPod', '/media/ipod'))
73 m.add_device(Device(Device.FOLDER, 'MP3 Player', '/media/mp3/Podcasts'))
74 m.add_device(Device(Device.MTP, 'MTP Device', 'Using libmtp'))
76 tv = gtk.TreeView(m)
77 tv.set_headers_visible(False)
79 col = gtk.TreeViewColumn('')
81 cell = gtk.CellRendererPixbuf()
82 col.pack_start(cell, False)
83 col.add_attribute(cell, 'pixbuf', DeviceList.C_ICON)
84 cell = gtk.CellRendererText()
85 col.pack_start(cell, True)
86 col.add_attribute(cell, 'markup', DeviceList.C_NAME)
88 tv.append_column(col)
90 sw.add(tv)
92 h = gtk.VBox()
93 h.set_spacing(6)
94 v.pack_start(h, False, False)
96 for s in (gtk.STOCK_ADD, gtk.STOCK_EDIT, gtk.STOCK_REMOVE):
97 i = gtk.image_new_from_stock(s, gtk.ICON_SIZE_BUTTON)
98 b = gtk.Button()
99 b.set_image(i)
100 h.pack_start(b, False, False)
102 w.show_all()
103 w.connect('destroy', gtk.main_quit)
104 gtk.main()