41 lines
599 B
Ruby
41 lines
599 B
Ruby
require "set"
|
|
require "widget"
|
|
|
|
class Window
|
|
|
|
include Widget
|
|
|
|
@windows = Set.new
|
|
|
|
class << self
|
|
def register(window)
|
|
@windows << window
|
|
end
|
|
|
|
def remove(window)
|
|
@windows.delete(window)
|
|
end
|
|
end
|
|
|
|
def initialize
|
|
Window.register(self)
|
|
super
|
|
@font = Font.new(Runtime.find(:font, "DejaVuSansMono"), 20)
|
|
@buffer_widget = BufferWidget.new(Buffer.new, @font)
|
|
end
|
|
|
|
def close
|
|
Window.remove(self)
|
|
end
|
|
|
|
def render
|
|
@buffer_widget.draw
|
|
end
|
|
|
|
def resize(x, y, width, height)
|
|
super
|
|
@buffer_widget.resize(x, y, width, height)
|
|
end
|
|
|
|
end
|