1 /* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
3 * Taller de Programación (75.42).
6 * Graficador de figuras.
8 * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9 * Puede copiar, modificar y distribuir este programa bajo los términos de
10 * la licencia GPL (http://www.gnu.org/).
12 * Creado: mié oct 1 23:24:12 ART 2003
20 #include "rectangulo.h"
22 #include "callbacks.h"
23 #include "interface.h"
30 gboolean on_drawingarea_expose_event(GtkWidget *widget, GdkEventExpose *event,
33 std::cerr << "En expose_event." << std::endl;
36 static_cast<Dibujo*>(user_data)->dibujar(widget);
40 void on_button_borrar_clicked(GtkButton *button, gpointer user_data) {
42 std::cerr << "En borrar event." << std::endl;
45 static_cast<Dibujo*>(user_data)->borrar_todo();
48 void on_button_graficar_clicked(GtkButton *button, gpointer user_data) {
50 std::cerr << "En graficar event." << std::endl;
52 // Indica que hay que redibujar el widget user_data, que será el área de
54 gtk_widget_queue_draw(GTK_WIDGET(user_data));
57 void on_button_salir_clicked(GtkButton *button, gpointer user_data) {
59 std::cerr << "En salir event." << std::endl;
61 // Termina el loop principal.
65 void on_button_agregar_clicked(GtkButton *button, gpointer user_data) {
67 std::cerr << "En agregar event." << std::endl;
69 // FIXME: hacer una estructura para guardar todos los punteros a los datos
70 // que necesito: radio buttons, y todas las entradas, más la lista enlazada,
71 // más, tal vez, el drawingarea.
72 TP5Window* win = static_cast<TP5Window*>(user_data);
73 Figura* figura = new Circulo(1, 1, Punto(50, 50), "Lala", 50);
74 static_cast<Dibujo*>(user_data)->agregar_figura(figura);
75 static_cast<Dibujo*>(user_data)->agregar_figura(
76 new Linea(1, 2, Punto(50, 50), "", Punto(0, 0), Punto(100, 50)));
77 static_cast<Dibujo*>(user_data)->agregar_figura(
78 new Rectangulo(2, 1, Punto(100, 100), "", 20, 80));
79 static_cast<Dibujo*>(user_data)->agregar_figura(
80 new Cuadrado(5, 5, Punto(150, 120), "", 100));
83 gboolean on_window_delete_event(GtkWidget *widget, GdkEvent *event,
86 std::cerr << "En delete_event." << std::endl;
88 // Termina el loop principal.
90 // Al devolver FALSE se indica que se debe ocultar la ventana FIXME.
94 #include <iostream> // FIXME
95 void on_radiobutton_linea_toggled(GtkToggleButton *togglebutton,
98 std::cerr << "En linea event." << std::endl;
99 TP5Window* win = static_cast<TP5Window*>(user_data);
102 void on_radiobutton_cuadrado_toggled(GtkToggleButton *togglebutton,
103 gpointer user_data) {
105 std::cerr << "En cuadrado event." << std::endl;
106 TP5Window* win = static_cast<TP5Window*>(user_data);
109 void on_radiobutton_rectangulo_toggled(GtkToggleButton *togglebutton,
110 gpointer user_data) {
112 std::cerr << "En rectangulo event." << std::endl;
113 TP5Window* win = static_cast<TP5Window*>(user_data);
116 void on_radiobutton_circulo_toggled(GtkToggleButton *togglebutton,
117 gpointer user_data) {
119 std::cerr << "En circulo event." << std::endl;
120 TP5Window* win = static_cast<TP5Window*>(user_data);