Sha256: d6bc4aea4911e9eeb3cb72cbb91a45908a855348cc0fefb6982e93473a2fbc0a

Contents?: true

Size: 1.87 KB

Versions: 14

Compression:

Stored size: 1.87 KB

Contents

=begin
  common.rb - Common class for gtk-demo.

  Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
  This program is licenced under the same licence as Ruby-GNOME2.

  $Id: common.rb,v 1.9 2005/10/15 03:41:36 mutoh Exp $
=end

require 'gtk3'

module Demo
  def self.find_file(basename)
    %w(. /usr/share/gtk-3.0/demo /usr/local/share/gtk-3.0/demo/).each do |dirname|
      path = File.join(dirname, basename)
      if File.exist?(path)
	return path
      end
    end

    raise "#{basename}: No such file or directory"
  end

  class BasicWindow < Gtk::Window
    def initialize(title = nil)
      super(Gtk::Window::TOPLEVEL)
      if title
	set_title("#{title} in Ruby/GTK")
      end

      signal_connect("key_press_event") do |widget, event|
        if event.state.control_mask? and event.keyval == Gdk::Keyval::GDK_q
          destroy
          true
        else
          false
        end
      end

      signal_connect("delete_event") do |widget, event|
	quit
      end
    end

    def quit
      destroy
      true
    end
  end

  class CairoWindow < BasicWindow

    def initialize(title=nil)
      super
      
      unless Gdk.cairo_available?
        add_cairo_require_label
        return
      end

      drawing_area = Gtk::DrawingArea.new
      add(drawing_area)

      drawing_area.signal_connect("expose_event") do |widget, event|
        cr = widget.window.create_cairo_context
        cr.scale(*widget.window.size)
        cr.set_line_width(0.04)

        cr.save do
          cr.set_source_color(Gdk::Color.new(65535, 65535, 65535))
          cr.gdk_rectangle(Gdk::Rectangle.new(0, 0, 1, 1))
          cr.fill
        end
        
        draw(cr)
      end
    end
    
    def add_cairo_require_label
      message = "This sample requires GTK+ 2.8.0 or later and cairo support"
      add(Gtk::Label.new(message))
    end

    def draw(cr)
      raise "not implemented"
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
gtk3-1.2.6-x86-mingw32 sample/gtk-demo/common.rb
gtk3-1.2.6 sample/gtk-demo/common.rb
gtk3-1.2.5-x86-mingw32 sample/gtk-demo/common.rb
gtk3-1.2.5 sample/gtk-demo/common.rb
gtk3-1.2.4-x86-mingw32 sample/gtk-demo/common.rb
gtk3-1.2.4 sample/gtk-demo/common.rb
gtk3-1.2.3-x86-mingw32 sample/gtk-demo/common.rb
gtk3-1.2.3 sample/gtk-demo/common.rb
gtk3-1.2.2-x86-mingw32 sample/gtk-demo/common.rb
gtk3-1.2.2 sample/gtk-demo/common.rb
gtk3-1.2.1-x86-mingw32 sample/gtk-demo/common.rb
gtk3-1.2.1 sample/gtk-demo/common.rb
gtk3-1.2.0-x86-mingw32 sample/gtk-demo/common.rb
gtk3-1.2.0 sample/gtk-demo/common.rb