class Mireru2::Widget

Public Class Methods

create(file, width=10000, height=10000) click to toggle source
# File lib/mireru2/widget.rb, line 11
def create(file, width=10000, height=10000)
  if image?(file)
    image = Gtk::Image.new
    pixbuf = Gdk::Pixbuf.new(file)
    if pixbuf.width > width || pixbuf.height > height
      pixbuf = Gdk::Pixbuf.new(file, width, height)
    end
    image.pixbuf = pixbuf
    widget = image
  elsif video?(file)
    widget = Mireru2::Video.create(file)
  else
    begin
      buffer = buffer_from_file(file)
    rescue Mireru2::Error
      return sorry
    end
    view = Gtk::SourceView.new(buffer)
    view.show_line_numbers = true
    lang = Gtk::SourceLanguageManager.new.get_language("ruby")
    view.buffer.language = lang
    view.buffer.highlight_syntax = true
    view.buffer.highlight_matching_brackets = true
    view.editable = false
    # TODO: NoMethodError
    #view.override_font(Pango::FontDescription.new("Monospace"))
    widget = view
  end
  widget
end
image?(file) click to toggle source
# File lib/mireru2/widget.rb, line 42
def image?(file)
  /\.(png|jpe?g|gif|ico|ani|bmp|pnm|ras|tga|tiff|xbm|xpm)\z/i =~ file
end
video?(file) click to toggle source
# File lib/mireru2/widget.rb, line 46
def video?(file)
  /\.(ogm|mp4|flv|mpe?g2?|ts|mov|avi|divx|mkv|wmv|asf|wmx)\z/i =~ file
end

Private Class Methods

buffer_from_file(file) click to toggle source
# File lib/mireru2/widget.rb, line 51
def buffer_from_file(file)
  text = File.open(file).read
  buffer_from_text(text)
end
buffer_from_text(text) click to toggle source
# File lib/mireru2/widget.rb, line 56
def buffer_from_text(text)
  raise Mireru2::Error unless text.valid_encoding?
  text.encode!("utf-8") unless text.encoding == "utf-8"
  buffer = Gtk::SourceBuffer.new
  buffer.text = text
  buffer
end
sorry() click to toggle source
# File lib/mireru2/widget.rb, line 64
def sorry
  image = Gtk::Image.new
  base_dir = File.join(File.dirname(__FILE__), "..", "..")
  images_dir = File.join(base_dir, "images")
  image_path = File.expand_path(File.join(images_dir, "sorry.png"))
  image.file = image_path
  image
end