Sha256: 21959412335beb578c6c109064ba1c41f60d6e81688e151d51ad522373c0e4ae

Contents?: true

Size: 1.4 KB

Versions: 32

Compression:

Stored size: 1.4 KB

Contents

require 'gtk2'

module Rabbit
  class Progress
    attr_reader :window, :foreground, :background
    def initialize
      @window = Gtk::Window.new(Gtk::Window::POPUP)
      @window.app_paintable = true
      @bar = Gtk::ProgressBar.new
      @bar.show_text = true
      @window.add(@bar)
      @original_style = @bar.style
      @foreground = nil
      @background = nil
    end

    def foreground=(color)
      @foreground = color
      setup_progress_color
    end

    def background=(color)
      @background = color
      setup_progress_color
    end

    def clear_color
      @foreground = nil
      @background = nil
      setup_progress_color
    end

    def start_progress(max, parent)
      return if max.zero?
      @window.transient_for = parent
      @window.show_all
      @bar.fraction = @current = 0
      @max = max.to_f
    end

    def update_progress(i)
      return if @max.nil?
      @current = i
      @bar.fraction = @current / @max
    end

    def end_progress
      return if @max.nil?
      @current = @max
      @bar.fraction = @current / @max
    end

    private
    def setup_progress_color
      style = @original_style.copy
      if @foreground
        rgb = @foreground.to_gdk_rgb
        style.set_bg(Gtk::STATE_PRELIGHT, *rgb)
      end
      if @background
        rgb = @background.to_gdk_rgb
        style.set_bg(Gtk::STATE_NORMAL, *rgb)
      end
      @bar.style = style
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
rabbit-2.1.4 lib/rabbit/progress.rb
rabbit-2.1.3 lib/rabbit/progress.rb
rabbit-2.1.2 lib/rabbit/progress.rb
rabbit-2.1.1 lib/rabbit/progress.rb
rabbit-2.1.0 lib/rabbit/progress.rb
rabbit-2.0.9 lib/rabbit/progress.rb
rabbit-2.0.8 lib/rabbit/progress.rb
rabbit-2.0.7 lib/rabbit/progress.rb
rabbit-2.0.6 lib/rabbit/progress.rb
rabbit-2.0.5 lib/rabbit/progress.rb
rabbit-2.0.4 lib/rabbit/progress.rb
rabbit-2.0.3 lib/rabbit/progress.rb
rabbit-2.0.2 lib/rabbit/progress.rb
rabbit-2.0.1 lib/rabbit/progress.rb
rabbit-2.0.0 lib/rabbit/progress.rb
rabbit-1.0.9 lib/rabbit/progress.rb
rabbit-1.0.8 lib/rabbit/progress.rb
rabbit-1.0.7 lib/rabbit/progress.rb
rabbit-1.0.6 lib/rabbit/progress.rb
rabbit-1.0.5 lib/rabbit/progress.rb