/* gmateso */ #include GtkWidget *ventana1; GtkWidget *dialogo; GtkWidget *about1; GdkColor colorfondo={0,0xFF00,0xFF00,0xee00}; GtkWidget *vbox, *hbox2; GtkWidget *label10, *label11, *label12; GtkWidget *menu_bar; GtkWidget *menu_temas, *menu_ayuda; GtkWidget *item_temas, *item_ayuda; GtkWidget *naturales_item, *fracciones_item, *salir_item; GtkWidget *acerca_item, *ayuda_item; GtkWidget *naturales_menu, *divisores_item, *primos_item, *factorizar_item, *mcm_item; GtkWidget *align; GtkWidget *scrolled_window; GtkTextBuffer *bufer; GtkTextView *view; GtkTextIter start, end; GtkTextTagTable *tags; GtkTextTag *subrayado, *fuente_12, *negrita, *color_rojo, *fuente_14; #include #define _(String) gettext (String) gint delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) { dialogo=gtk_message_dialog_new ( GTK_WINDOW (ventana1), GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, _("¿ Seguro que quieres cerrar gMatESO \ny todas sus fichas ?")); gint resultado= gtk_dialog_run (GTK_DIALOG (dialogo)); gtk_widget_destroy (dialogo); switch (resultado) { case GTK_RESPONSE_OK: system("pkill -x divisores"); system("pkill -x primos"); system("pkill -x factoriza"); system("pkill -x mcm"); system("pkill -x fracciones"); return FALSE; break; default: return TRUE; break; } } void destroy( GtkWidget *widget, gpointer data ) { gtk_main_quit (); } void crea_ventana_principal () { g_print("\nRuta actual es %s\n", g_get_current_dir ()); ventana1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request (GTK_WIDGET (ventana1), 700, 540); gtk_window_set_title (GTK_WINDOW (ventana1), "gMatESO"); g_signal_connect (G_OBJECT (ventana1), "delete_event", G_CALLBACK (delete_event), NULL); g_signal_connect (G_OBJECT (ventana1), "destroy", G_CALLBACK (destroy), NULL); gtk_widget_modify_bg (GTK_WIDGET (ventana1), GTK_STATE_NORMAL, &colorfondo); GString *carpeta; gchar *ruta; carpeta=g_string_new(NULL); /* g_string_append (carpeta, g_get_home_dir ());*/ g_string_append (carpeta, "/usr/share"); g_string_append (carpeta, "/gmateso/images/icono.png"); ruta = g_string_free (carpeta, FALSE); gtk_window_set_icon_from_file (GTK_WINDOW (ventana1), ruta, NULL); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (ventana1), vbox); menu_bar = gtk_menu_bar_new (); gtk_box_pack_start (GTK_BOX (vbox), menu_bar, FALSE, FALSE, 0); gtk_widget_set_size_request(GTK_WIDGET (menu_bar), -1, 26); gtk_widget_show (menu_bar); item_temas = gtk_menu_item_new_with_mnemonic (_("_Temas")); gtk_widget_show (item_temas); menu_temas = gtk_menu_new (); naturales_item = gtk_menu_item_new_with_label (_("Naturales")); /* Crea items de menú */ gtk_menu_append (GTK_MENU (menu_temas), naturales_item); /* Añade los items al menú */ gtk_widget_show (naturales_item); /* Mostrar los items de menú */ naturales_menu = gtk_menu_new(); /* submenú */ divisores_item = gtk_menu_item_new_with_label (_("Divisores de un nº")); gtk_widget_show (divisores_item); gtk_menu_append (GTK_MENU (naturales_menu), divisores_item); primos_item = gtk_menu_item_new_with_label (_("Números primos")); gtk_widget_show (primos_item); gtk_menu_append (GTK_MENU (naturales_menu), primos_item); factorizar_item = gtk_menu_item_new_with_label (_("Factorizar")); gtk_widget_show (factorizar_item); gtk_menu_append (GTK_MENU (naturales_menu), factorizar_item); mcm_item = gtk_menu_item_new_with_label (_("M.C.D. y m.c.m.")); gtk_widget_show (mcm_item); gtk_menu_append (GTK_MENU (naturales_menu), mcm_item); fracciones_item = gtk_menu_item_new_with_label (_("Fracciones")); gtk_menu_append (GTK_MENU (menu_temas), fracciones_item); gtk_widget_show (fracciones_item); salir_item = gtk_menu_item_new_with_label (_("Salir")); gtk_menu_append (GTK_MENU (menu_temas), salir_item); gtk_widget_show (salir_item); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item_temas), menu_temas); gtk_menu_bar_append (GTK_MENU_BAR (menu_bar), item_temas); gtk_menu_item_set_submenu (GTK_MENU_ITEM (naturales_item), naturales_menu); item_ayuda = gtk_menu_item_new_with_mnemonic (_("_Ayuda")); gtk_widget_show (item_ayuda); menu_ayuda = gtk_menu_new (); acerca_item = gtk_menu_item_new_with_label (_("Acerca de ")); gtk_menu_append (GTK_MENU (menu_ayuda), acerca_item); gtk_widget_show (acerca_item); ayuda_item = gtk_menu_item_new_with_label (_("Índice")); gtk_menu_append (GTK_MENU (menu_ayuda), ayuda_item); gtk_widget_show (ayuda_item); gtk_menu_item_set_submenu (GTK_MENU_ITEM (item_ayuda), menu_ayuda); gtk_menu_bar_append (GTK_MENU_BAR (menu_bar), item_ayuda); align = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 5); gtk_widget_show (align); hbox2 = gtk_hbox_new (FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER (hbox2), 1); gtk_container_add (GTK_CONTAINER (align), hbox2); gtk_widget_show (hbox2); label10 = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX (hbox2), label10, FALSE, FALSE, 0); gtk_label_set_markup (GTK_LABEL(label10), "g"); label11 = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX (hbox2), label11, FALSE, FALSE, 0); gtk_label_set_markup (GTK_LABEL(label11), "Mat"); label12 = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX (hbox2), label12, FALSE, FALSE, 0); gtk_label_set_markup (GTK_LABEL(label12), "ESO"); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 1); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); tags = gtk_text_tag_table_new(); bufer = gtk_text_buffer_new(tags); view = GTK_TEXT_VIEW(gtk_text_view_new_with_buffer(bufer)); gtk_text_view_set_left_margin (view, 5); gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET(view)); g_object_set(view, "wrap-mode", GTK_WRAP_WORD, NULL); fuente_12 = gtk_text_buffer_create_tag(bufer, "fuente_12", "size", 12 * PANGO_SCALE, NULL); negrita = gtk_text_buffer_create_tag(bufer, "negrita", "weight", 500, NULL); subrayado = gtk_text_buffer_create_tag(bufer,"subrayado", "underline", PANGO_UNDERLINE_SINGLE, NULL); color_rojo = gtk_text_buffer_create_tag(bufer, "color_rojo", "foreground", "#009900", NULL); fuente_14 = gtk_text_buffer_create_tag(bufer, "fuente_14", "size", 14 * PANGO_SCALE, NULL); gtk_text_buffer_set_text(bufer, "", -1); gtk_text_buffer_get_selection_bounds (bufer, &start, &end); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n Mediante el Menú "), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("Temas"), -1, "negrita","fuente_14", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _(" puedes acceder a la colección de fichas matemáticas gMatESO\n "), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n NATURALES"), -1, "fuente_12", "subrayado", "negrita", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - Divisores de un número"), -1, "fuente_12", "color_rojo", "negrita", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _(": calcula todos los divisores de un número dado."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - Números primos"), -1, "fuente_12", "color_rojo", "negrita", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _(": calcula todos los números primos menores a un número dado."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - Factorizar"), -1, "fuente_12", "color_rojo", "negrita", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _(": descompone un número en un producto de factores primos."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - M.C.D. y m.c.m."), -1, "fuente_12", "color_rojo", "negrita", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _(": calcula el Máximo Común Divisor y/o el mínimo común múltiplo de hasta 4 números."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n\n FRACCIONES"), -1, "fuente_12", "negrita", "subrayado", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - Nivel I"), -1, "fuente_12", "color_rojo", "negrita", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _(" Trás introducir una fracción permite:"), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - entender el concepto de fracción mediante un dibujo."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - simplificar la fracción dada."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - obtener fracciones equivalentes."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - Nivel II"), -1, "fuente_12", "color_rojo", "negrita", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _(" Trás introducir una pareja de fracciones permite:"), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - sumarlas, restarlas, multiplicarlas y dividirlas."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - reducirlas a común denominador."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - comprobar si son equivalentes."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - compararlas."), -1, "fuente_12", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _("\n - Nivel III"), -1, "fuente_12", "color_rojo", "negrita", NULL); gtk_text_buffer_insert_with_tags_by_name (bufer, &start, _(" Permite introducir expresiones (sencillas o complejas) combinadas con fracciones (incluyendo signos de operación y paréntesis). Calcula el resultado final operando paso a paso."), -1, "fuente_12", NULL); gtk_text_view_set_editable (view, FALSE); gtk_widget_show_all (ventana1); return; } void divisores_activate (GtkMenuItem *menuitem, gpointer user_data) { if (fork()==0) { GString *carpeta; gchar *texto; carpeta=g_string_new(NULL); /* g_string_append (carpeta, g_get_home_dir ());*/ g_string_append (carpeta, "/usr/bin/divisores"); texto = g_string_free (carpeta, FALSE); system (texto); exit (1); } } void primos_activate (GtkMenuItem *menuitem, gpointer user_data) { if (fork()==0) { GString *carpeta; gchar *texto; carpeta=g_string_new(NULL); /* g_string_append (carpeta, g_get_home_dir ());*/ g_string_append (carpeta, "/usr/bin/primos"); texto = g_string_free (carpeta, FALSE); system (texto); exit (1); } } void factorizar_activate (GtkMenuItem *menuitem, gpointer user_data) { if (fork()==0) { GString *carpeta; gchar *texto; carpeta=g_string_new(NULL); /* g_string_append (carpeta, g_get_home_dir ());*/ g_string_append (carpeta, "/usr/bin/factoriza"); texto = g_string_free (carpeta, FALSE); system (texto); exit (1); } } void mcm_activate (GtkMenuItem *menuitem, gpointer user_data) { if (fork()==0) { GString *carpeta; gchar *texto; carpeta=g_string_new(NULL); /* g_string_append (carpeta, g_get_home_dir ());*/ g_string_append (carpeta, "/usr/bin/mcm"); texto = g_string_free (carpeta, FALSE); system (texto); exit (1); } } void fracciones_activate (GtkMenuItem *menuitem, gpointer user_data) { if (fork()==0) { GString *carpeta; gchar *texto; carpeta=g_string_new(NULL); /* g_string_append (carpeta, g_get_home_dir ());*/ g_string_append (carpeta, "/usr/bin/fracciones"); texto = g_string_free (carpeta, FALSE); system (texto); exit (1); } } void acerca_de() { const gchar *authors[] = { "Daniel López Avellaneda ",NULL }; const gchar *documenters[] = { "Daniel López Avellaneda ", "Yáiza López Padilla ", NULL }; gchar *translators = _("Aún no se ha traducido a otros idiomas"); GtkWidget *about1; GdkPixbuf* pixbuf; GString *carpeta; gchar *texto; carpeta=g_string_new(NULL); g_string_append (carpeta, g_get_home_dir ()); g_string_append (carpeta, "/gmateso/images/icono.png"); texto = g_string_free (carpeta, FALSE); pixbuf = gdk_pixbuf_new_from_file ( texto, NULL); about1 = gnome_about_new ("gMatESO", "0.1", "Copyright \xc2\xa9 2005 Daniel López Avellaneda\n" "Copyright \xc2\xa9 2005 Yáiza López Padilla\n", _("gMatESO es una colección de fichas matemáticas para la ESO"), authors, documenters, translators, pixbuf); gtk_container_set_border_width (GTK_CONTAINER (about1), 5); gtk_window_set_type_hint (GTK_WINDOW (about1), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_widget_show (about1); } void acerca_activate (GtkMenuItem *menuitem, gpointer user_data) { acerca_de(); } void ayuda_activate (GtkMenuItem *menuitem, gpointer user_data) { if (fork()==0) { GString *carpeta; gchar *texto; carpeta=g_string_new(NULL); g_string_append (carpeta, "yelp "); /* g_string_append (carpeta, g_get_home_dir ());*/ g_string_append (carpeta, "/usr/share"); g_string_append (carpeta, "/gmateso/ayuda/manual.xml"); texto = g_string_free (carpeta, FALSE); system (texto); exit (1); } } void conecta_senales () { g_signal_connect ((gpointer) divisores_item, "activate", G_CALLBACK (divisores_activate), NULL); g_signal_connect ((gpointer) primos_item, "activate", G_CALLBACK (primos_activate), NULL); g_signal_connect ((gpointer) factorizar_item, "activate", G_CALLBACK (factorizar_activate), NULL); g_signal_connect ((gpointer) mcm_item, "activate", G_CALLBACK (mcm_activate), NULL); g_signal_connect ((gpointer) fracciones_item, "activate", G_CALLBACK (fracciones_activate), NULL); g_signal_connect ((gpointer) acerca_item, "activate", G_CALLBACK (acerca_activate), NULL); g_signal_connect ((gpointer) salir_item, "activate", G_CALLBACK (delete_event), NULL); g_signal_connect ((gpointer) salir_item, "activate", G_CALLBACK (destroy), NULL); g_signal_connect ((gpointer) ayuda_item, "activate", G_CALLBACK (ayuda_activate), NULL); }