Package flumotion :: Package component :: Package producers :: Package playlist :: Module admin_gtk
[hide private]

Source Code for Module flumotion.component.producers.playlist.admin_gtk

  1  # -*- Mode: Python -*- 
  2  # vi:si:et:sw=4:sts=4:ts=4 
  3   
  4  # Flumotion - a streaming media server 
  5  # Copyright (C) 2004,2005,2006,2007,2008,2009 Fluendo, S.L. 
  6  # Copyright (C) 2010,2011 Flumotion Services, S.A. 
  7  # All rights reserved. 
  8  # 
  9  # This file may be distributed and/or modified under the terms of 
 10  # the GNU Lesser General Public License version 2.1 as published by 
 11  # the Free Software Foundation. 
 12  # This file is distributed without any warranty; without even the implied 
 13  # warranty of merchantability or fitness for a particular purpose. 
 14  # See "LICENSE.LGPL" in the source distribution for more information. 
 15  # 
 16  # Headers in this file shall remain intact. 
 17   
 18  import os 
 19  import gettext 
 20  import gtk 
 21  import gst 
 22  from flumotion.component.base.admin_gtk import BaseAdminGtk 
 23  from flumotion.component.base.baseadminnode import BaseAdminGtkNode 
 24   
 25  _ = gettext.gettext 
 26  ( 
 27      COLUMN_TITLE, 
 28      COLUMN_DURATION, 
 29      COLUMN_OFFSET, 
 30      COLUMN_AUDIO, 
 31      COLUMN_VIDEO, 
 32      COLUMN_LOCATION, 
 33  ) = range(6) 
 34   
 35   
36 -def time_to_string(value):
37 sec = value / gst.SECOND 38 mins = sec / 60 39 sec = sec % 60 40 hours = mins / 60 41 mins = mins % 60 42 return "%02d:%02d:%02d" % (hours, mins, sec)
43 44
45 -class PlaylistAdminGtkNode(BaseAdminGtkNode):
46 gladeFile = os.path.join("flumotion", "component", "producers", 47 "playlist", "playlist.glade") 48 _iters = {} 49
50 - def haveWidgetTree(self):
51 52 def getUIState_cb(state): 53 self._populate(state, "playlist", state.get("playlist"))
54 55 self._buildPlaylist() 56 self.widget = self.getWidget("main_vbox") 57 d = self.callRemote("getUIState") 58 d.addCallback(getUIState_cb)
59
60 - def _buildPlaylist(self):
61 self.store = gtk.ListStore(str, str, str, str, str, str) 62 self.tree = self.wtree.get_widget("treeview-playlist") 63 self.tree.append_column(gtk.TreeViewColumn("Title", 64 gtk.CellRendererText(), 65 text=COLUMN_TITLE)) 66 self.tree.append_column(gtk.TreeViewColumn("Duration", 67 gtk.CellRendererText(), 68 text=COLUMN_DURATION)) 69 self.tree.append_column(gtk.TreeViewColumn("Offset", 70 gtk.CellRendererText(), 71 text=COLUMN_OFFSET)) 72 self.tree.append_column(gtk.TreeViewColumn("Audio", 73 gtk.CellRendererText(), 74 text=COLUMN_AUDIO)) 75 self.tree.append_column(gtk.TreeViewColumn("Video", 76 gtk.CellRendererText(), 77 text=COLUMN_VIDEO)) 78 self.tree.append_column(gtk.TreeViewColumn("Location", 79 gtk.CellRendererText(), 80 text=COLUMN_LOCATION)) 81 self.tree.set_model(self.store)
82
83 - def _append(self, item):
84 # playlist item order: 85 # [timestamp, uri, duration, offset, hasAudio, hasVideo] 86 self._iters[item[0]] = self.store.append([os.path.basename(item[1]), 87 str(time_to_string(item[2])), 88 str(time_to_string(item[3])), 89 str(item[4]), 90 str(item[5]), 91 str(item[1])])
92
93 - def _remove(self, item):
94 i = self._iters[item[0]] 95 if i: 96 self.store.remove(iter) 97 self._iters.pop(iter)
98
99 - def _populate(self, state, key, value):
100 if key == "playlist": 101 self.store.clear() 102 for item in value: 103 self._append(item)
104
105 - def stateAppend(self, state, key, value):
106 if key == "playlist": 107 self._append(value)
108
109 - def stateRemove(self, state, key, value):
110 if key == "playlist": 111 self._remove(value)
112 113
114 -class PlaylistAdminGtk(BaseAdminGtk):
115
116 - def setup(self):
117 statistics = PlaylistAdminGtkNode(self.state, 118 self.admin, 119 _("Playlist")) 120 self.nodes['Playlist'] = statistics 121 return BaseAdminGtk.setup(self)
122 123 GUIClass = PlaylistAdminGtk 124