class Rabbit::Graffiti::ConfigDialog

Public Class Methods

new(color, line_width) click to toggle source
# File lib/rabbit/graffiti/config-dialog.rb, line 10
def initialize(color, line_width)
  @original_color = color
  @original_line_width = line_width
end

Public Instance Methods

run(&block) click to toggle source
# File lib/rabbit/graffiti/config-dialog.rb, line 15
def run(&block)
  @callback = block
  init_dialog
  if @dialog.run == Gtk::ResponseType::OK
    @callback.call(Renderer::Color.new(@dialog.rgba),
                   nil)
  else
    @callback.call(@original_color, @original_line_width)
  end
  @dialog.destroy
end

Private Instance Methods

add_line_width_control() click to toggle source
# File lib/rabbit/graffiti/config-dialog.rb, line 38
def add_line_width_control
  spin = Gtk::SpinButton.new(1, 72, 1)
  spin.value = @original_line_width
  spin.signal_connect("value_changed") do
    @callback.call(nil, spin.value)
  end
  label = Gtk::Label.new(_("Line width:"))
  hbox = Gtk::Box.new(:horizontal)
  hbox.pack_end(spin, :expand => false, :fill => false, :padding => 5)
  hbox.pack_end(label, :expand => false, :fill => false, :padding => 5)
  hbox.show_all
  @dialog.child.pack_end(hbox,
                         :expand => false,
                         :fill => false,
                         :padding => 5)
end
init_dialog() click to toggle source
# File lib/rabbit/graffiti/config-dialog.rb, line 28
def init_dialog
  @dialog = Gtk::ColorChooserDialog.new
  @dialog.use_alpha = true
  @dialog.rgba = @original_color.to_gdk_rgba
  add_line_width_control
  @dialog.signal_connect(:color_activated) do |gdk_color|
    @callback.call(Renderer::Color.new(gdk_color), nil)
  end
end