]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/mathml_editor/test/guiGTK.c
ocaml 3.09 transition
[helm.git] / helm / DEVEL / mathml_editor / test / guiGTK.c
index 7426e3f5db0da0ed6b629e8820fe46b0e192e9e3..ce6c31ef227b078c4d9eec664879372115727999 100644 (file)
@@ -1,25 +1,26 @@
-/*
- * Copyright (C) 2000, Luca Padovani <luca.padovani@cs.unibo.it>.
+/* This file is part of EdiTeX, an editor of mathematical
+ * expressions based on TeX syntax.
  * 
- * This file is part of GtkMathView, a Gtk widget for MathML.
- * 
- * GtkMathView is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- * 
- * GtkMathView is distributed in the hope that it will be useful,
+ * Copyright (C) 2002-2003 Luca Padovani <lpadovan@cs.unibo.it>,
+ *                    2003 Paolo Marinelli <pmarinel@cs.unibo.it>.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GtkMathView; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- * 
- * For details, see the GtkMathView World-Wide-Web page,
- * http://cs.unibo.it/~lpadovan/mml-widget, or send a mail to
- * <luca.padovani@cs.unibo.it>
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * For more information, please visit the project's home page
+ * http://helm.cs.unibo.it/editex/
+ * or send an email to <lpadovan@cs.unibo.it>
  */
 
 #include <config.h>
@@ -27,7 +28,6 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
 
-#include <gtkmathview/gtkmathview.h>
 #include "guiGTK.h"
 
 #define XLINK_NS_URI "http://www.w3.org/1999/xlink"
@@ -35,8 +35,6 @@
 static GtkWidget* window;
 static GtkWidget* main_area;
 static GtkWidget* scrolled_area;
-static GtkMenuItem* anti_aliasing_item;
-static GtkMenuItem* transparency_item;
 
 static gpointer context = NULL;
 static gchar* doc_name = NULL;
@@ -48,15 +46,14 @@ static GtkWidget* get_main_menu(void);
 static void file_open(GtkWidget*, gpointer);
 static void file_re_open(GtkWidget*, gpointer);
 static void file_close(GtkWidget*, gpointer);
-static void options_font_manager(GtkWidget*, FontManagerId);
+static void file_output_tex(GtkWidget*, gpointer);
 static void options_set_font_size(GtkWidget*, gpointer);
 static void options_change_font_size(GtkWidget*, gboolean);
 static void options_verbosity(GtkWidget*, guint);
-static void options_anti_aliasing(GtkWidget*, gpointer);
-static void options_transparency(GtkWidget*, gpointer);
 static void edit_delete_selection(GtkWidget*, gpointer);
 static void edit_select_parent(GtkWidget*, gpointer);
 static void edit_reset_selection(GtkWidget*, gpointer);
+static void edit_reset(GtkWidget*, gpointer);
 static void edit_insert(GtkWidget*, gpointer);
 static void help_about(GtkWidget*, gpointer);
 
