~phoenix1987/sopcast-player/devel

« back to all changes in this revision

Viewing changes to lib/sopcast-player.py

  • Committer: Gabriele N. Tornetta
  • Date: 2011-11-18 19:58:09 UTC
  • Revision ID: phoenix1987@gmail.com-20111118195809-51l7q20hfel7hwh6
New features:
- Added AllP2PTV Schedule module
- Fixed Mute toggle button

Future plans:
- Handle audio delay
- Allow using a different media source for audio output
- Complete bookmark management
- More explicit sidepanel "pluginiziation"
- Channel list filtering

Known bugs:
- Most of the settings accessible from the Preferences dialog haven't been tested against new changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
import vlc
39
39
import VLCWidget
40
40
import rojadirecta
 
41
import allp2ptv
41
42
 
42
43
cur_locale = locale.setlocale(locale.LC_ALL, "")
43
44
 
462
463
                config_manager = pySopCastConfigurationManager.pySopCastConfigurationManager()
463
464
                config_manager.read()
464
465
                self.player_volume = config_manager.getint("player", "volume")
 
466
                self.toggle_mute.set_active(config_manager.getboolean("player", "mute"))
465
467
                self.volume.set_value(self.player_volume)
466
468
                        
467
469
                self.window.set_default_size(config_manager.getint("player", "width"), config_manager.getint("player", "height"))
501
503
                self.treeview_selection_changed_handler = self.treeview_selection.connect("changed", self.on_selection_changed)
502
504
                self.channel_treeview.connect("row_activated", self.on_channel_treeview_row_activated)    
503
505
 
504
 
 
505
 
                # Schedule
506
 
                textrenderer = gtk.CellRendererText()
507
 
                column = gtk.TreeViewColumn("Channel Name", textrenderer, markup=0)
508
 
                self.tree_entries.append_column(column)
509
 
                
510
 
                textrenderer = gtk.CellRendererText()
511
 
                column = gtk.TreeViewColumn("Quality", textrenderer, text=1)
512
 
                self.tree_entries.append_column(column)
513
 
 
514
 
                textrenderer = gtk.CellRendererText()
515
 
                column = gtk.TreeViewColumn("Language", textrenderer, text=4)
516
 
                self.tree_entries.append_column(column)
517
 
 
518
 
                treestore = gtk.TreeStore(str, str, str, int, str)
519
 
                self.tree_entries.set_model(treestore)
520
 
 
521
 
                self.tree_entries.connect("row_activated", self.on_tree_entries_row_activated)    
522
 
 
523
506
                # Bookmarks
524
507
                textrenderer = gtk.CellRendererText()
525
508
                
689
672
                
690
673
                self.channel_treeview.set_model(self.channel_treeview_model)
691
674
 
 
675
        def reset_schedule(self):
 
676
                model = self.tree_entries.get_model()
 
677
                if model:
 
678
                        self.tree_entries.set_model()
 
679
                        del model
 
680
                        
 
681
                cols = self.tree_entries.get_columns()
 
682
                for col in cols: self.tree_entries.remove_column(col)
 
683
 
692
684
        def set_media_player_visible(self, visible):
693
685
                if visible == True:
694
686
                        config_manager = pySopCastConfigurationManager.pySopCastConfigurationManager()
780
772
                self.toggle_mute.set_active(False)
781
773
        
782
774
        def on_toggle_mute_toggled(self, widget, data = None):
 
775
                status = self.toggle_mute.get_active()
 
776
                if not status:
 
777
                        self.vlc.set_volume(self.player_volume)
783
778
                self.vlc.set_mute(self.toggle_mute.get_active())
784
779
        
785
780
        def on_menu_about_activate(self, src, data=None):
1222
1217
 
1223
1218
        def on_tb_refresh_clicked(self, object):
1224
1219
                list_index = self.cbo_list.get_active()
1225
 
                if (list_index == 0):
 
1220
                self.reset_schedule()
 
1221
                if list_index == 0:
1226
1222
                        print "Updating Rojadirecta Schedule list..."
1227
1223
                        
1228
1224
                        roja = rojadirecta.Rojadirecta(self, self.pb_download_handler, self.tree_entries)
1229
1225
                        roja.start()
1230
 
 
 
1226
                
 
1227
                elif list_index == 1:
 
1228
                        print "Updating AllP2PTV Schedule list..."
 
1229
                        
 
1230
                        allp2p = allp2ptv.AllP2PTV(self, self.pb_download_handler, self.tree_entries)
 
1231
                        allp2p.start()
 
1232
                        
1231
1233
                else:
1232
1234
                        print "No list selected."
1233
1235
 
1251
1253
                if event.state & gtk.gdk.CONTROL_MASK:
1252
1254
                        if gtk.gdk.keyval_name(event.keyval) in ["h", "H"]:
