Sha256: ed74e2cdd6551156fed0e51a5afe426ed078ee86cafefdf5b60533aa3237ba6a

Contents?: true

Size: 1.46 KB

Versions: 7

Compression:

Stored size: 1.46 KB

Contents

require 'Qt'

class CannonField < Qt::Widget
  signals 'angleChanged(int)', 'forceChanged(int)'
  slots 'setAngle(int)', 'setForce(int)'

  def initialize(parent = nil)
    super
    @ang = 45
    @f = 0
    setPalette(Qt::Palette.new(Qt::Color.new(250, 250, 200)))
    setAutoFillBackground(true)
  end

  def setAngle(degrees)
    if degrees < 5
      degrees = 5
    elsif degrees > 70
      degrees = 70
    end
    if @ang == degrees
      return
    end
    @ang = degrees
    repaint()
    emit angleChanged(@ang)
  end

  def setForce(newton)
    if newton < 0
      newton = 0
    end
    if @f == newton
      return
    end
    @f = newton
    emit forceChanged(@f)
  end

  def paintEvent(e)
    if !e.rect().intersects(cannonRect())
      return
    end

    cr = cannonRect()
    pix = Qt::Pixmap.new(cr.size())
    pix.fill(self, cr.topLeft())

    painter = Qt::Painter.new(pix)
    painter.setBrush(Qt::Brush.new(Qt::blue))
    painter.setPen(Qt::NoPen)
    painter.translate(0, pix.height() - 1)
    painter.drawPie(Qt::Rect.new(-35, -35, 70, 70), 0, 90 * 16)
    painter.rotate(- @ang)
    painter.drawRect(Qt::Rect.new(33, -4, 15, 8))
    painter.end()

    painter.begin(self)
    painter.drawPixmap(cr.topLeft(), pix)
    painter.end()
  end

  def cannonRect()
    r = Qt::Rect.new(0, 0, 50, 50)
    r.moveBottomLeft(rect().bottomLeft())
    return r
  end

  def sizePolicy()
    return Qt::SizePolicy.new(Qt::SizePolicy::Expanding, Qt::SizePolicy::Expanding)
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
rock-qtbindings-4.8.6.5 examples/tutorial/t10/cannon.rb
qtbindings-4.8.6.5 examples/tutorial/t10/cannon.rb
qtbindings-4.8.6.5-x86-mingw32 examples/tutorial/t10/cannon.rb
qtbindings-4.8.6.5-x64-mingw32 examples/tutorial/t10/cannon.rb
qtbindings-4.8.6.4-x86-mingw32 examples/tutorial/t10/cannon.rb
qtbindings-4.8.6.4-x64-mingw32 examples/tutorial/t10/cannon.rb
qtbindings-4.8.6.4 examples/tutorial/t10/cannon.rb