⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 videodisplay.py

📁 属性sosuo算法
💻 PY
字号:
import appimport frontendimport gobjectimport gtkimport gtk.gdkimport gnomevfsimport gconfimport sysfrom gtk_queue import gtkAsyncMethod, gtkSyncMethodfrom platformcfg import gconf_lockfrom threading import Event################################################################################### The Playback Controller                                               ###################################################################################class PlaybackController (app.PlaybackControllerBase):        def playItemExternally(self, itemID):        item = app.PlaybackControllerBase.playItemExternally(self, itemID)        # now play this item externally################################################################################### Right-hand pane video display                                         ###################################################################################class VideoDisplay (app.VideoDisplayBase):    "Video player that can be shown in a MainFrame's right-hand pane."    def __init__(self):        app.VideoDisplayBase.__init__(self)        self.videoUpdateTimeout = None        self._gtkInit()        self.renderersReady = Event()    def add_renderer(self, modname):        try:            pkg = __import__('frontend_implementation.' + modname)            module = getattr(pkg, modname)            renderer = module.Renderer()            renderer.setWidget(self.widget)            self.renderers.append(renderer)            print "loaded renderer '%s'" % modname        except:            print "initRenderers: couldn't load %s: %s" % (modname, sys.exc_info()[1])    @gtkAsyncMethod    def initRenderers(self):        self.renderers = []        gconf_lock.acquire()        values = gconf.client_get_default().get("/apps/democracy/player/renderers")        if values == None:            self.add_renderer("gstrenderer")            self.add_renderer("xinerenderer")        else:            for value in values.get_list():                self.add_renderer(value.get_string())        gconf_lock.release()        self.renderersReady.set()                def getRendererForItem(self, anItem):        self.renderersReady.wait()        return app.VideoDisplayBase.getRendererForItem(self, anItem)    @gtkAsyncMethod    def _gtkInit(self):        self.widget = gtk.DrawingArea()        self.widget.set_double_buffered(False)        self.widget.add_events(gtk.gdk.POINTER_MOTION_MASK)        self.widget.show()    def startVideoTimeUpdate(self):        self.stopVideoTimeUpdate()        self.videoUpdateTimeout = gobject.timeout_add(500,                app.controller.frame.updateVideoTime)    def stopVideoTimeUpdate(self):        if self.videoUpdateTimeout is not None:            gobject.source_remove(self.videoUpdateTimeout)            self.videoUpdateTimeout = None    @gtkAsyncMethod    def play(self, startTime=0):        if not self.activeRenderer:            return        self.activeRenderer.playFromTime(startTime)        self.startVideoTimeUpdate()        self.isPlaying = True        app.controller.frame.windowChanger.updatePlayPauseButton()    def goToBeginningOfMovie(self):        self.play(0)    @gtkAsyncMethod    def pause(self):        self.stopVideoTimeUpdate()        app.VideoDisplayBase.pause(self)        app.controller.frame.windowChanger.updatePlayPauseButton()    def getWidget(self, area = None):        return self.widget    @gtkSyncMethod    def getLength(self):        """Get the length, in seconds, of the current video."""        if self.activeRenderer:            return self.activeRenderer.getLength()        else:            return 0##############################################################################################################################################################

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -