# File gtk/sample/gtk-demo/drawingarea.rb, line 25
    def initialize
      # Pixmap for scribble area, to store current scribbles
      @pixmap = nil
      super('Drawing Area')

      self.border_width = 8

      vbox = Gtk::VBox.new(false, 8)
      vbox.border_width = 8
      add(vbox)

      
      ## Create the checkerboard area
      label = Gtk::Label.new
      label.set_markup('<u>Checkerboard pattern</u>')
      vbox.pack_start(label, false, false, 0)
      
      frame = Gtk::Frame.new
      frame.shadow_type = Gtk::SHADOW_IN
      vbox.pack_start(frame, true, true, 0)
      
      da = Gtk::DrawingArea.new
      # set a minimum size
      da.set_size_request(100, 100)

      frame.add(da)

      da.signal_connect('expose_event') do |widget, event|
        checkerboard_expose(widget)
      end

      ## Create the scribble area
      label = Gtk::Label.new
      label.set_markup('<u>Scribble area</u>')
      vbox.pack_start(label, false, false, 0)
      
      frame = Gtk::Frame.new
      frame.shadow_type = Gtk::SHADOW_IN
      vbox.pack_start(frame, true, true, 0)
      
      da = Gtk::DrawingArea.new
      # set a minimum size
      da.set_size_request(100, 100)

      frame.add(da)

      # Signals used to handle backing pixmap
      da.signal_connect('expose_event') do |*args|
        scribble_expose_event(*args)
      end
      da.signal_connect('configure_event') do |widget, event|
        scribble_configure_event(widget)
      end
      
      # Event signals
      da.signal_connect('motion_notify_event') do |*args|
        scribble_motion_notify_event(*args)
      end
      da.signal_connect('button_press_event') do |*args|
        scribble_button_press_event(*args)
      end
      
      # Ask to receive events the drawing area doesn't normally
      # subscribe to
      da.events |= (Gdk::Event::LEAVE_NOTIFY_MASK |
                    Gdk::Event::BUTTON_PRESS_MASK |
                    Gdk::Event::POINTER_MOTION_MASK |
                    Gdk::Event::POINTER_MOTION_HINT_MASK)
    end