Sha256: 8030d245c9e96ccaeded51c538ff244c5a70f4f95ee79ab9e0be722a876848a0

Contents?: true

Size: 1.59 KB

Versions: 4

Compression:

Stored size: 1.59 KB

Contents

require 'rabbit/gtk'

require 'rabbit/renderer/color'

module Rabbit
  module Graffiti
    class ConfigDialog
      include GetText

      def initialize(color, line_width)
        @original_color = color
        @original_line_width = line_width
      end

      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
      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

      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
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rabbit-3.0.3 lib/rabbit/graffiti/config-dialog.rb
rabbit-3.0.2 lib/rabbit/graffiti/config-dialog.rb
rabbit-3.0.1 lib/rabbit/graffiti/config-dialog.rb
rabbit-3.0.0 lib/rabbit/graffiti/config-dialog.rb