X-Git-Url: https://git.llucax.com/z.facultad/75.42/figuras.git/blobdiff_plain/8618abe571a8f7e7c226abd7b70a24403936dc0b..34078d9855550bda8415c600931decd2dc50bcc6:/callbacks.cpp diff --git a/callbacks.cpp b/callbacks.cpp index b0524ca..1dedd96 100644 --- a/callbacks.cpp +++ b/callbacks.cpp @@ -70,62 +70,69 @@ void on_button_agregar_clicked(GtkButton* button, gpointer user_data) { #ifdef DEBUG std::cerr << "Color: " << win->get_color() << std::endl; #endif - Figura* figura = new Circulo(1, 1, Punto(50, 50), "Lala", 50); - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(win->radiobutton_linea))) { + Figura* figura; + // Si se agrega una línea. + if (gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(win->radiobutton_linea))) { + // Creo la nueva línea con los parámetros ingresados por el usuario. figura = new Linea( - win->get_color(), + win->get_color(), // Color gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(win->spinbutton_grosor)), - Punto(GTK_SPIN_BUTTON(win->spinbutton_centro_x), - GTK_SPIN_BUTTON(win->spinbutton_centro_y)), - gtk_entry_get_text(GTK_ENTRY(win->entry_nombre)), - Punto(GTK_SPIN_BUTTON(win->spinbutton_inicio_x), - GTK_SPIN_BUTTON(win->spinbutton_inicio_y)), - Punto(GTK_SPIN_BUTTON(win->spinbutton_fin_x), - GTK_SPIN_BUTTON(win->spinbutton_fin_y)) + GTK_SPIN_BUTTON(win->spinbutton_grosor)), // Grosor + Punto(GTK_SPIN_BUTTON(win->spinbutton_centro_x), // Centro X + GTK_SPIN_BUTTON(win->spinbutton_centro_y)), // Centro Y + gtk_entry_get_text(GTK_ENTRY(win->entry_nombre)), // Nombre + Punto(GTK_SPIN_BUTTON(win->spinbutton_inicio_x), // Inicio X + GTK_SPIN_BUTTON(win->spinbutton_inicio_y)), // Inicio Y + Punto(GTK_SPIN_BUTTON(win->spinbutton_fin_x), // Fin X + GTK_SPIN_BUTTON(win->spinbutton_fin_y)) // Fin Y ); + // Si se agrega un cuadrado. } else if (gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(win->radiobutton_cuadrado))) { + // Creo la figura con los párametros ingresados por el usuario. figura = new Cuadrado( - win->get_color(), + win->get_color(), // Color + gtk_spin_button_get_value_as_int( + GTK_SPIN_BUTTON(win->spinbutton_grosor)), // Grosor + Punto(GTK_SPIN_BUTTON(win->spinbutton_centro_x), // Centro X + GTK_SPIN_BUTTON(win->spinbutton_centro_y)), // Centro Y + gtk_entry_get_text(GTK_ENTRY(win->entry_nombre)), // Nombre gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(win->spinbutton_grosor)), - Punto(GTK_SPIN_BUTTON(win->spinbutton_centro_x), - GTK_SPIN_BUTTON(win->spinbutton_centro_y)), - gtk_entry_get_text(GTK_ENTRY(win->entry_nombre)), - gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(win->spinbutton_alto)) + GTK_SPIN_BUTTON(win->spinbutton_alto)) // Lado. ); + // Si se agrega un rectángulo. } else if (gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(win->radiobutton_rectangulo))) { + // Creo la figura con los párametros ingresados por el usuario. figura = new Rectangulo( - win->get_color(), - gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(win->spinbutton_grosor)), - Punto(GTK_SPIN_BUTTON(win->spinbutton_centro_x), - GTK_SPIN_BUTTON(win->spinbutton_centro_y)), - gtk_entry_get_text(GTK_ENTRY(win->entry_nombre)), + win->get_color(), // Color + gtk_spin_button_get_value_as_int( + GTK_SPIN_BUTTON(win->spinbutton_grosor)), // Grosor + Punto(GTK_SPIN_BUTTON(win->spinbutton_centro_x), // Centro X + GTK_SPIN_BUTTON(win->spinbutton_centro_y)), // Centro Y + gtk_entry_get_text(GTK_ENTRY(win->entry_nombre)), // Nombre gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(win->spinbutton_alto)), + GTK_SPIN_BUTTON(win->spinbutton_alto)), // Alto. gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(win->spinbutton_ancho)) + GTK_SPIN_BUTTON(win->spinbutton_ancho)) // Ancho. ); + // Si no, se agrega un círculo. } else { + // Creo la figura con los párametros ingresados por el usuario. figura = new Circulo( - win->get_color(), - gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(win->spinbutton_grosor)), - Punto(GTK_SPIN_BUTTON(win->spinbutton_centro_x), - GTK_SPIN_BUTTON(win->spinbutton_centro_y)), - gtk_entry_get_text(GTK_ENTRY(win->entry_nombre)), + win->get_color(), // Color + gtk_spin_button_get_value_as_int( + GTK_SPIN_BUTTON(win->spinbutton_grosor)), // Grosor + Punto(GTK_SPIN_BUTTON(win->spinbutton_centro_x), // Centro X + GTK_SPIN_BUTTON(win->spinbutton_centro_y)), // Centro Y + gtk_entry_get_text(GTK_ENTRY(win->entry_nombre)), // Nombre gtk_spin_button_get_value_as_int( - GTK_SPIN_BUTTON(win->spinbutton_radio)) + GTK_SPIN_BUTTON(win->spinbutton_radio)) // Radio ); } // Agrego la figura nueva al dibujo. win->dibujo.agregar_figura(figura); - // Indico que se debe redibujar para que se vean los cambios. - gtk_widget_queue_draw(GTK_WIDGET(win->drawingarea)); } gboolean on_window_delete_event(GtkWidget* widget, GdkEvent* event, @@ -144,15 +151,15 @@ void on_radiobutton_linea_toggled(GtkToggleButton* togglebutton, #ifdef DEBUG std::cerr << "En linea event." << std::endl; #endif - // TODO + // Activo y desactivos los campos necesarios. TP5Window* win = static_cast(user_data); - gtk_widget_set_sensitive(win->spinbutton_inicio_x, true); - gtk_widget_set_sensitive(win->spinbutton_inicio_y, true); - gtk_widget_set_sensitive(win->spinbutton_fin_x, true); - gtk_widget_set_sensitive(win->spinbutton_fin_y, true); - gtk_widget_set_sensitive(win->spinbutton_alto, false); - gtk_widget_set_sensitive(win->spinbutton_ancho, false); - gtk_widget_set_sensitive(win->spinbutton_radio, false); + gtk_widget_set_sensitive(win->spinbutton_inicio_x, TRUE); + gtk_widget_set_sensitive(win->spinbutton_inicio_y, TRUE); + gtk_widget_set_sensitive(win->spinbutton_fin_x, TRUE); + gtk_widget_set_sensitive(win->spinbutton_fin_y, TRUE); + gtk_widget_set_sensitive(win->spinbutton_alto, FALSE); + gtk_widget_set_sensitive(win->spinbutton_ancho, FALSE); + gtk_widget_set_sensitive(win->spinbutton_radio, FALSE); } void on_radiobutton_cuadrado_toggled(GtkToggleButton* togglebutton, @@ -160,15 +167,15 @@ void on_radiobutton_cuadrado_toggled(GtkToggleButton* togglebutton, #ifdef DEBUG std::cerr << "En cuadrado event." << std::endl; #endif - // TODO + // Activo y desactivos los campos necesarios. TP5Window* win = static_cast(user_data); - gtk_widget_set_sensitive(win->spinbutton_inicio_x, false); - gtk_widget_set_sensitive(win->spinbutton_inicio_y, false); - gtk_widget_set_sensitive(win->spinbutton_fin_x, false); - gtk_widget_set_sensitive(win->spinbutton_fin_y, false); - gtk_widget_set_sensitive(win->spinbutton_alto, true); - gtk_widget_set_sensitive(win->spinbutton_ancho, false); - gtk_widget_set_sensitive(win->spinbutton_radio, false); + gtk_widget_set_sensitive(win->spinbutton_inicio_x, FALSE); + gtk_widget_set_sensitive(win->spinbutton_inicio_y, FALSE); + gtk_widget_set_sensitive(win->spinbutton_fin_x, FALSE); + gtk_widget_set_sensitive(win->spinbutton_fin_y, FALSE); + gtk_widget_set_sensitive(win->spinbutton_alto, TRUE); + gtk_widget_set_sensitive(win->spinbutton_ancho, FALSE); + gtk_widget_set_sensitive(win->spinbutton_radio, FALSE); } void on_radiobutton_rectangulo_toggled(GtkToggleButton* togglebutton, @@ -176,15 +183,15 @@ void on_radiobutton_rectangulo_toggled(GtkToggleButton* togglebutton, #ifdef DEBUG std::cerr << "En rectangulo event." << std::endl; #endif - // TODO + // Activo y desactivos los campos necesarios. TP5Window* win = static_cast(user_data); - gtk_widget_set_sensitive(win->spinbutton_inicio_x, false); - gtk_widget_set_sensitive(win->spinbutton_inicio_y, false); - gtk_widget_set_sensitive(win->spinbutton_fin_x, false); - gtk_widget_set_sensitive(win->spinbutton_fin_y, false); - gtk_widget_set_sensitive(win->spinbutton_alto, true); - gtk_widget_set_sensitive(win->spinbutton_ancho, true); - gtk_widget_set_sensitive(win->spinbutton_radio, false); + gtk_widget_set_sensitive(win->spinbutton_inicio_x, FALSE); + gtk_widget_set_sensitive(win->spinbutton_inicio_y, FALSE); + gtk_widget_set_sensitive(win->spinbutton_fin_x, FALSE); + gtk_widget_set_sensitive(win->spinbutton_fin_y, FALSE); + gtk_widget_set_sensitive(win->spinbutton_alto, TRUE); + gtk_widget_set_sensitive(win->spinbutton_ancho, TRUE); + gtk_widget_set_sensitive(win->spinbutton_radio, FALSE); } void on_radiobutton_circulo_toggled(GtkToggleButton* togglebutton, @@ -192,14 +199,14 @@ void on_radiobutton_circulo_toggled(GtkToggleButton* togglebutton, #ifdef DEBUG std::cerr << "En circulo event." << std::endl; #endif - // TODO + // Activo y desactivos los campos necesarios. TP5Window* win = static_cast(user_data); - gtk_widget_set_sensitive(win->spinbutton_inicio_x, false); - gtk_widget_set_sensitive(win->spinbutton_inicio_y, false); - gtk_widget_set_sensitive(win->spinbutton_fin_x, false); - gtk_widget_set_sensitive(win->spinbutton_fin_y, false); - gtk_widget_set_sensitive(win->spinbutton_alto, false); - gtk_widget_set_sensitive(win->spinbutton_ancho, false); - gtk_widget_set_sensitive(win->spinbutton_radio, true); + gtk_widget_set_sensitive(win->spinbutton_inicio_x, FALSE); + gtk_widget_set_sensitive(win->spinbutton_inicio_y, FALSE); + gtk_widget_set_sensitive(win->spinbutton_fin_x, FALSE); + gtk_widget_set_sensitive(win->spinbutton_fin_y, FALSE); + gtk_widget_set_sensitive(win->spinbutton_alto, FALSE); + gtk_widget_set_sensitive(win->spinbutton_ancho, FALSE); + gtk_widget_set_sensitive(win->spinbutton_radio, TRUE); }