@@ -65,6 +62,7 @@ static GtkItemFactoryEntry menu_items[] = {
   { "/File/_Open...",                  "<control>O", file_open,     0, NULL },
   { "/File/_Reopen",                   NULL,         file_re_open,  0, NULL },
   { "/File/_Close",                    "<control>W", file_close,    0, NULL },
+  { "/File/Output _TeX",               NULL,         file_output_tex, 0, NULL },
   { "/File/sep1",                      NULL,         NULL,          0, "<Separator>" },
   { "/File/_Quit",                     "<control>Q", gtk_main_quit, 0, NULL },
 
@@ -73,6 +71,7 @@ static GtkItemFactoryEntry menu_items[] = {
   { "/Edit/Delete Selection",          NULL, edit_delete_selection, 0, NULL },
   { "/Edit/Select Parent",             NULL, edit_select_parent,    0, NULL },
   { "/Edit/sep1",                      NULL,         NULL,          0, "<Separator>" },
+  { "/Edit/_Reset",                    NULL, edit_reset,            0, NULL },
   { "/Edit/Insert...",                 "<control>I", edit_insert,   0, NULL },
 
   { "/_Options",                       NULL, NULL,                  0,  "<Branch>" },
@@ -81,17 +80,11 @@ static GtkItemFactoryEntry menu_items[] = {
   { "/Options/Default Font Size/sep1", NULL, NULL,                  0,  "<Separator>" },
   { "/Options/Default Font Size/Larger", NULL, options_change_font_size, TRUE, NULL },
   { "/Options/Default Font Size/Smaller", NULL, options_change_font_size, FALSE, NULL },
-  { "/Options/Font Manager",           NULL, NULL,                  0,  "<Branch>" },
-  { "/Options/Font Manager/_GTK",      NULL, options_font_manager,  FONT_MANAGER_GTK, "<RadioItem>" },
-  { "/Options/Font Manager/_Type 1",   NULL, options_font_manager,  FONT_MANAGER_T1, "/Options/Font Manager/GTK" },
   { "/Options/Verbosity",              NULL, NULL,                  0,  "<Branch>" },
   { "/Options/Verbosity/_Errors",      NULL, options_verbosity,     0,  "<RadioItem>" },
   { "/Options/Verbosity/_Warnings",    NULL, options_verbosity,     1,  "/Options/Verbosity/Errors" },
   { "/Options/Verbosity/_Info",        NULL, options_verbosity,     2,  "/Options/Verbosity/Errors" },
   { "/Options/Verbosity/_Debug",       NULL, options_verbosity,     3,  "/Options/Verbosity/Errors" },
-  { "/Options/sep1",                   NULL, NULL,                  0,  "<Separator>" },
-  { "/Options/_Anti Aliasing",         NULL, options_anti_aliasing, 0,  "<ToggleItem>" },
-  { "/Options/_Transparency",          NULL, options_transparency,  0,  "<ToggleItem>" },
 
   { "/_Help" ,        NULL,         NULL,          0, "<LastBranch>" },
   { "/Help/About...", NULL,         help_about,    0, NULL }
@@ -133,6 +126,9 @@ load_error_msg(const char* name)
   g_free(msg);
 }
 
+static guint edit_timeout_id;
+extern void edit_timeout(gpointer);
+
 void
 GUI_init(int* argc, char*** argv, char* title, guint width, guint height, gpointer c)
 {
@@ -147,7 +143,7 @@ GUI_init(int* argc, char*** argv, char* title, guint width, guint height, gpoint
   gtk_widget_show(window);
 
   context = c;
-  /*edit_timeout_id = gtk_timeout_add(400, edit_timeout, context);*/
+  /*edit_timeout_id = gtk_timeout_add(50, edit_timeout, context);*/
 }
 
 void
@@ -183,7 +179,7 @@ GUI_load_document(GdomeDocument* doc)
 
   math_view = GTK_MATH_VIEW(main_area);
 
-  if (!gtk_math_view_load_doc(math_view, doc)) return -1;
+  if (!gtk_math_view_load_document(math_view, doc)) return -1;
 
   return 0;
 }
@@ -222,6 +218,7 @@ GUI_run()
   gtk_main();
 }
 
+#if 0
 void
 GUI_set_font_manager(FontManagerId id)
 {
@@ -241,17 +238,13 @@ GUI_set_font_manager(FontManagerId id)
   if (id != gtk_math_view_get_font_manager_type(math_view))
     gtk_math_view_set_font_manager_type(math_view, id);
 
-  gtk_widget_set_sensitive(anti_aliasing_item, t1);
-  gtk_widget_set_sensitive(transparency_item, t1);
-
-  if (t1)
-    {
-      gtk_math_view_set_anti_aliasing(math_view, GTK_CHECK_MENU_ITEM(anti_aliasing_item)->active);
+  gtk_widget_set_sensitive(anti_aliasing(math_view, GTK_CHECK_MENU_ITEM(anti_aliasing_item)->active);
       gtk_math_view_set_transparency(math_view, GTK_CHECK_MENU_ITEM(transparency_item)->active);
     }
 
   gtk_math_view_thaw(math_view);
 }
+#endif
 
 static void
 store_filename(GtkFileSelection* selector, GtkWidget* user_data)
@@ -299,25 +292,20 @@ file_open(GtkWidget* widget, gpointer data)
 }
 
 static void
-options_font_manager(GtkWidget* widget, FontManagerId id)
+file_output_tex(GtkWidget* widget, gpointer data)
 {
-  g_return_if_fail(id != FONT_MANAGER_UNKNOWN);
-  GUI_set_font_manager(id);
+  g_assert(context != NULL);
+  edit_output_tex(context);
 }
 
+#if 0
 static void
-options_anti_aliasing(GtkWidget* widget, gpointer data)
-{
-  gboolean aa = gtk_math_view_get_anti_aliasing(GTK_MATH_VIEW(main_area));
-  gtk_math_view_set_anti_aliasing(GTK_MATH_VIEW(main_area), !aa);
-}
-
-static void
-options_transparency(GtkWidget* widget, gpointer data)
+options_font_manager(GtkWidget* widget, FontManagerId id)
 {
-  gboolean t = gtk_math_view_get_transparency(GTK_MATH_VIEW(main_area));
-  gtk_math_view_set_transparency(GTK_MATH_VIEW(main_area), !t);
+  g_return_if_fail(id != FONT_MANAGER_UNKNOWN);
+  GUI_set_font_manager(id);
 }
+#endif
 
 static void
 options_verbosity(GtkWidget* widget, guint level)
@@ -369,6 +357,13 @@ edit_reset_selection(GtkWidget* widget, gpointer data)
     }
 }
 
+static void
+edit_reset(GtkWidget* widget, gpointer data)
+{
+  g_assert(context != NULL);
+  edit_reset_tex(context);
+}
+
 static void
 insert_tex(GtkWidget* widget, GtkEntry* entry)
 {
@@ -574,10 +569,13 @@ key_press_event(gpointer c,
   switch (event->keyval)
     {
     case GDK_BackSpace:
-      edit_drop(context, event->state & GDK_MOD1_MASK);
+      edit_drop(context, event->state & GDK_MOD1_MASK, event->state & GDK_CONTROL_MASK);
+      break;
+    case GDK_Tab:
+      edit_complete(context);
       break;
     default:
-      if ((event->state & (~GDK_SHIFT_MASK)) == 0 && event->keyval < 0x80)
+      if ((event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)) == 0 && event->keyval < 0x80)
        edit_push_char(context, event->keyval);
       return FALSE;
     }
@@ -628,9 +626,6 @@ create_widget_set(gpointer context)
   gtk_box_pack_start(GTK_BOX(main_vbox), scrolled_area, TRUE, TRUE, 0);
 
   gtk_widget_show(main_vbox);
-
-  if (gtk_math_view_get_anti_aliasing(GTK_MATH_VIEW(main_area)))
-    gtk_menu_item_activate(anti_aliasing_item);
 }
 
 GtkWidget*
@@ -650,11 +645,5 @@ get_main_menu()
 
   gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
 
-  menu_item = gtk_item_factory_get_widget(item_factory, "/Options/Anti Aliasing");
-  anti_aliasing_item = GTK_MENU_ITEM(menu_item);
-
-  menu_item = gtk_item_factory_get_widget(item_factory, "/Options/Transparency");
-  transparency_item = GTK_MENU_ITEM(menu_item);
-
   return gtk_item_factory_get_widget(item_factory, "<main>");
 }