class MoviePlayer
Public Class Methods
new(parent = nil)
click to toggle source
Calls superclass method
# File examples/widgets/movie/movieplayer.rb, line 36 def initialize(parent = nil) super(parent) @movie = Qt::Movie.new(self) @movie.cacheMode = Qt::Movie::CacheAll @movieLabel = Qt::Label.new(tr("No movie loaded")) do |m| m.alignment = Qt::AlignCenter m.setSizePolicy(Qt::SizePolicy::Ignored, Qt::SizePolicy::Ignored) m.backgroundRole = Qt::Palette::Dark m.autoFillBackground = true end @currentMovieDirectory = "@movies" createControls() createButtons() connect(@movie, SIGNAL('frameChanged(int)'), self, SLOT('updateFrameSlider()')) connect(@movie, SIGNAL('stateChanged(QMovie::MovieState)'), self, SLOT('updateButtons()')) connect(@fitCheckBox, SIGNAL('clicked()'), self, SLOT('fitToWindow()')) connect(@frameSlider, SIGNAL('valueChanged(int)'), self, SLOT('goToFrame(int)')) connect(@speedSpinBox, SIGNAL('valueChanged(int)'), @movie, SLOT('setSpeed(int)')) self.layout = Qt::VBoxLayout.new do |m| m.addWidget(@movieLabel) m.addLayout(@controlsLayout) m.addLayout(@buttonsLayout) end updateFrameSlider() updateButtons() setWindowTitle(tr("Movie Player")) resize(400, 400) end
Public Instance Methods
createButtons()
click to toggle source
# File examples/widgets/movie/movieplayer.rb, line 152 def createButtons() iconSize = Qt::Size.new(36, 36) @openButton = Qt::ToolButton.new do |o| o.icon = Qt::Icon.new("images/open.png") o.iconSize = iconSize o.toolTip = tr("Open File") end connect(@openButton, SIGNAL('clicked()'), self, SLOT('open()')) @playButton = Qt::ToolButton.new do |p| p.icon = Qt::Icon.new("images/play.png") p.iconSize = iconSize p.toolTip = tr("Play") end connect(@playButton, SIGNAL('clicked()'), @movie, SLOT('start()')) @pauseButton = Qt::ToolButton.new do |p| p.checkable = true p.icon = Qt::Icon.new("images/pause.png") p.iconSize = iconSize p.toolTip = tr("Pause") end connect(@pauseButton, SIGNAL('clicked(bool)'), @movie, SLOT('setPaused(bool)')) @stopButton = Qt::ToolButton.new do |s| s.icon = Qt::Icon.new("images/stop.png") s.iconSize = iconSize s.toolTip = tr("Stop") end connect(@stopButton, SIGNAL('clicked()'), @movie, SLOT('stop()')) @quitButton = Qt::ToolButton.new do |q| q.icon = Qt::Icon.new("images/quit.png") q.iconSize = iconSize q.toolTip = tr("Quit") end connect(@quitButton, SIGNAL('clicked()'), self, SLOT('close()')) @buttonsLayout = Qt::HBoxLayout.new do |b| b.addStretch() b.addWidget(@openButton) b.addWidget(@playButton) b.addWidget(@pauseButton) b.addWidget(@stopButton) b.addWidget(@quitButton) b.addStretch() end end
createControls()
click to toggle source
# File examples/widgets/movie/movieplayer.rb, line 125 def createControls() @fitCheckBox = Qt::CheckBox.new(tr("Fit to Window")) @frameLabel = Qt::Label.new(tr("Current frame:")) @frameSlider = Qt::Slider.new(Qt::Horizontal) do |f| f.tickPosition = Qt::Slider::TicksBelow f.tickInterval = 10 end @speedLabel = Qt::Label.new(tr("Speed:")) @speedSpinBox = Qt::SpinBox.new do |s| s.range = 1..9999 s.value = 100 s.suffix = tr("%") end @controlsLayout = Qt::GridLayout.new do |c| c.addWidget(@fitCheckBox, 0, 0, 1, 2) c.addWidget(@frameLabel, 1, 0) c.addWidget(@frameSlider, 1, 1, 1, 2) c.addWidget(@speedLabel, 2, 0) c.addWidget(@speedSpinBox, 2, 1) end end
fitToWindow()
click to toggle source
# File examples/widgets/movie/movieplayer.rb, line 94 def fitToWindow() @movieLabel.scaledContents = @fitCheckBox.checked? end
goToFrame(frame)
click to toggle source
# File examples/widgets/movie/movieplayer.rb, line 90 def goToFrame(frame) @movie.jumpToFrame(frame) end
open()
click to toggle source
# File examples/widgets/movie/movieplayer.rb, line 74 def open() fileName = Qt::FileDialog.getOpenFileName(self, tr("Open a Movie"), @currentMovieDirectory) if !fileName.empty? @currentMovieDirectory = Qt::FileInfo.new(fileName).path() @movie.stop() @movieLabel.movie = @movie @movie.fileName = fileName @movie.start() updateFrameSlider() updateButtons() end end
updateButtons()
click to toggle source
# File examples/widgets/movie/movieplayer.rb, line 117 def updateButtons() @playButton.enabled = @movie.valid? && @movie.frameCount != 1 && @movie.state == Qt::Movie::NotRunning @pauseButton.enabled = @movie.state != Qt::Movie::NotRunning @pauseButton.checked = @movie.state == Qt::Movie::Paused @stopButton.enabled = @movie.state != Qt::Movie::NotRunning end
updateFrameSlider()
click to toggle source
# File examples/widgets/movie/movieplayer.rb, line 98 def updateFrameSlider() hasFrames = (@movie.currentFrameNumber() >= 0) if hasFrames if @movie.frameCount > 0 @frameSlider.maximum = @movie.frameCount - 1 else if @movie.currentFrameNumber > @frameSlider.maximum @frameSlider.maximum = @movie.currentFrameNumber end end @frameSlider.value = @movie.currentFrameNumber else @frameSlider.maximum = 0 end @frameLabel.enabled = hasFrames @frameSlider.enabled = hasFrames end