1253
1255
                                self.menu_show_controls.toggled()
 
1256
                                return True
1254
1257
                                
1255
1258
                        elif gtk.gdk.keyval_name(event.keyval) in ["t", "T"]:
1256
1259
                                self.menu_stay_on_top.set_active(not self.menu_stay_on_top.get_active())
 
1260
                                return True
1257
1261
                                
1258
1262
                        elif gtk.gdk.keyval_name(event.keyval) in ["q", "Q"]:
1259
1263
                                self.menu_quit.activate()
 
1264
                                return True
1260
1265
                                
1261
1266
                        elif gtk.gdk.keyval_name(event.keyval) in ["o", "O"]:
1262
1267
                                self.open_sop_address.activate()
 
1268
                                return True
1263
1269
                                
1264
1270
                        elif gtk.gdk.keyval_name(event.keyval) in ["d", "D"]:
1265
1271
                                self.menu_add_bookmark.activate()
1266
 
                        
1267
 
                        return True
 
1272
                                return True
1268
1273
                        
1269
1274
                elif not (event.state & (gtk.gdk.CONTROL_MASK | gtk.gdk.SHIFT_MASK | gtk.gdk.MOD1_MASK)):
1270
1275
                        if gtk.gdk.keyval_name(event.keyval) in ["h", "H"]:
1271
1276
                                if self.fullscreen: return True
1272
1277
                                self.show_controls = not self.show_controls
1273
1278
                                self.show_menu_controls(self.show_controls)
 
1279
                                return True
1274
1280
                                
1275
1281
                        elif gtk.gdk.keyval_name(event.keyval) in ["t", "T"]:
1276
1282
                                self.menu_stay_on_top.set_active(not self.menu_stay_on_top.get_active())
 
1283
                                return True
1277
1284
                                
1278
1285
                        elif gtk.gdk.keyval_name(event.keyval) in ["f", "F"]:
1279
1286
                                self.menu_fullscreen.activate()
 
1287
                                return True
1280
1288
                                
1281
1289
                        elif gtk.gdk.keyval_name(event.keyval) in ["m", "M"]:
1282
1290
                                self.toggle_mute.clicked()
 
1291
                                return True
1283
1292
                                
1284
1293
                        elif gtk.gdk.keyval_name(event.keyval) in ["1", "2", "3"]:
1285
1294
                                (self.menu_video_zoom_half, self.menu_video_zoom_normal, self.menu_video_zoom_double)[int(gtk.gdk.keyval_name(event.keyval))-1].activate()
1286
 
                        
1287
 
                        return True
 
1295
                                return True
1288
1296
                
1289
1297
                return False
1290
1298
        
1367
1375
                
1368
1376
                if self.vlc.get_parent() == self.eb:
1369
1377
                        self.vlc.play_media()
1370
 
                        self.vlc.set_volume(self.player_volume)
 
1378
                        self.vlc.set_volume(0 if self.toggle_mute.get_active() else self.player_volume)
 
1379
                        
1371
1380
                        return True
1372
1381
                else:
1373
1382
                        return False
1381
1390
                                
1382
1391
        def pb_download_handler(self, blocks, block_size, file_size):
1383
1392
                frac = blocks * block_size / float(file_size)
1384
 
                if (frac > 1.0):
1385
 
                        frac = 1.0
 
1393
                if frac > 1.0: frac = 1.0
 
1394
                elif frac < 0: frac = 0.0
1386
1395
                gtk.gdk.threads_enter()
1387
1396
                self.pb_download.set_fraction(frac)
1388
1397
                gtk.gdk.threads_leave()
1468
1477
        def on_fullscreen_activate(self, src, data=None):
1469
1478
                if self.ui_worker.play_stream == True:
1470
1479
                        self.toggle_fullscreen()
1471
 
                        #self.vlc.fullscreen()
1472
 
                        #if self.fullscreen == True:
1473
 
                        #       self.vlc.display_text("    Press F to exit fullscreen")
1474
 
                        
 
1480
                        if self.fullscreen == True:
 
1481
                                self.vlc.display_text("Press F or double-click to exit Fullscreen Mode", pos = 0, opacity = 192, timeout = 3000)
1475
1482
        def on_exit(self, widget, data=None):
1476
1483
                rect = self.window.get_allocation()
1477
1484
                config_manager = pySopCastConfigurationManager.pySopCastConfigurationManager()
1491
1498
                        
1492
1499
                config_manager.set("player", "show_channel_guide", self.show_channel_guide.get_active())
1493
1500
                config_manager.set("player", "volume", int(self.volume.get_value()))
 
1501
                config_manager.set("player", "mute", self.toggle_mute.get_active())
1494
1502
                config_manager.write()
1495
1503
                
1496
1504
                self.ui_worker.stop()