import("guilib")
class SampleGrid
{
inject(System.GUI)
method draw (grid, dc, line, col, xmin, xmax, ymin, ymax)
{
xm = (xmax + xmin) / 2
ym = (ymax + ymin) / 2
dc.set_fgcolor(DrawCanvas.encode_color(line*20, col*100, line+100))
dc.draw_box(xmin, xmax, ymin, ymax)
dc.set_text_align(DrawCanvas.CENTER)
dc.set_fgcolor(DrawCanvas.BLACK)
dc.draw_text(xm, ym, "(" + line.to_string() + ", " + col.to_string() + ")")
DEFAULT
}
method create_grid ()
{
grid = Grid.new({Attribute.BOXED:false})
grid.set_event(Event.NLINES, EventHandler.new(method (grid) {6}, self))
grid.set_event(Event.NCOLS, EventHandler.new(method (grid) {6}, self))
grid.set_event(Event.WIDTH, EventHandler.new(method (grid,line) {70}, self))
grid.set_event(Event.HEIGHT, EventHandler.new(method (grid,col) {50}, self))
grid.set_event(Event.DRAW, EventHandler.new(get_method("draw"), self))
@grid = grid
}
public method show ()
{
@dialog.popup(CENTER, CENTER)
@grid.set_raster_size(nil)
}
method initialize ()
{
field @dialog
field @grid
attr =
{Attribute.TITLE : "Sample Grid",
Attribute.OPACITY : 255}
create_grid()
@dialog = Dialog.new(@grid, attr)
@grid.set_raster_size({"width":400, "height":400})
}
}
method main ()
{
dialog = SampleGrid.new()
dialog.show()
}
main()