grafico_1.pro



   colour(white).
   colour(red).
   colour(green).
   colour(blue).
   colour(black).
   append_colour(M, C) :-
           new(Img, pixmap(@nil, white, black, 32, 16)),
           send(Img, fill, colour(C)),
           send(M, append, menu_item(colour(C), label := Img)).
   edit_graphical(Gr) :-
           new(D, dialog(string('Edit graphical %s', Gr?name))),
           send(D, append, new(M, menu(colour, choice, message(Gr, fill_pattern, @arg1)))),
           send(M, layout, horizontal),
           forall(colour(C), append_colour(M, C)),
           send(M, default, Gr?fill_pattern),
           send(D, append, slider(pen, 0, 10, Gr?pen, message(Gr, pen, @arg1))),
           send(D, append, button(apply)),
           send(D, append, button(restore)),
           send(D, append, button(quit, message(D, destroy))),
           send(D, default_button, apply),
           send(D, open).
   attributedemo :-
           send(new(P, picture('Attribute Demo')), open),
           send(P, display, new(B, box(100, 100)), point(20, 20)),
           send(P, display, new(E, ellipse(100, 50)), point(150, 20)),
           send_list([B, E], fill_pattern, colour(white)),
           new(C, click_gesture(left, '', double, message(@prolog, edit_graphical, @receiver))),
           send(B, recogniser, C),
           send(E, recogniser, C).