Class: Mireru::Widget

Inherits:
Object
  • Object
show all
Defined in:
lib/mireru/widget.rb

Class Method Summary collapse

Class Method Details

.create(file, width = 10000, height = 10000) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/mireru/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 = Mireru::Video.create(file)
  else
    begin
      buffer = buffer_from_file(file)
    rescue Mireru::Error
      return sorry
    end
    view = GtkSource::View.new(buffer)
    view.show_line_numbers = true
    lang = GtkSource::LanguageManager.new.get_language("ruby")
    view.buffer.language = lang
    view.buffer.highlight_syntax = true
    view.buffer.highlight_matching_brackets = true
    view.editable = false
    view.override_font(Pango::FontDescription.new("Monospace"))
    widget = view
  end
  widget
end

.image?(file) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/mireru/widget.rb', line 41

def image?(file)
  /\.(png|jpe?g|gif|ico|ani|bmp|pnm|ras|tga|tiff|xbm|xpm)\z/i =~ file
end

.video?(file) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/mireru/widget.rb', line 45

def video?(file)
  /\.(ogm|mp4|flv|mpe?g2?|ts|mov|avi|divx|mkv|wmv|asf|wmx)\z/i =~ file
end