#!/usr/bin/python import os import sys import time import pygtk import gobject import gtk class simpleDVB(): def on_window_destroy(self, widget): gtk.main_quit() def window_show(self, arg1, arg2): self.window.show() def on_channels_TreeView_activate(self, widget, path, view_column): channel_name = self.channels_ListStore[path[0]][0] self.channel_uri = 'dvb://' + channel_name self.mplayer_args = '-really-quiet' self.window.hide() (pid, stdin, stdout, stderr) = gobject.spawn_async(['mplayer', self.mplayer_args, self.channel_uri], flags=gobject.SPAWN_SEARCH_PATH | gobject.SPAWN_DO_NOT_REAP_CHILD) print pid gobject.child_watch_add(pid, self.window_show) def __init__(self): self.window = gtk.Window() self.window.set_size_request(200, 500) self.scrolled_window = gtk.ScrolledWindow() self.window.add(self.scrolled_window) self.window.connect("destroy", self.on_window_destroy) self.channels_ListStore = gtk.ListStore(str) for channel_name in channel_names: self.channels_ListStore.append([channel_name]) self.channels_TreeView = gtk.TreeView(self.channels_ListStore) self.channels_CellRenderer = gtk.CellRendererText() self.channels_TreeViewColumn = gtk.TreeViewColumn("Channel Name", self.channels_CellRenderer , text=0) self.channels_TreeView.append_column(self.channels_TreeViewColumn) self.scrolled_window.add(self.channels_TreeView) self.channels_TreeView.connect("row-activated", self.on_channels_TreeView_activate) self.window.show_all() if ( len(sys.argv) > 1 ): file = sys.argv[1] else: file = os.path.expanduser('~/.mplayer') + "/channels.conf" f = open(file) channel_names = [] while 1: line = f.readline() if not line : break channel = line.split(":") channel_names.append(channel[0]) channel_names.sort() p = simpleDVB() gtk.main()