From: Leandro Lucarella Date: Sun, 5 Oct 2003 23:37:17 +0000 (+0000) Subject: Se completan comentarios en el codigo. X-Git-Tag: svn_import~11 X-Git-Url: https://git.llucax.com/z.facultad/75.42/figuras.git/commitdiff_plain/f5797a141b246a1997103dddb1e2a415c8b8363d Se completan comentarios en el codigo. --- diff --git a/callbacks.cpp b/callbacks.cpp index e07c572..5f51614 100644 --- a/callbacks.cpp +++ b/callbacks.cpp @@ -155,13 +155,13 @@ void on_radiobutton_linea_toggled(GtkToggleButton* togglebutton, #endif // 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, @@ -171,13 +171,13 @@ void on_radiobutton_cuadrado_toggled(GtkToggleButton* togglebutton, #endif // 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, @@ -187,13 +187,13 @@ void on_radiobutton_rectangulo_toggled(GtkToggleButton* togglebutton, #endif // 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, @@ -203,12 +203,12 @@ void on_radiobutton_circulo_toggled(GtkToggleButton* togglebutton, #endif // 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); } diff --git a/tp5window.cpp b/tp5window.cpp index eb0f9e0..5f04c07 100644 --- a/tp5window.cpp +++ b/tp5window.cpp @@ -41,9 +41,11 @@ const char* TP5Window::COLOR[] = { }; int TP5Window::get_color(void) const { + // Obtiene el string del color elegido. const char* str = gtk_entry_get_text( GTK_ENTRY(GTK_COMBO(combo_color)->entry)); for (int i = 0; i < CANT_COLORES; i++) { + // Si el string con el color coincide, devuelvo el índice. if (!strcmp(str, COLOR[i])) { return i; } @@ -130,7 +132,6 @@ TP5Window::TP5Window(void) { // Crea la leyenda y la agrega al marco. label_dibujo = gtk_label_new("Dibujo"); gtk_frame_set_label_widget(GTK_FRAME(frame_dibujo), label_dibujo); - //gtk_label_set_justify(GTK_LABEL(label_dibujo), GTK_JUSTIFY_LEFT); // Crea el área de dibujo y la agrega al marco. drawingarea = gtk_drawing_area_new(); @@ -139,285 +140,359 @@ TP5Window::TP5Window(void) { // de la ventana. gtk_widget_set_size_request(drawingarea, 200, 200); - // Crea una matriz de 3x1 para los tres botones relativos al dibujo (y + // Crea una barra vertical de tres botones relativos al dibujo (y // salida). Esto es agregado a la región de la derecha del dibujo. vbuttonbox_botones = gtk_vbutton_box_new(); - gtk_box_pack_start(GTK_BOX(hbox_botones), vbuttonbox_botones, FALSE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox_botones), vbuttonbox_botones, FALSE, + TRUE, 0); + // Deja un márgen de 5 píxeles. gtk_container_set_border_width(GTK_CONTAINER(vbuttonbox_botones), 5); - gtk_button_box_set_layout(GTK_BUTTON_BOX(vbuttonbox_botones), GTK_BUTTONBOX_SPREAD); + // Ajusta la distribución de los botones. + gtk_button_box_set_layout(GTK_BUTTON_BOX(vbuttonbox_botones), + GTK_BUTTONBOX_SPREAD); + // Agrega un botón predefinido para limpiar (con ícono y traducido a varios + // idiomas). button_limpiar = gtk_button_new_from_stock("gtk-clear"); gtk_container_add(GTK_CONTAINER(vbuttonbox_botones), button_limpiar); - GTK_WIDGET_SET_FLAGS(button_limpiar, GTK_CAN_DEFAULT); + // Agrega un botón predefinido para actualizar (con ícono y traducido a + // varios idiomas). button_actualizar = gtk_button_new_from_stock("gtk-refresh"); gtk_container_add(GTK_CONTAINER(vbuttonbox_botones), button_actualizar); - GTK_WIDGET_SET_FLAGS(button_actualizar, GTK_CAN_DEFAULT); + // Agrega un botón predefinido para salir (con ícono y traducido a varios + // idiomas). button_salir = gtk_button_new_from_stock("gtk-quit"); gtk_container_add(GTK_CONTAINER(vbuttonbox_botones), button_salir); - GTK_WIDGET_SET_FLAGS(button_salir, GTK_CAN_DEFAULT); + /////////////// FIN DE LA MITAD SUPERIOR DE LA PANTALLA /////////////////// + + // Se divide la parte inferior en tres columnas. hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); + //////////// PRIMERA COLUMNA ////////////// + // Crea un marco con una leyenda para poner los botones de selección de tipo + // de figura. frame_figura = gtk_frame_new(NULL); gtk_box_pack_start(GTK_BOX(hbox), frame_figura, FALSE, FALSE, 0); + // Crea la leyenda del marco. + label_figura = gtk_label_new("Figura"); + gtk_frame_set_label_widget(GTK_FRAME(frame_figura), label_figura); + // Crea una división vertical para poner los botones de selección del tipo + // de figura. vbox_figura = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(frame_figura), vbox_figura); + // Agrega botón de selección (radio button) para Línea. radiobutton_linea = gtk_radio_button_new_with_mnemonic(NULL, "_Línea"); - gtk_box_pack_start(GTK_BOX(vbox_figura), radiobutton_linea, FALSE, FALSE, 0); - gtk_radio_button_set_group(GTK_RADIO_BUTTON(radiobutton_linea), radiobutton_group); - radiobutton_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton_linea)); + gtk_box_pack_start(GTK_BOX(vbox_figura), radiobutton_linea,FALSE,FALSE,0); + // Lo agrega a un grupo de botones para controlar que sólo uno esté activo. + gtk_radio_button_set_group(GTK_RADIO_BUTTON(radiobutton_linea), + radiobutton_group); + // Obtiene el puntero al grupo (ya que la función anterior también + // inicializa el grupo que estaba en NULL. + radiobutton_group = gtk_radio_button_get_group( + GTK_RADIO_BUTTON(radiobutton_linea)); + // Activa el botón. gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radiobutton_linea), TRUE); + // Agrega botón de selección (radio button) para Cuadrado. radiobutton_cuadrado = gtk_radio_button_new_with_mnemonic(NULL, "_Cuadrado"); gtk_box_pack_start(GTK_BOX(vbox_figura), radiobutton_cuadrado, FALSE, FALSE, 0); gtk_radio_button_set_group(GTK_RADIO_BUTTON(radiobutton_cuadrado), radiobutton_group); radiobutton_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton_cuadrado)); + // Agrega botón de selección (radio button) para Rectángulo. radiobutton_rectangulo = gtk_radio_button_new_with_mnemonic(NULL, "_Rectángulo"); gtk_box_pack_start(GTK_BOX(vbox_figura), radiobutton_rectangulo, FALSE, FALSE, 0); gtk_radio_button_set_group(GTK_RADIO_BUTTON(radiobutton_rectangulo), radiobutton_group); radiobutton_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton_rectangulo)); + // Agrega botón de selección (radio button) para Círculo. radiobutton_circulo = gtk_radio_button_new_with_mnemonic(NULL, "Círc_ulo"); gtk_box_pack_start(GTK_BOX(vbox_figura), radiobutton_circulo, FALSE, FALSE, 0); gtk_radio_button_set_group(GTK_RADIO_BUTTON(radiobutton_circulo), radiobutton_group); radiobutton_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radiobutton_circulo)); - label_figura = gtk_label_new("Figura"); - gtk_frame_set_label_widget(GTK_FRAME(frame_figura), label_figura); - gtk_label_set_justify(GTK_LABEL(label_figura), GTK_JUSTIFY_LEFT); - + //////////// SEGUNDA COLUMNA ////////////// + // Crea una división vertical para poner los campos comunes a todas las + // figuras y el botón de agregar. vbox_comun = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), vbox_comun, TRUE, TRUE, 0); + // Crea una tabla de 3x2 para poner los campos de entrada con sus etiquetas. table_comun = gtk_table_new(3, 2, FALSE); gtk_box_pack_start(GTK_BOX(vbox_comun), table_comun, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(table_comun), 5); + // Asigna el espaciado entre celdas. gtk_table_set_row_spacings(GTK_TABLE(table_comun), 3); gtk_table_set_col_spacings(GTK_TABLE(table_comun), 5); + // Crea la etiqueta de Nombre. label_nombre = gtk_label_new("Nombre"); + // La agrega a la tabla. gtk_table_attach(GTK_TABLE(table_comun), label_nombre, 0, 1, 0, 1, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_nombre), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_nombre), 0, 0.5); + // Crea y agrega la etiqueta de Color. label_color = gtk_label_new("Color"); gtk_table_attach(GTK_TABLE(table_comun), label_color, 0, 1, 1, 2, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_color), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_color), 0, 0.5); + // Crea y agrega la etiqueta de Grosor. label_grosor = gtk_label_new("Grosor"); gtk_table_attach(GTK_TABLE(table_comun), label_grosor, 0, 1, 2, 3, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_grosor), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_grosor), 0, 0.5); + // Crea y agrega una entrada texto para el Nombre. entry_nombre = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table_comun), entry_nombre, 1, 2, 0, 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(GTK_EXPAND), 0, 0); + // Sugiere un tamaño en X de 100 píxeles. gtk_widget_set_size_request(entry_nombre, 100, -1); + // Agrega un combo para elegir el color. combo_color = gtk_combo_new(); - g_object_set_data(G_OBJECT(GTK_COMBO(combo_color)->popwin), - "GladeParentKey", combo_color); gtk_table_attach(GTK_TABLE(table_comun), combo_color, 1, 2, 1, 2, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(GTK_EXPAND), 0, 0); + // Sugiere un tamaño en X de 150 píxeles. gtk_widget_set_size_request(combo_color, 150, -1); - gtk_combo_set_value_in_list(GTK_COMBO(combo_color), TRUE, FALSE); + // Indica que sólo acepta valores que estén en la lista. + gtk_combo_set_value_in_list(GTK_COMBO(combo_color), + TRUE, // Solo acepta valores en la lista. + FALSE); // No puede estar vacío. + // Llena la lista con los colores admitidos. for (int i = 0; i < CANT_COLORES; i++) { combo_color_items = g_list_append(combo_color_items,(gpointer) COLOR[i]); } + // Copia la lista para usarla en el combo. gtk_combo_set_popdown_strings(GTK_COMBO(combo_color), combo_color_items); + // Libera la memoria de la lista temporal. g_list_free(combo_color_items); - + // Obtiene el campo de entrada del combo. combo_entry = GTK_COMBO(combo_color)->entry; + // Hace que no pueda editarse. gtk_editable_set_editable(GTK_EDITABLE(combo_entry), FALSE); + // Setea el primer color por defecto. gtk_entry_set_text(GTK_ENTRY(combo_entry), COLOR[0]); - spinbutton_grosor_adj = gtk_adjustment_new(1, 1, 10, 1, 10, 10); + // Crea valores de ajuste para la entrada de Grosor. + spinbutton_grosor_adj = gtk_adjustment_new( + 1, // Valor inicial. + 1, // Mínimo. + 10, // Máximo. + 1, // Tamaño del paso de incremento. + 10, // Tamaño del paso de incremento de página. | no aplicable + 10); // Tamaño de página. | en este caso. + // Crea la entrada de grosor con flechas de incremento y decremento. spinbutton_grosor = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_grosor_adj), 1, 0); + // Agrega a la tabla. gtk_table_attach(GTK_TABLE(table_comun), spinbutton_grosor, 1, 2, 2, 3, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(GTK_EXPAND), 0, 0); + // Sugiere el tamaño. gtk_widget_set_size_request(spinbutton_grosor, 48, -1); + // Agrega el botón de Agregar. button_agregar = gtk_button_new_from_stock("gtk-add"); gtk_box_pack_start(GTK_BOX(vbox_comun), button_agregar, FALSE, FALSE, 0); + ///////////////// TERCERA COLUMNA ///////////////// + // Divide la comunma verticalmente en 2, arriba iran las entradas de puntos + // y abajo el alto, ancho y radio. vbox_otros = gtk_vbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(hbox), vbox_otros, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox_otros), 5); + // Crea una tabla de 4x3 para poner las entradas de los puntos con + // etiquetas de una forma como esta: + // | X | Y | \. + // -------+---+---+ | + // Centro | | | | + // -------+---+---+ +--> 4 + // Inicio | | | | + // -------+---+---+ | + // Fin | | | | + // -------+---+---+/ + // \_______.______/ + // | + // V + // 3 table_puntos = gtk_table_new(4, 3, FALSE); gtk_box_pack_start(GTK_BOX(vbox_otros), table_puntos, FALSE, FALSE, 0); gtk_table_set_col_spacings(GTK_TABLE(table_puntos), 2); + // Agrega una etiqueta vacía para la esquina superior izquierda. + label_puntos = gtk_label_new(""); + gtk_table_attach(GTK_TABLE(table_puntos), label_puntos, 0, 1, 0, 1, + (GtkAttachOptions)(GTK_FILL), + (GtkAttachOptions)(0), 0, 0); + + // Agrega etiqueta de Centro. label_centro = gtk_label_new("Centro"); gtk_table_attach(GTK_TABLE(table_puntos), label_centro, 0, 1, 1, 2, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_centro), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_centro), 0, 0.5); + // Agrega etiqueta de Inicio. label_inicio = gtk_label_new("Inicio"); gtk_table_attach(GTK_TABLE(table_puntos), label_inicio, 0, 1, 2, 3, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_inicio), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_inicio), 0, 0.5); + // Agrega etiqueta de Fin. label_fin = gtk_label_new("Fin"); gtk_table_attach(GTK_TABLE(table_puntos), label_fin, 0, 1, 3, 4, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_fin), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_fin), 0, 0.5); - - label_puntos = gtk_label_new(""); - gtk_table_attach(GTK_TABLE(table_puntos), label_puntos, 0, 1, 0, 1, - (GtkAttachOptions)(GTK_FILL), - (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_puntos), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_puntos), 0, 0.5); + // Agrega etiqueta de X. label_x = gtk_label_new("X"); gtk_table_attach(GTK_TABLE(table_puntos), label_x, 1, 2, 0, 1, (GtkAttachOptions)(0), (GtkAttachOptions)(0), 0, 0); - gtk_misc_set_alignment(GTK_MISC(label_x), 0, 0.5); + // Agrega etiqueta de Y. label_y = gtk_label_new("Y"); gtk_table_attach(GTK_TABLE(table_puntos), label_y, 2, 3, 0, 1, (GtkAttachOptions)(GTK_EXPAND), (GtkAttachOptions)(0), 0, 0); - gtk_misc_set_alignment(GTK_MISC(label_y), 0, 0.5); + // Crea botón con ajuste para la coordenada X del Centro. spinbutton_centro_x_adj = gtk_adjustment_new(0, 0, 1000, 1, 10, 10); spinbutton_centro_x = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_centro_x_adj), 1, 0); gtk_table_attach(GTK_TABLE(table_puntos), spinbutton_centro_x, 1, 2, 1, 2, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(0), 0, 0); + // Crea botón con ajuste para la coordenada Y del Centro. spinbutton_centro_y_adj = gtk_adjustment_new(0, 0, 1000, 1, 10, 10); spinbutton_centro_y = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_centro_y_adj), 1, 0); gtk_table_attach(GTK_TABLE(table_puntos), spinbutton_centro_y, 2, 3, 1, 2, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(0), 0, 0); + // Crea botón con ajuste para la coordenada X del Inicio. spinbutton_inicio_x_adj = gtk_adjustment_new(0, 0, 1000, 1, 10, 10); spinbutton_inicio_x = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_inicio_x_adj), 1, 0); gtk_table_attach(GTK_TABLE(table_puntos), spinbutton_inicio_x, 1, 2, 2, 3, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(0), 0, 0); + // Crea botón con ajuste para la coordenada Y del Inicio. spinbutton_inicio_y_adj = gtk_adjustment_new(0, 0, 1000, 1, 10, 10); spinbutton_inicio_y = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_inicio_y_adj), 1, 0); gtk_table_attach(GTK_TABLE(table_puntos), spinbutton_inicio_y, 2, 3, 2, 3, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(0), 0, 0); + // Crea botón con ajuste para la coordenada X del Fin. spinbutton_fin_x_adj = gtk_adjustment_new(0, 0, 1000, 1, 10, 10); spinbutton_fin_x = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_fin_x_adj), 1, 0); gtk_table_attach(GTK_TABLE(table_puntos), spinbutton_fin_x, 1, 2, 3, 4, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(0), 0, 0); + // Crea botón con ajuste para la coordenada Y del Fin. spinbutton_fin_y_adj = gtk_adjustment_new(0, 0, 1000, 1, 10, 10); spinbutton_fin_y = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_fin_y_adj), 1, 0); gtk_table_attach(GTK_TABLE(table_puntos), spinbutton_fin_y, 2, 3, 3, 4, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(0), 0, 0); + // Se crea una tabla de 3x2 para poner las entradas que faltan (Alto, Ancho + // y Radio) con sus etiquetas. table_otros = gtk_table_new(3, 2, FALSE); gtk_box_pack_start(GTK_BOX(vbox_otros), table_otros, FALSE, FALSE, 0); gtk_table_set_col_spacings(GTK_TABLE(table_otros), 2); + // Agrega etiqueta de Alto. label_alto = gtk_label_new("Alto"); gtk_table_attach(GTK_TABLE(table_otros), label_alto, 0, 1, 0, 1, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_alto), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_alto), 0, 0.5); + // Agrega etiqueta de Ancho. label_ancho = gtk_label_new("Ancho"); gtk_table_attach(GTK_TABLE(table_otros), label_ancho, 0, 1, 1, 2, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_ancho), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_ancho), 0, 0.5); + // Agrega etiqueta de Radio. label_radio = gtk_label_new("Radio"); gtk_table_attach(GTK_TABLE(table_otros), label_radio, 0, 1, 2, 3, (GtkAttachOptions)(GTK_FILL), (GtkAttachOptions)(0), 0, 0); - gtk_label_set_justify(GTK_LABEL(label_radio), GTK_JUSTIFY_LEFT); - gtk_misc_set_alignment(GTK_MISC(label_radio), 0, 0.5); + // Agrega botón con ajuste para el Alto. spinbutton_alto_adj = gtk_adjustment_new(1, 1, 1000, 1, 10, 10); spinbutton_alto = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_alto_adj), 1, 0); gtk_table_attach(GTK_TABLE(table_otros), spinbutton_alto, 1, 2, 0, 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(0), 0, 0); + // Lo desactiva ya que inicialmente está seleccionada la Línea. gtk_widget_set_sensitive(spinbutton_alto, FALSE); + // Agrega botón con ajuste para el Ancho. spinbutton_ancho_adj = gtk_adjustment_new(1, 1, 1000, 1, 10, 10); spinbutton_ancho = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_ancho_adj), 1, 0); gtk_table_attach(GTK_TABLE(table_otros), spinbutton_ancho, 1, 2, 1, 2, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(0), 0, 0); + // Lo desactiva ya que inicialmente está seleccionada la Línea. gtk_widget_set_sensitive(spinbutton_ancho, FALSE); + // Agrega botón con ajuste para el Radio. spinbutton_radio_adj = gtk_adjustment_new(1, 1, 1000, 1, 10, 10); spinbutton_radio = gtk_spin_button_new(GTK_ADJUSTMENT(spinbutton_radio_adj), 1, 0); gtk_table_attach(GTK_TABLE(table_otros), spinbutton_radio, 1, 2, 2, 3, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(0), 0, 0); + // Lo desactiva ya que inicialmente está seleccionada la Línea. gtk_widget_set_sensitive(spinbutton_radio, FALSE); + ////////////////// ASIGNACION DE FUNCIONES CALLBACK /////////////////////// + + // Conecta el evento (señal) delete_event para la ventana principal. g_signal_connect((gpointer) window, "delete_event", - G_CALLBACK(on_window_delete_event), - NULL); + G_CALLBACK(on_window_delete_event), NULL); + // Conecta el evento (señal) expose para el área de dibujo. g_signal_connect((gpointer) drawingarea, "expose_event", - G_CALLBACK(on_drawingarea_expose_event), - &dibujo); + G_CALLBACK(on_drawingarea_expose_event), &dibujo); + // Conecta el evento (señal) clicked del botón Borrar. g_signal_connect((gpointer) button_limpiar, "clicked", - G_CALLBACK(on_button_borrar_clicked), - &dibujo); + G_CALLBACK(on_button_borrar_clicked), &dibujo); + // Conecta el evento (señal) clicked del botón Actualizar. g_signal_connect((gpointer) button_actualizar, "clicked", - G_CALLBACK(on_button_graficar_clicked), - drawingarea); + G_CALLBACK(on_button_graficar_clicked), drawingarea); + // Conecta el evento (señal) clicked del botón Salir. g_signal_connect((gpointer) button_salir, "clicked", - G_CALLBACK(on_button_salir_clicked), - NULL); + G_CALLBACK(on_button_salir_clicked), NULL); + // Conecta el evento (señal) clicked del botón Agregar. g_signal_connect((gpointer) button_agregar, "clicked", - G_CALLBACK(on_button_agregar_clicked), - this); + G_CALLBACK(on_button_agregar_clicked), this); + // Conecta el evento (señal) toggled del botón de selección Línea. g_signal_connect((gpointer) radiobutton_linea, "toggled", - G_CALLBACK(on_radiobutton_linea_toggled), - this); + G_CALLBACK(on_radiobutton_linea_toggled), this); + // Conecta el evento (señal) toggled del botón de selección Cuadrado. g_signal_connect((gpointer) radiobutton_cuadrado, "toggled", - G_CALLBACK(on_radiobutton_cuadrado_toggled), - this); + G_CALLBACK(on_radiobutton_cuadrado_toggled), this); + // Conecta el evento (señal) toggled del botón de selección Rectángulo. g_signal_connect((gpointer) radiobutton_rectangulo, "toggled", - G_CALLBACK(on_radiobutton_rectangulo_toggled), - this); + G_CALLBACK(on_radiobutton_rectangulo_toggled), this); + // Conecta el evento (señal) toggled del botón de selección Círculo. g_signal_connect((gpointer) radiobutton_circulo, "toggled", - G_CALLBACK(on_radiobutton_circulo_toggled), - this); + G_CALLBACK(on_radiobutton_circulo_toggled), this); - // Muestro la ventana principal y todos sus componentes. + // Muestrá la ventana principal y todos sus componentes. gtk_widget_show_all(window); }