示例#1
0
    def __init__(self, parent, utility, vlcwrap, bg, border=True):
        wx.Panel.__init__(self, parent, -1)

        self.__check_thread()

        self.utility = utility
        self.parent = parent
        self.border = border
        self.SetBackgroundColour(DEFAULT_BACKGROUND)

        self.volume = 0.48
        self.oldvolume = 0.48
        self.estduration = None

        self.fullscreen_enabled = False
        self.fullscreenwindow = None
        self.play_enabled = False
        self.stop_enabled = False
        self.scroll_enabled = False

        vSizer = wx.BoxSizer(wx.VERTICAL)
        if border:
            self.SetMinSize((34, -1))

            images = ("minimize.png", "maximize.png")
            images = [
                os.path.join(self.utility.getPath(), LIBRARYNAME, "Main",
                             "vwxGUI", "images", image) for image in images
            ]
            self.header = PlayerHeader(self, self, bg, [], images[0],
                                       images[1])

            vSizer.Add(self.header, 0, wx.EXPAND)

            hSizer = wx.BoxSizer(wx.HORIZONTAL)
            self.leftLine = wx.Panel(self, size=(1, -1))
            self.leftLine.SetBackgroundColour(bg)

            mainbox = wx.BoxSizer(wx.VERTICAL)

            self.rightLine = wx.Panel(self, size=(1, -1))
            self.rightLine.SetBackgroundColour(bg)

            hSizer.Add(self.leftLine, 0, wx.EXPAND)
            hSizer.Add(mainbox, 1, wx.EXPAND)
            hSizer.Add(self.rightLine, 0, wx.EXPAND)

            vSizer.Add(hSizer, 1, wx.EXPAND)

            footer = ListFooter(self)
            footer.SetBackgroundColour(bg)
            vSizer.Add(footer, 0, wx.EXPAND)
        else:
            mainbox = vSizer

        self.vlcwrap = vlcwrap
        if vlcwrap is not None:
            self.vlcwin = VLCLogoWindow(self,
                                        utility,
                                        vlcwrap,
                                        bg,
                                        animate=True)
            self.vlcwin.SetMinSize(EmbeddedPlayerPanel.VIDEO_SIZE)

            if border:
                player_img = os.path.join(self.utility.getPath(), LIBRARYNAME,
                                          "Main", "vwxGUI", 'images',
                                          'player.png')
                self.player_img = wx.StaticBitmap(
                    self, -1,
                    wx.BitmapFromImage(wx.Image(player_img,
                                                wx.BITMAP_TYPE_ANY)))
                mainbox.Add(self.player_img, 0, wx.ALIGN_CENTER | wx.TOP, 5)
            mainbox.Add(self.vlcwin, 1, wx.EXPAND, 0)

            self.ctrlsizer = wx.BoxSizer(wx.HORIZONTAL)
            self.slider = ProgressSlider(self, self.utility)
            self.slider.SetRange(0, 1)
            self.slider.SetValue(0)

            self.mute = SwitchButton(self, name='mt')
            self.mute.Bind(wx.EVT_LEFT_UP, self.MuteClicked)

            self.ppbtn = PlayerSwitchButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Video',
                             'Images'), 'pause', 'play')
            self.ppbtn.Bind(wx.EVT_LEFT_UP, self.PlayPause)
            self.ppbtn.setSelected(2)

            self.sbtn = PlayerButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Video',
                             'Images'), 'stop')
            self.sbtn.Bind(wx.EVT_LEFT_UP, self.OnStop)
            self.sbtn.setSelected(2)

            volumebox = wx.BoxSizer(wx.HORIZONTAL)
            self.vol1 = PlayerButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Video',
                             'Images'), 'vol1')
            self.vol1.Bind(wx.EVT_MOUSE_EVENTS, self.mouseAction)

            self.vol2 = PlayerButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Video',
                             'Images'), 'vol2')
            self.vol2.Bind(wx.EVT_MOUSE_EVENTS, self.mouseAction)

            self.vol3 = PlayerButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Video',
                             'Images'), 'vol3')
            self.vol3.Bind(wx.EVT_MOUSE_EVENTS, self.mouseAction)

            self.vol4 = PlayerButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Video',
                             'Images'), 'vol4')
            self.vol4.Bind(wx.EVT_MOUSE_EVENTS, self.mouseAction)

            self.vol5 = PlayerButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Video',
                             'Images'), 'vol5')
            self.vol5.Bind(wx.EVT_MOUSE_EVENTS, self.mouseAction)

            self.vol6 = PlayerButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Video',
                             'Images'), 'vol6')
            self.vol6.Bind(wx.EVT_MOUSE_EVENTS, self.mouseAction)

            volumebox.Add(self.vol1, 0, wx.ALIGN_CENTER_VERTICAL)
            volumebox.Add(self.vol2, 0, wx.ALIGN_CENTER_VERTICAL)
            volumebox.Add(self.vol3, 0, wx.ALIGN_CENTER_VERTICAL)
            volumebox.Add(self.vol4, 0, wx.ALIGN_CENTER_VERTICAL)
            volumebox.Add(self.vol5, 0, wx.ALIGN_CENTER_VERTICAL)
            volumebox.Add(self.vol6, 0, wx.ALIGN_CENTER_VERTICAL)
            self.updateVol(self.volume)

            self.fsbtn = PlayerButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Video',
                             'Images'), 'fullScreen')
            self.fsbtn.Bind(wx.EVT_LEFT_UP, self.FullScreen)
            self.fsbtn.setSelected(2)

            self.ctrlsizer.Add(self.ppbtn, 0, wx.ALIGN_CENTER_VERTICAL)
            self.ctrlsizer.Add(self.sbtn, 0, wx.ALIGN_CENTER_VERTICAL)
            self.ctrlsizer.Add(self.slider, 1,
                               wx.ALIGN_CENTER_VERTICAL | wx.EXPAND)

            self.ctrlsizer.Add(self.mute, 0,
                               wx.ALIGN_CENTER_VERTICAL | wx.EXPAND)
            self.ctrlsizer.Add(volumebox, 0,
                               wx.ALIGN_CENTER_VERTICAL | wx.EXPAND)
            self.ctrlsizer.Add(self.fsbtn, 0, wx.ALIGN_CENTER_VERTICAL)

            mainbox.Add(self.ctrlsizer, 0,
                        wx.ALIGN_BOTTOM | wx.EXPAND | wx.LEFT | wx.RIGHT, 3)
            if border:
                self.vlcwin.Show(False)
                self.ctrlsizer.ShowItems(False)

        # Arno: until we figure out how to show in-playback prebuffering info
        self.statuslabel = wx.StaticText(self)
        vSizer.Add(self.statuslabel, 0, wx.EXPAND)
        self.SetSizer(vSizer)

        self.playtimer = None
        self.update = False
        self.timer = None
    def __init__(self, parent, utility, vlcwrap, logopath):
        wx.Panel.__init__(self, parent, -1)
        self.utility = utility

        self.estduration = None

        #self.SetBackgroundColour(wx.WHITE)
        self.SetBackgroundColour(wx.BLACK)
        mainbox = wx.BoxSizer(wx.VERTICAL)

        if vlcwrap is None:
            size = (320, 64)
        else:
            size = (320, 240)

        self.vlcwin = VLCLogoWindow(self,
                                    size,
                                    vlcwrap,
                                    logopath,
                                    animate=False)
        self.vlcwrap = vlcwrap

        # Arno: until we figure out how to show in-playback prebuffering info
        self.statuslabel = wx.StaticText(self, -1, 'Loading player...')
        self.statuslabel.SetForegroundColour(wx.WHITE)

        if vlcwrap is not None:
            ctrlsizer = wx.BoxSizer(wx.HORIZONTAL)
            #self.slider = wx.Slider(self, -1)
            self.slider = ProgressSlider(self,
                                         self.utility,
                                         imgprefix='4frame')
            self.slider.SetRange(0, 1)
            self.slider.SetValue(0)
            self.oldvolume = None

            self.ppbtn = PlayerSwitchButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Images'),
                'pause', 'play')
            self.ppbtn.Bind(wx.EVT_LEFT_UP, self.PlayPause)

            self.volumebox = wx.BoxSizer(wx.HORIZONTAL)
            self.volumeicon = PlayerSwitchButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Images'),
                'volume', 'mute')
            self.volumeicon.Bind(wx.EVT_LEFT_UP, self.Mute)
            self.volume = VolumeSlider(self, self.utility, imgprefix='4frame')
            self.volume.SetRange(0, 100)
            self.volumebox.Add(self.volumeicon, 0, wx.ALIGN_CENTER_VERTICAL)
            self.volumebox.Add(self.volume, 0, wx.ALIGN_CENTER_VERTICAL, 0)

            self.fsbtn = PlayerButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Images'),
                'fullScreen')
            self.fsbtn.Bind(wx.EVT_LEFT_UP, self.FullScreen)

            self.save_button = PlayerSwitchButton(
                self,
                os.path.join(self.utility.getPath(), LIBRARYNAME, 'Images'),
                'saveDisabled', 'save')
            self.save_button.Bind(wx.EVT_LEFT_UP, self.Save)
            self.save_callback = lambda: None

            ctrlsizer.Add(self.ppbtn, 0, wx.ALIGN_CENTER_VERTICAL)
            ctrlsizer.Add(self.slider, 1, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND)
            ctrlsizer.Add(self.volumebox, 0,
                          wx.ALIGN_CENTER_VERTICAL | wx.EXPAND)
            ctrlsizer.Add(self.fsbtn, 0, wx.ALIGN_CENTER_VERTICAL)
            ctrlsizer.Add(self.save_button, 0, wx.ALIGN_CENTER_VERTICAL)

        mainbox.Add(self.vlcwin, 1, wx.EXPAND, 1)
        mainbox.Add(self.statuslabel, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 30)
        if vlcwrap is not None:
            mainbox.Add(ctrlsizer, 0, wx.ALIGN_BOTTOM | wx.EXPAND, 1)
        self.SetSizerAndFit(mainbox)

        self.playtimer = None
        self.update = False
        self.timer = None