class Phew::Application

Main Phew application.

Public Class Methods

new(gtk_application) click to toggle source
# File lib/phew/application.rb, line 12
def initialize(gtk_application)
  @gtk_application = gtk_application
  @context = Gdk.pango_context_get
  @font_repository = FontRepository.new @context
  connect_signals
end

Public Instance Methods

present() click to toggle source
# File lib/phew/application.rb, line 19
def present
  win.show_all
  win.children.first.visible = false if win.show_menubar
  win.present
end

Private Instance Methods

build_vbox() click to toggle source
# File lib/phew/application.rb, line 35
def build_vbox
  vbox = Gtk::VBox.new false, 0

  vbox.pack_start combo, false, false, 0
  vbox.pack_start textview, false, false, 0
  vbox.pack_start script_list_scroller, true, true, 0
  vbox
end
build_win() click to toggle source
# File lib/phew/application.rb, line 72
def build_win
  win = Gtk::ApplicationWindow.new @gtk_application
  win.add vbox
  win
end
combo() click to toggle source
# File lib/phew/application.rb, line 27
def combo
  @combo ||= ScriptList.new.tap(&:fill)
end
connect_signals() click to toggle source

Set up all signal handlers

# File lib/phew/application.rb, line 83
def connect_signals
  combo.signal_connect("changed") { on_combo_changed_signal }
end
fill_font_list(script) click to toggle source
# File lib/phew/application.rb, line 94
def fill_font_list(script)
  scriptmodel.clear

  font_families.each do |fam|
    font = @font_repository.get_font fam.name

    if sample_coverage(font, script) == :exact
      row = scriptmodel.append
      scriptmodel.set_value row, 0, fam.name
    end
  end
end
font_families() click to toggle source
# File lib/phew/application.rb, line 112
def font_families
  fontmap = @context.get_font_map

  fontmap.list_families
end
on_combo_changed_signal() click to toggle source
# File lib/phew/application.rb, line 87
def on_combo_changed_signal
  script = Script.new combo.active_text.to_sym
  # FIXME: Add override for Gtk::TextBuffer.set_text so #text= works properly
  textview.buffer.set_text script.sample_string, -1
  fill_font_list script
end
sample_coverage(font, script) click to toggle source
# File lib/phew/application.rb, line 107
def sample_coverage(font, script)
  sample_cov = font.coverage_summary script.sample_string
  [:none, :fallback, :approximate, :exact].max_by { |i| sample_cov[i] }
end
script_list() click to toggle source
# File lib/phew/application.rb, line 57
def script_list
  @script_list ||= Gtk::TreeView.new_with_model(scriptmodel).tap do |view|
    renderer = Gtk::CellRendererText.new
    col = Gtk::TreeViewColumn.new
    col.set_title "Font Name"
    col.pack_start renderer, true
    col.add_attribute renderer, "text", 0
    view.append_column col
  end
end
script_list_scroller() click to toggle source
# File lib/phew/application.rb, line 48
def script_list_scroller
  @script_list_scroller ||= Gtk::ScrolledWindow.new(nil, nil).tap do |scr|
    lst = script_list
    scr.add lst
    lst.hadjustment = scr.hadjustment
    lst.vadjustment = scr.vadjustment
  end
end
scriptmodel() click to toggle source
# File lib/phew/application.rb, line 68
def scriptmodel
  @scriptmodel ||= Gtk::ListStore.new [GObject::TYPE_STRING]
end
textview() click to toggle source
# File lib/phew/application.rb, line 31
def textview
  @textview ||= Gtk::TextView.new
end
vbox() click to toggle source
# File lib/phew/application.rb, line 44
def vbox
  @vbox ||= build_vbox
end
win() click to toggle source
# File lib/phew/application.rb, line 78
def win
  @win ||= build_win
end