]> git.llucax.com Git - z.facultad/75.42/figuras.git/blob - callbacks.cpp
bf38a5aa7e3f7dc65d8fee072379fa56bcf1bb36
[z.facultad/75.42/figuras.git] / callbacks.cpp
1 /* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
2  *
3  * Taller de Programación (75.42).
4  *
5  * Ejercicio Número 5:
6  * Graficador de figuras.
7  *
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/).
11  *
12  * Creado: mié oct  1 23:24:12 ART 2003
13  *
14  * $Id$
15  */
16
17 #include "dibujo.h"
18 #include "linea.h"
19 #include "cuadrado.h"
20 #include "rectangulo.h"
21 #include "circulo.h"
22 #include "callbacks.h"
23 #include "interface.h"
24 #include <gtk/gtk.h>
25
26 #ifdef DEBUG
27 #   include <iostream>
28 #endif
29
30 gboolean on_drawingarea_expose_event(GtkWidget *widget, GdkEventExpose *event,
31         gpointer user_data) {
32 #ifdef DEBUG
33     std::cerr << "En expose_event." << std::endl;
34 #endif
35     // Dibujo.
36     static_cast<Dibujo*>(user_data)->dibujar(widget);
37     return FALSE;
38 }
39
40 void on_button_borrar_clicked(GtkButton *button, gpointer user_data) {
41 #ifdef DEBUG
42     std::cerr << "En borrar event." << std::endl;
43 #endif
44     // Borro dibujo.
45     static_cast<Dibujo*>(user_data)->borrar_todo();
46 }
47
48 void on_button_graficar_clicked(GtkButton *button, gpointer user_data) {
49 #ifdef DEBUG
50     std::cerr << "En graficar event." << std::endl;
51 #endif
52     // Indica que hay que redibujar el widget user_data, que será el área de
53     // dibujo.
54     gtk_widget_queue_draw(GTK_WIDGET(user_data));
55 }
56
57 void on_button_salir_clicked(GtkButton *button, gpointer user_data) {
58 #ifdef DEBUG
59     std::cerr << "En salir event." << std::endl;
60 #endif
61     // Termina el loop principal.
62     gtk_main_quit();
63 }
64
65 void on_button_agregar_clicked(GtkButton *button, gpointer user_data) {
66 #ifdef DEBUG
67     std::cerr << "En agregar event." << std::endl;
68 #endif
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));
81 }
82
83 gboolean on_window_delete_event(GtkWidget *widget, GdkEvent *event,
84         gpointer user_data) {
85 #ifdef DEBUG
86     std::cerr << "En delete_event." << std::endl;
87 #endif
88     // Termina el loop principal.
89     gtk_main_quit();
90     // Al devolver FALSE se indica que se debe ocultar la ventana FIXME.
91     return FALSE;
92 }
93
94 #include <iostream> // FIXME
95 void on_radiobutton_linea_toggled(GtkToggleButton *togglebutton,
96         gpointer user_data) {
97     // TODO
98     std::cerr << "En linea event." << std::endl;
99     TP5Window* win = static_cast<TP5Window*>(user_data);
100 }
101
102 void on_radiobutton_cuadrado_toggled(GtkToggleButton *togglebutton,
103         gpointer user_data) {
104     // TODO
105     std::cerr << "En cuadrado event." << std::endl;
106     TP5Window* win = static_cast<TP5Window*>(user_data);
107 }
108
109 void on_radiobutton_rectangulo_toggled(GtkToggleButton *togglebutton,
110         gpointer user_data) {
111     // TODO
112     std::cerr << "En rectangulo event." << std::endl;
113     TP5Window* win = static_cast<TP5Window*>(user_data);
114 }
115
116 void on_radiobutton_circulo_toggled(GtkToggleButton *togglebutton,
117         gpointer user_data) {
118     // TODO
119     std::cerr << "En circulo event." << std::endl;
120     TP5Window* win = static_cast<TP5Window*>(user_data);
121 }
122