Sha256: d095efdb551bf4e5f7341bbe8e0e48db8d1ccdc0ee4b5fc580b4a44ba7476939

Contents?: true

Size: 1.68 KB

Versions: 29

Compression:

Stored size: 1.68 KB

Contents

require 'gtk2'

require 'rabbit/renderer/color'

module Rabbit
  module Graffiti
    class ConfigDialog
      attr_reader :color, :line_width
      def initialize(color, line_width)
        @original_color = @color = color
        @original_line_width = @line_width = line_width
      end

      def run(&block)
        @callback = block
        init_dialog
        if @dialog.run != Gtk::Dialog::RESPONSE_OK
          @callback.call(@original_color, @original_line_width)
        end
        @dialog.destroy
      end

      private
      def init_dialog
        @dialog = Gtk::ColorSelectionDialog.new
        colorsel = @dialog.colorsel
        colorsel.has_opacity_control = true
        colorsel.has_palette = true
        r, g, b, a = @original_color.to_gdk_rgba
        colorsel.set_current_color(Gdk::Color.new(r, g, b))
        colorsel.set_current_alpha(a)
        add_line_width_control
        colorsel.signal_connect("color_changed") do
          color = Renderer::Color.new_from_gdk_color(colorsel.current_color)
          color.have_alpha = true
          alpha = colorsel.current_alpha / Renderer::Color::GDK_COLOR_NORMALIZE
          color.alpha = alpha
          @callback.call(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::HBox.new
        hbox.pack_end(spin, false, false, 5)
        hbox.pack_end(label, false, false, 5)
        hbox.show_all
        @dialog.vbox.pack_end(hbox, false, false, 5)
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
rabbit-2.1.1 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.1.0 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.9 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.8 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.7 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.6 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.5 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.4 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.3 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.2 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.1 lib/rabbit/graffiti/config-dialog.rb
rabbit-2.0.0 lib/rabbit/graffiti/config-dialog.rb
rabbit-1.0.9 lib/rabbit/graffiti/config-dialog.rb
rabbit-1.0.8 lib/rabbit/graffiti/config-dialog.rb
rabbit-1.0.7 lib/rabbit/graffiti/config-dialog.rb
rabbit-1.0.6 lib/rabbit/graffiti/config-dialog.rb
rabbit-1.0.5 lib/rabbit/graffiti/config-dialog.rb
rabbit-1.0.4 lib/rabbit/graffiti/config-dialog.rb
rabbit-1.0.3 lib/rabbit/graffiti/config-dialog.rb
rabbit-1.0.2 lib/rabbit/graffiti/config-dialog.rb