You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.0 KiB
76 lines
2.0 KiB
#!/usr/bin/env ruby -w
|
|
|
|
require 'Qt'
|
|
require 'rexml/document'
|
|
|
|
require '../base/kicons.rb'
|
|
require '../base/rui.rb'
|
|
|
|
class MyCanvasView < Qt::CanvasView
|
|
def initialize(canvas, parent)
|
|
@canvas = canvas
|
|
super(canvas, parent)
|
|
end
|
|
def contentsMousePressEvent(e)
|
|
super
|
|
list = canvas.collisions(e.pos)
|
|
return if list.empty?
|
|
c = list.first
|
|
return if c.rtti != Qt::CanvasItem::Rtti_Rectangle
|
|
c.hide
|
|
@canvas.update
|
|
end
|
|
end
|
|
|
|
class MyWidget < Qt::MainWindow
|
|
slots 'new()', 'open()', 'save_as()'
|
|
def make_rect
|
|
rect = Qt::CanvasRectangle.new(rand(@canvas.width()), rand(@canvas.height()),
|
|
@canvas.width / 5, @canvas.width / 5, @canvas)
|
|
z = rand(256)
|
|
color = Qt::Color.new(z,z,z)
|
|
rect.setBrush(Qt::Brush.new(color))
|
|
color = Qt::Color.new(rand(32)*8, rand(32)*8, rand(32)*8)
|
|
rect.setPen(Qt::Pen.new(color, 6))
|
|
rect.setZ(z)
|
|
rect.show
|
|
@rects << rect
|
|
end
|
|
def initialize()
|
|
super
|
|
|
|
fileTools = Qt::ToolBar.new(self, "file operations")
|
|
fileMenu = Qt::PopupMenu.new(self)
|
|
|
|
actions = [
|
|
RAction.new("&New", Icons::FILE_NEW, self, SLOT('new()'), [fileTools, fileMenu]),
|
|
RAction.new("&Open...", Icons::FILE_OPEN, self, SLOT('open()'), [fileTools, fileMenu]),
|
|
@save = RAction.new("Save &As...", Icons::FILE_SAVE_AS, self, SLOT('save_as()'), [fileTools, fileMenu]),
|
|
RSeperator.new([fileMenu]),
|
|
RAction.new("E&xit", Icons::EXIT, $qApp, SLOT('quit()'), [fileMenu])
|
|
]
|
|
build_actions(actions)
|
|
|
|
menubar = Qt::MenuBar.new(self)
|
|
menubar.insertItem("&File", fileMenu)
|
|
|
|
@canvas = Qt::Canvas.new(640, 480)
|
|
|
|
@rects = []
|
|
5.times { make_rect }
|
|
|
|
@canvas_view = MyCanvasView.new(@canvas, self)
|
|
self.setCentralWidget(@canvas_view)
|
|
@canvas.update
|
|
end
|
|
end
|
|
|
|
a = Qt::Application.new(ARGV)
|
|
|
|
w = MyWidget.new
|
|
w.show
|
|
|
|
a.setMainWidget(w)
|
|
a.exec()
|
|
exit
|