Sha256: a2ab65eb2e81ac678e90a7bd6e8b82ad0469eb9bf742db6e8f27b110b5e566b2

Contents?: true

Size: 1.19 KB

Versions: 4

Compression:

Stored size: 1.19 KB

Contents

require "gtk3"
require "mireru/widget"

module Mireru
  class Thumbnail
    class << self
      def create(files, width, height)
        nums_in_a_row = Math.sqrt(files.size)
        rows = Gtk::Box.new(:vertical)
        files.each_slice(nums_in_a_row) do |a_row_files|
          row = Gtk::Box.new(:horizontal)
          a_row_files.each do |file|
            cell_width  = width  / nums_in_a_row
            cell_height = height / nums_in_a_row
            if Widget.image?(file)
              image = image_from_file(file, cell_width, cell_height)
              row.add(image)
            else
              label = label_from_file(file, cell_width, cell_height)
              row.add(label)
            end
          end
          rows.add(row)
        end
        rows
      end

      private
      def image_from_file(file, width=100, height=100)
        image = Gtk::Image.new
        pixbuf = Gdk::Pixbuf.new(file, width, height)
        image.pixbuf = pixbuf
        image
      end

      def label_from_file(file, width=100, height=100)
        label = Gtk::Label.new(File.basename(file))
        label.set_size_request(width, height)
        label.wrap = true
        label
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mireru-0.1.8 lib/mireru/thumbnail.rb
mireru-0.1.7 lib/mireru/thumbnail.rb
mireru-0.1.6 lib/mireru/thumbnail.rb
mireru-0.1.5 lib/mireru/thumbnail.rb