Sha256: bc4ba4375e7f1f0c833b870a3e1268cb7afac03c363a3baa8396f5975d540ad3

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

require "clutter-gtk"
require "clutter-gst"
require "mireru/widget"

module Mireru
  class Video
    class << self
      def create(file)
        clutter = ClutterGtk::Embed.new
        stage = clutter.stage
        stage.background_color = Clutter::Color.new(:black)
        video_texture = ClutterGst::VideoTexture.new
        stage.add_child(video_texture)
        video_texture.signal_connect("eos") do |_video_texture|
          _video_texture.progress = 0.0
          _video_texture.playing = true
        end
        video_texture.filename = file
        video_texture.playing = true
        define_events(stage, video_texture)
        clutter.signal_connect("destroy") do
          video_texture.playing = false
        end
        clutter
      end

      def define_events(stage, video_texture)
        stage.signal_connect("event") do |_stage, event|
          handled = false

          case event.type
          when Clutter::EventType::KEY_PRESS
            animation = nil
            case event.key_symbol
            when Clutter::Keys::KEY_space
              state = video_texture.playing?
              video_texture.playing = state ? false : true
            end
            handled = true
          end

          handled
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mireru-0.1.8 lib/mireru/video.rb
mireru-0.1.7 lib/mireru/video.rb
mireru-0.1.6 lib/mireru/video.rb