Sha256: 70f8d191fc14818bbdef5d6a5bd1b7dcfe1e2c5c535ce71e580e71a8d64dd2df

Contents?: true

Size: 1.52 KB

Versions: 100

Compression:

Stored size: 1.52 KB

Contents

require 'fox16'

include Fox

class DropSite < FXMainWindow

  def initialize(anApp)
    # Initialize base class
    super(anApp, "Drop Site", :opts => DECOR_ALL, :width => 400, :height => 300)

    # Fill main window with canvas
    @canvas = FXCanvas.new(self, :opts => LAYOUT_FILL_X|LAYOUT_FILL_Y)

    # Handle expose events on the canvas
    @canvas.connect(SEL_PAINT) do |sender, sel, event|
      FXDCWindow.new(@canvas, event) do |dc|
        dc.foreground = @canvas.backColor
        dc.fillRectangle(event.rect.x, event.rect.y, event.rect.w, event.rect.h)
      end
    end

    # Enable canvas for drag-and-drop messages
    @canvas.dropEnable

    # Handle SEL_DND_MOTION messages from the canvas
    @canvas.connect(SEL_DND_MOTION) do
      @canvas.acceptDrop if @canvas.offeredDNDType?(FROM_DRAGNDROP, FXWindow.colorType)
    end

    # Handle SEL_DND_DROP message from the canvas
    @canvas.connect(SEL_DND_DROP) do
      # Try to obtain the data as color values first
      data = @canvas.getDNDData(FROM_DRAGNDROP, FXWindow.colorType)

      # Update canvas background color
      @canvas.backColor = Fox.fxdecodeColorData(data) unless data.nil?
    end
  end

  def create
    # Create the main window and canvas
    super

    # Register the drag type for colors
    FXWindow.colorType = getApp().registerDragType(FXWindow.colorTypeName)

    # Show the main window
    show(PLACEMENT_SCREEN)
  end
end

if __FILE__ == $0
  FXApp.new("DropSite", "FXRuby") do |theApp|
    DropSite.new(theApp)
    theApp.create
    theApp.run
  end
end

Version data entries

100 entries across 100 versions & 1 rubygems

Version Path
fxruby-1.6.48 examples/dropsite.rb
fxruby-1.6.48-x64-mingw32 examples/dropsite.rb
fxruby-1.6.48-x64-mingw-ucrt examples/dropsite.rb
fxruby-1.6.48-x86-mingw32 examples/dropsite.rb
fxruby-1.6.47 examples/dropsite.rb
fxruby-1.6.47-x64-mingw-ucrt examples/dropsite.rb
fxruby-1.6.47-x64-mingw32 examples/dropsite.rb
fxruby-1.6.47-x86-mingw32 examples/dropsite.rb
fxruby-1.6.46 examples/dropsite.rb
fxruby-1.6.46-x64-mingw32 examples/dropsite.rb
fxruby-1.6.46-x64-mingw-ucrt examples/dropsite.rb
fxruby-1.6.46-x86-mingw32 examples/dropsite.rb
fxruby-1.6.45 examples/dropsite.rb
fxruby-1.6.45-x64-mingw32 examples/dropsite.rb
fxruby-1.6.45-x64-mingw-ucrt examples/dropsite.rb
fxruby-1.6.45-x86-mingw32 examples/dropsite.rb
fxruby-1.6.44 examples/dropsite.rb
fxruby-1.6.44-x64-mingw32 examples/dropsite.rb
fxruby-1.6.44-x86-mingw32 examples/dropsite.rb
fxruby-1.6.43 examples/dropsite.rb