class MittensUi::Application

Public Class Methods

Window(options = {}, &block) click to toggle source
# File lib/mittens_ui.rb, line 27
def Window(options = {}, &block)
  init_gtk_application(options, &block)
end
exit() { || ... } click to toggle source
# File lib/mittens_ui.rb, line 31
def exit(&block)
  begin
    yield if block_given?
    Kernel.exit(0)
  rescue => _error
    Kernel.exit(1)
  end
end

Private Class Methods

init_gtk_application(options) { |$app_window, $vertical_box| ... } click to toggle source
# File lib/mittens_ui.rb, line 48
def init_gtk_application(options, &block)
  app_name    = options[:name].nil?       ? "mittens_ui_app" : options[:name]
  height      = options[:height].nil?     ? 600 : options[:height]
  width       = options[:width].nil?      ? 400 : options[:width]
  title       = options[:title].nil?      ? "Mittens App" : options[:title]
  can_resize  = options[:can_resize].nil? ? true : options[:can_resize]

  app_assets_path = File.join(File.expand_path(File.dirname(__FILE__)), "mittens_ui", "assets") + "/"
  default_icon = app_assets_path + "icon.png"
  
  app_icon = options[:icon].nil? ? default_icon : options[:icon]

  set_process_name(app_name)

  gtk_app_name = "org.mittens_ui.#{app_name}"

  app = Gtk::Application.new(gtk_app_name, :flags_none)

  app.signal_connect("activate") do |application|
    $app_window = Gtk::ApplicationWindow.new(application)
    scrolled_window = Gtk::ScrolledWindow.new
    $vertical_box = Gtk::Box.new(:vertical, 10)
    scrolled_window.add($vertical_box)
    $app_window.add(scrolled_window)
    yield($app_window, $vertical_box)
    $app_window.set_size_request(width, height)
    $app_window.set_title(title)
    $app_window.set_resizable(can_resize)
    $app_window.set_icon_from_file(app_icon)
    $app_window.show_all
  end

  app.run
end
set_process_name(name) click to toggle source
# File lib/mittens_ui.rb, line 42
def set_process_name(name)
  Process.setproctitle(name)
  $PROGRAM_NAME = name
  $0 = name
end