]> git.lyx.org Git - lyx.git/commitdiff
Menubar and toolbar fixes. New OptItem menu option. Add gtk.m4.
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Tue, 25 Jul 2000 10:46:18 +0000 (10:46 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Tue, 25 Jul 2000 10:46:18 +0000 (10:46 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@918 a592a061-630c-0410-9148-cb99ea01b6c8

23 files changed:
ChangeLog
acinclude.m4
autogen.sh
config/gnome/gtk.m4 [new file with mode: 0644]
configure.in
lib/configure
lib/configure.m4
lib/ui/default.ui
src/BufferView_pimpl.C
src/LyXAction.C
src/LyXView.C
src/LyXView.h
src/MenuBackend.C
src/MenuBackend.h
src/ToolbarDefaults.C
src/commandtags.h
src/frontends/xforms/Menubar_pimpl.C
src/frontends/xforms/Toolbar_pimpl.C
src/insets/insetinclude.C
src/insets/insettext.C
src/lyxfunc.C
src/menus.C
src/support/filetools.C

index b1ebe9e6a27b3d5dc133120fccfcd546537c94cc..660d65183d4a85e648b1755dd1b85d4d8b417403 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,47 @@
+2000-07-25  Jean-Marc Lasgouttes  <Jean-Marc.Lasgouttes@inria.fr>
+
+       * config/gnome/gtk.m4: added (and added to the list of files in 
+       autogen.sh).
+
+       * src/insets/insetinclude.C (unique_id): fix when we are using
+       lyxstring instead of basic_string<>. 
+       * src/insets/insettext.C (LocalDispatch): ditto.
+       * src/support/filetools.C: ditto.
+
+       * lib/configure.m4: create the ui/ directory if necessary.
+
+       * src/LyXView.[Ch] (updateToolbar): new method.
+
+       * src/BufferView_pimpl.C (buffer): update the toolbar when
+       opening/closing buffer.
+
+2000-07-24  Jean-Marc Lasgouttes  <Jean-Marc.Lasgouttes@inria.fr>
+
+       * src/LyXAction.C (getActionName): enhance to return also the name
+       and options of pseudo-actions.
+       (init): New lyxfunc LFUN_MATH_PANEL=="math-panel".
+
+       * lib/ui/default.ui: use OptItem in the vc submenu (intented just
+       as an example of what is possible). Used in File->Build too (more
+       useful) and in the import/export menus (to mimick the complicated
+       handling of linuxdoc and friends). Try to update all the entries.
+
+       * src/frontends/xforms/Menubar_pimpl.C (create_submenu): handle
+       optional entries.
+
+       * src/MenuBackend.C (read): Parse the new OptItem tag.
+
+       * src/MenuBackend.h: Add a new optional_ data member (used if the
+       entry should be omitted when the lyxfunc is disabled).
+
+       * src/frontends/xforms/Menubar_pimpl.C (string_width): new
+       function, used as a shortcut.
+       (create_submenu): align correctly the shortcuts on the widest
+       entry.
+       
+       * src/MenuBackend.h: MenuItem.label() only returns the label of
+       the menu without shortcut; new method shortcut().
+       
 2000-07-14  Marko Vendelin <markov@ioc.ee>
 
        * src/frontends/gtk/Dialogs.C:
index d38bd4ed4b6f61a3de5a770644e9e6c7db528b1f..79fc208bc852e99ff250e8a7a52da9f44c0bfd54 100644 (file)
@@ -4358,6 +4358,200 @@ if test -n "$LIBXDMCP"; then
   ac_cpp=$ac_cpp_safe
 fi
 
+])
+# Configure paths for GTK+
+# Owen Taylor     97-11-3
+
+dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+dnl
+AC_DEFUN(AM_PATH_GTK,
+[dnl 
+dnl Get the cflags and libraries from the gtk-config script
+dnl
+AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
+            gtk_config_prefix="$withval", gtk_config_prefix="")
+AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
+            gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
+AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
+                   , enable_gtktest=yes)
+
+  for module in . $4
+  do
+      case "$module" in
+         gthread) 
+             gtk_config_args="$gtk_config_args gthread"
+         ;;
+      esac
+  done
+
+  if test x$gtk_config_exec_prefix != x ; then
+     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
+     if test x${GTK_CONFIG+set} != xset ; then
+        GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
+     fi
+  fi
+  if test x$gtk_config_prefix != x ; then
+     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
+     if test x${GTK_CONFIG+set} != xset ; then
+        GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
+     fi
+  fi
+
+  AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
+  min_gtk_version=ifelse([$1], ,0.99.7,$1)
+  AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
+  no_gtk=""
+  if test "$GTK_CONFIG" = "no" ; then
+    no_gtk=yes
+  else
+    GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
+    GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
+    gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_gtktest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GTK_CFLAGS"
+      LIBS="$GTK_LIBS $LIBS"
+dnl
+dnl Now check if the installed GTK is sufficiently new. (Also sanity
+dnl checks the results of gtk-config to some extent
+dnl
+      rm -f conf.gtktest
+      AC_TRY_RUN([
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int 
+main ()
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  system ("touch conf.gtktest");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_gtk_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_gtk_version");
+     exit(1);
+   }
+
+  if ((gtk_major_version != $gtk_config_major_version) ||
+      (gtk_minor_version != $gtk_config_minor_version) ||
+      (gtk_micro_version != $gtk_config_micro_version))
+    {
+      printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
+             $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
+             gtk_major_version, gtk_minor_version, gtk_micro_version);
+      printf ("*** was found! If gtk-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
+      printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
+      printf("*** before re-running configure\n");
+    } 
+#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
+  else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
+          (gtk_minor_version != GTK_MINOR_VERSION) ||
+           (gtk_micro_version != GTK_MICRO_VERSION))
+    {
+      printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
+            GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+            gtk_major_version, gtk_minor_version, gtk_micro_version);
+    }
+#endif /* defined (GTK_MAJOR_VERSION) ... */
+  else
+    {
+      if ((gtk_major_version > major) ||
+        ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+        ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
+               gtk_major_version, gtk_minor_version, gtk_micro_version);
+        printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
+              major, minor, micro);
+        printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
+        printf("*** correct copy of gtk-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_gtk" = x ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$GTK_CONFIG" = "no" ; then
+       echo "*** The gtk-config script installed by GTK could not be found"
+       echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the GTK_CONFIG environment variable to the"
+       echo "*** full path to gtk-config."
+     else
+       if test -f conf.gtktest ; then
+        :
+       else
+          echo "*** Could not run GTK test program, checking why..."
+          CFLAGS="$CFLAGS $GTK_CFLAGS"
+          LIBS="$LIBS $GTK_LIBS"
+          AC_TRY_LINK([
+#include <gtk/gtk.h>
+#include <stdio.h>
+],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GTK or finding the wrong"
+          echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+          echo "***"
+          echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
+          echo "*** came with the system with the command"
+          echo "***"
+          echo "***    rpm --erase --nodeps gtk gtk-devel" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GTK was incorrectly installed"
+          echo "*** or that you have moved GTK since it was installed. In the latter case, you"
+          echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     GTK_CFLAGS=""
+     GTK_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(GTK_CFLAGS)
+  AC_SUBST(GTK_LIBS)
+  rm -f conf.gtktest
 ])
 # aclocal-include.m4
 # 
index a55167fac087b2d7a27658085ba2ca2addb0fc02..89df54f0683e6c76093dc2b71d6f4c7a56f2e44b 100755 (executable)
@@ -24,7 +24,7 @@ fi
 echo -n "Generate acinclude.m4... "
 rm -f acinclude.m4 sigc++/acinclude.m4
 touch acinclude.m4
-for fil in config/lyxinclude.m4 config/libtool.m4 config/gettext.m4 config/lcmessage.m4 config/progtest.m4 config/sigc++.m4 config/kde.m4 config/gnome/aclocal-include.m4 config/gnome/gnome-print-check.m4 config/gnome/compiler-flags.m4 config/gnome/gnome-pthread-check.m4 config/gnome/curses.m4 config/gnome/gnome-support.m4 config/gnome/gnome-bonobo-check.m4 config/gnome/gnome-undelfs.m4 config/gnome/gnome-common.m4 config/gnome/gnome-vfs.m4 config/gnome/gnome-fileutils.m4 config/gnome/gnome-x-checks.m4 config/gnome/gnome-ghttp-check.m4 config/gnome/gnome-xml-check.m4 config/gnome/gnome-gnorba-check.m4 config/gnome/gnome.m4 config/gnome/gnome-guile-checks.m4 config/gnome/gperf-check.m4 config/gnome/gnome-libgtop-check.m4 config/gnome/linger.m4 config/gnome/gnome-objc-checks.m4 config/gnome/need-declaration.m4 config/gnome/gnome-orbit-check.m4 config/gnome/gtk--.m4 config/gnome/gnome--.m4 ; do
+for fil in config/lyxinclude.m4 config/libtool.m4 config/gettext.m4 config/lcmessage.m4 config/progtest.m4 config/sigc++.m4 config/kde.m4 config/gnome/gtk.m4 config/gnome/aclocal-include.m4 config/gnome/gnome-print-check.m4 config/gnome/compiler-flags.m4 config/gnome/gnome-pthread-check.m4 config/gnome/curses.m4 config/gnome/gnome-support.m4 config/gnome/gnome-bonobo-check.m4 config/gnome/gnome-undelfs.m4 config/gnome/gnome-common.m4 config/gnome/gnome-vfs.m4 config/gnome/gnome-fileutils.m4 config/gnome/gnome-x-checks.m4 config/gnome/gnome-ghttp-check.m4 config/gnome/gnome-xml-check.m4 config/gnome/gnome-gnorba-check.m4 config/gnome/gnome.m4 config/gnome/gnome-guile-checks.m4 config/gnome/gperf-check.m4 config/gnome/gnome-libgtop-check.m4 config/gnome/linger.m4 config/gnome/gnome-objc-checks.m4 config/gnome/need-declaration.m4 config/gnome/gnome-orbit-check.m4 config/gnome/gtk--.m4 config/gnome/gnome--.m4 ; do
     cat $fil >> acinclude.m4
 done
 touch sigc++/acinclude.m4
diff --git a/config/gnome/gtk.m4 b/config/gnome/gtk.m4
new file mode 100644 (file)
index 0000000..b8cf402
--- /dev/null
@@ -0,0 +1,194 @@
+# Configure paths for GTK+
+# Owen Taylor     97-11-3
+
+dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
+dnl
+AC_DEFUN(AM_PATH_GTK,
+[dnl 
+dnl Get the cflags and libraries from the gtk-config script
+dnl
+AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
+            gtk_config_prefix="$withval", gtk_config_prefix="")
+AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
+            gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
+AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
+                   , enable_gtktest=yes)
+
+  for module in . $4
+  do
+      case "$module" in
+         gthread) 
+             gtk_config_args="$gtk_config_args gthread"
+         ;;
+      esac
+  done
+
+  if test x$gtk_config_exec_prefix != x ; then
+     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
+     if test x${GTK_CONFIG+set} != xset ; then
+        GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
+     fi
+  fi
+  if test x$gtk_config_prefix != x ; then
+     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
+     if test x${GTK_CONFIG+set} != xset ; then
+        GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
+     fi
+  fi
+
+  AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
+  min_gtk_version=ifelse([$1], ,0.99.7,$1)
+  AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
+  no_gtk=""
+  if test "$GTK_CONFIG" = "no" ; then
+    no_gtk=yes
+  else
+    GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
+    GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
+    gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_gtktest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GTK_CFLAGS"
+      LIBS="$GTK_LIBS $LIBS"
+dnl
+dnl Now check if the installed GTK is sufficiently new. (Also sanity
+dnl checks the results of gtk-config to some extent
+dnl
+      rm -f conf.gtktest
+      AC_TRY_RUN([
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int 
+main ()
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  system ("touch conf.gtktest");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_gtk_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_gtk_version");
+     exit(1);
+   }
+
+  if ((gtk_major_version != $gtk_config_major_version) ||
+      (gtk_minor_version != $gtk_config_minor_version) ||
+      (gtk_micro_version != $gtk_config_micro_version))
+    {
+      printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
+             $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
+             gtk_major_version, gtk_minor_version, gtk_micro_version);
+      printf ("*** was found! If gtk-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
+      printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
+      printf("*** before re-running configure\n");
+    } 
+#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
+  else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
+          (gtk_minor_version != GTK_MINOR_VERSION) ||
+           (gtk_micro_version != GTK_MICRO_VERSION))
+    {
+      printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
+            GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+            gtk_major_version, gtk_minor_version, gtk_micro_version);
+    }
+#endif /* defined (GTK_MAJOR_VERSION) ... */
+  else
+    {
+      if ((gtk_major_version > major) ||
+        ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+        ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
+               gtk_major_version, gtk_minor_version, gtk_micro_version);
+        printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
+              major, minor, micro);
+        printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
+        printf("*** correct copy of gtk-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
+}
+],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_gtk" = x ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$GTK_CONFIG" = "no" ; then
+       echo "*** The gtk-config script installed by GTK could not be found"
+       echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the GTK_CONFIG environment variable to the"
+       echo "*** full path to gtk-config."
+     else
+       if test -f conf.gtktest ; then
+        :
+       else
+          echo "*** Could not run GTK test program, checking why..."
+          CFLAGS="$CFLAGS $GTK_CFLAGS"
+          LIBS="$LIBS $GTK_LIBS"
+          AC_TRY_LINK([
+#include <gtk/gtk.h>
+#include <stdio.h>
+],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GTK or finding the wrong"
+          echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+          echo "***"
+          echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
+          echo "*** came with the system with the command"
+          echo "***"
+          echo "***    rpm --erase --nodeps gtk gtk-devel" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GTK was incorrectly installed"
+          echo "*** or that you have moved GTK since it was installed. In the latter case, you"
+          echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     GTK_CFLAGS=""
+     GTK_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(GTK_CFLAGS)
+  AC_SUBST(GTK_LIBS)
+  rm -f conf.gtktest
+])
index 138610e4f5ef23ae0d0eda51cc356c0781003596..25256d52415e527d4c62a87d2823bafab21876ed 100644 (file)
@@ -62,7 +62,7 @@ LYX_SCO
 AC_EXEEXT
 
 ### Check for a C++ compiler
-#AC_LANG_CPLUSPLUS
+AC_LANG_CPLUSPLUS
 LYX_PROG_CXX
 AC_PROG_CXXCPP
 AC_DISABLE_SHARED
@@ -85,6 +85,8 @@ dnl we disable rtti for now
 dnl LYX_CXX_RTTI
 AC_CHECK_HEADERS(ostream istream sstream)
 LYX_CXX_STL_MODERN_STREAMS
+dnl It seems this is needed by gtk/gnome stuff
+AC_LANG_C
 
 ### We need a regex implementation, so we provide our own if none is found.
 LYX_REGEX
index 490c41f27d7a9c7023fa178e267dbb6474a3eab4..0ce81b5bffef25581f2e86b188e41127b66ccfd9 100755 (executable)
@@ -71,7 +71,7 @@ fi
 
 #### Create the build directories if necessary
 for dir in bind clipart doc examples images kbd layouts reLyX \
-    scripts templates ; do
+    scripts templates ui ; do
   test ! -d $dir && mkdir $dir
 done
 
index 07874301a57a26c3a0a359adc792f2e363529ead..2089654070d0b063c2b2251733c123a09e51ace5 100644 (file)
@@ -147,7 +147,7 @@ fi
 
 #### Create the build directories if necessary
 for dir in bind clipart doc examples images kbd layouts reLyX \
-    scripts templates ; do
+    scripts templates ui ; do
   test ! -d $dir && mkdir $dir
 done
 
index 79aa4b1c15f0ab653eb695cb5946a99a3d834db9..5d4c7737451b20cd3015a115f7b36e9a3d899800 100644 (file)
@@ -36,7 +36,7 @@ Menuset
        Item "View Postscript|w" "buffer-view-ps"
        Item "Update dvi|v" "buffer-typeset"
        Item "Update Postscript|u" "buffer-typeset-ps"
-       Item "Build program|B" "build-program"
+       OptItem "Build program|B" "build-program"
        Separator
        Item "Print...|P" "buffer-print"
        Item "Fax...|F" "buffer-fax"
@@ -68,11 +68,16 @@ Menuset
     End
 
     Menu "export"
-       Item "LaTeX|L" "buffer-export latex"
-       Item "DVI|D" "buffer-export dvi"
-       Item "Postscript|P" "buffer-export postscript"
-       Item "Ascii|A" "buffer-export ascii"
-       Item "Custom...|C" "buffer-export custom"
+       OptItem "as LaTeX|L" "buffer-export latex"
+       OptItem "as LinuxDoc|L" "buffer-export linuxdoc"
+       OptItem "as DocBook|B" "buffer-export docbook"
+       Item "as DVI|D" "buffer-export dvi"
+       Item "as Postscript|P" "buffer-export postscript"
+       Item "as Ascii|A" "buffer-export ascii"
+       OptItem "as HTML|H" "buffer-export html"
+       OptItem "as HTML|H" "buffer-export html-linuxdoc"
+       OptItem "as HTML|H" "buffer-export html-docbook"
+       OptItem "Custom...|C" "buffer-export custom"
     End
 
     Menu "edit"
@@ -86,8 +91,8 @@ Menuset
        Item "Find & Replace...|F" "find-replace"
        Item "Go to Error|E" "error-next"
        Item "Go to Note|N" "note-next"
-       Submenu "Floats & Insets|I" "floats"
-       Submenu "Table" "table"
+       Submenu "Floats & Insets|I" "edit_floats"
+       Submenu "Table" "edit_table"
        Item "Spellchecker...|S" "spellchecker"
        Item "Check TeX|h" "buffer-chktex"
        Item "Table of Contents|b" "toc-view"
@@ -96,23 +101,27 @@ Menuset
        Separator
        Item "View LaTeX log file|w" "latex-view-log"
        Separator
-       Item "Paste primary selection as Lines|L" "primary-selection-paste"
-       Item "Paste primary selection as Paragraphs|g" "primary-selection-paste paragraph"
+       SubMenu "Paste primary selection" "edit_paste"
     End
 
-    Menu "floats"
+    Menu "edit_floats"
     End
 
-    Menu "table"
+    Menu "edit_table"
+    End
+
+    Menu "edit_paste"
+       Item "as Lines|L" "primary-selection-paste"
+       Item "as Paragraphs|g" "primary-selection-paste paragraph"
     End
 
     Menu "vc"
-        Item "Register|R" "vc-register"
-        Item "Check In Changes|I" "vc-check-in"
-        Item "Check Out for Edit|O" "vc-check-out"
-        Item "Revert to last version|l" "vc-revert"
-        Item "Undo last check in|U" "vc-undo-last"
-        Item "Show History|H" "vc-history"
+        OptItem "Register|R" "vc-register"
+        OptItem "Check In Changes|I" "vc-check-in"
+        OptItem "Check Out for Edit|O" "vc-check-out"
+        OptItem "Revert to last version|l" "vc-revert"
+        OptItem "Undo last check in|U" "vc-undo-last"
+        OptItem "Show History|H" "vc-history"
     End
 
     Menu "layout"
@@ -141,6 +150,7 @@ Menuset
        Item "Include File...|I" "buffer-child-insert"
        Submenu "Import ascii file|a" "insert_ascii"
        Item "Insert LyX file|X" "file-insert"
+       Item "Insert external material...|e" "external-inset-insert"
        Separator
        Item "Footnote|F" "footnote-insert"
        Item "Marginnote|M" "marginpar-insert"
@@ -190,6 +200,7 @@ Menuset
        Item "Ellipsis|i" "dots-insert"
        Item "End of sentence|E" "end-of-sentence-period-insert"
        Item "Ordinary Quote|Q" "quote-insert"
+       Item "Menu Separator|M" "menu-separator-insert"
     End
 
     Menu "math"
index 3b407150f653730d3469c75dba49ebb015c650d4..f7151736c66e9f50dea2a17302f50f1d1937e026 100644 (file)
@@ -146,6 +146,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
 #else
                owner_->getMenus()->showMenus();
 #endif
+               owner_->updateToolbar();
                redraw();
                owner_->getDialogs()->updateBufferDependent();
                bv_->insetWakeup();
@@ -156,6 +157,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
 #else
                owner_->getMenus()->hideMenus();
 #endif
+               owner_->updateToolbar();
                updateScrollbar();
                workarea_->redraw();
 
index f9380b4ece79702a5ce9cf0459cb2fb4cbc10447..0e00c99510ad495098534295a497f49940b7c898 100644 (file)
@@ -322,6 +322,7 @@ void LyXAction::init()
                { LFUN_MATH_MODE, "math-mode", N_("Math mode"), Noop },
                { LFUN_MATH_NONUMBER, "math-nonumber", "", Noop },
                { LFUN_MATH_NUMBER, "math-number", "", Noop },
+               { LFUN_MATH_PANEL, "math-panel", "", Noop },
                { LFUN_MATH_SIZE, "math-size", "", Noop },
                { LFUN_MELT, "melt", N_("Melt"), Noop },
                { LFUN_MENU_OPEN_BY_NAME, "menu-open", "", NoBuffer },
@@ -597,10 +598,21 @@ string LyXAction::getApproxFuncName(string const & func) const
 
 string LyXAction::getActionName(int action) const
 {
-       info_map::const_iterator iit =
-               lyx_info_map.find(static_cast<kb_action>(action));
-
-       return iit != lyx_info_map.end() ? (*iit).second.name : string();
+       kb_action ac;
+       string arg;
+       if (isPseudoAction(action)) {
+               ac = retrieveActionArg(action, arg);
+               arg = " " +arg;
+       } 
+       else
+               ac = static_cast<kb_action>(action);
+
+       info_map::const_iterator iit = lyx_info_map.find(ac);
+
+       if (iit != lyx_info_map.end())
+               return (*iit).second.name + arg;
+       else 
+               return string();
 }
 
 
index e7f5b6017ca4998d2af5f3e4fee45309a0d35931..453296ac13b60bb2f050d5b660ef10a84e9cc4fb 100644 (file)
@@ -128,11 +128,19 @@ Toolbar * LyXView::getToolbar() const
        return toolbar;
 }
 
+
 void LyXView::setLayout(int layout)
 {
        toolbar->setLayout(layout);
 }
 
+
+void LyXView::updateToolbar()
+{
+       toolbar->update();
+}
+
+
 LyXFunc * LyXView::getLyXFunc() const
 {
        return lyxfunc;
index b4a23c4b32936d693796febb09079449080987d8..f4f82c6907a3e7daae7a567e5f6abbf12fee5fcd 100644 (file)
@@ -82,6 +82,9 @@ public:
        /// sets the layout in the toolbar layout combox
        void setLayout(int layout);
 
+       /// update the toolbar
+       void updateToolbar();
+
        /// return a pointer to the lyxfunc
        LyXFunc * getLyXFunc() const;
 
index a35d9f40d1067e59d7de9aea1c83256e53264077..d7dd0f618731f1d1b0071246f4429114a44b846e 100644 (file)
@@ -14,6 +14,7 @@
 #endif
 
 #include <config.h>
+#include "support/LAssert.h"
 #include "MenuBackend.h"
 #include "lyxlex.h"
 #include "LyXAction.h"
@@ -27,8 +28,9 @@ using std::endl;
 MenuBackend menubackend;
 
 
-MenuItem::MenuItem(Kind kind, string const & label, string const & command) 
-       : kind_(kind), label_(label) 
+MenuItem::MenuItem(Kind kind, string const & label, 
+                  string const & command, bool optional) 
+       : kind_(kind), label_(label), optional_(optional)
 {
        switch(kind) {
        case Separator:
@@ -42,6 +44,9 @@ MenuItem::MenuItem(Kind kind, string const & label, string const & command)
                        lyxerr << "MenuItem(): LyX command `"
                               << command << "' does not exist." << endl; 
                }
+               if (optional_)
+                       lyxerr[Debug::GUI] << "Optional item " 
+                                          << command << endl; 
                break;
        case Submenu:
                submenu_ = command;
@@ -64,6 +69,7 @@ void Menu::read(LyXLex & lex)
                md_documents,
                md_endmenu,
                md_lastfiles,
+               md_optitem,
                md_submenu,
                md_separator,
                md_last
@@ -74,6 +80,7 @@ void Menu::read(LyXLex & lex)
                { "end", md_endmenu },
                { "item", md_item },
                { "lastfiles", md_lastfiles },
+               { "optitem", md_optitem }, 
                { "separator", md_separator },
                { "submenu", md_submenu }
        };
@@ -83,15 +90,21 @@ void Menu::read(LyXLex & lex)
                lex.printTable(lyxerr);
 
        bool quit = false;
+       bool optional = false;
 
        while (lex.IsOK() && !quit) {
                switch(lex.lex()) {
+               case md_optitem:
+                       optional = true;
+                       // fallback to md_item
                case md_item: {
                        lex.next();
                        string name = lex.GetString();
                        lex.next();
                        string command = lex.GetString();
-                       add(MenuItem(MenuItem::Command, name, command));
+                       add(MenuItem(MenuItem::Command, name, 
+                                    command, optional));
+                       optional = false;
                        break;
                }
                case md_separator:
index 62d6a54f5391d333e4f0ea9833f1f1d37cf231a3..b434e885f8d10a791fd2455cc3698c0833f4c946 100644 (file)
@@ -19,7 +19,7 @@
 #endif
 
 #include "LString.h"
-#include "support/LAssert.h"
+#include "support/lstrings.h"
 #include <vector>
 
 class LyXLex;
@@ -43,16 +43,22 @@ public:
                Documents
        };
        /// Create a Command type MenuItem
-       MenuItem(Kind kind_, string const & label_ = string(), 
-                string const & command_ = string());
+       MenuItem(Kind kind, 
+                string const & label = string(), 
+                string const & command = string(), 
+                bool optional = false);
        /// The label of a given menuitem
-       string const & label() const { return label_; }
+       string label() const { return token(label_, '|', 0); }
+       ///
+       string shortcut() const { return token(label_, '|', 1); }
        /// The kind of entry
        Kind kind() const { return kind_; } 
        /// the action (if relevant)
        int action() const { return action_; }
        /// the description of the  submenu (if relevant)
        string const & submenu() const { return submenu_; }
+       /// returns true if the entry should be ommited when disabled
+       bool optional() const { return optional_; }
 private:
        ///
        Kind kind_;
@@ -62,6 +68,8 @@ private:
        int action_;
        ///
        string submenu_;
+       ///
+       bool optional_;
 };
 
 
index e2f04188a218470723f46bb569b2a9f1df396802..1a40c510b834b0aa6661b7522a730b1b217c2c6c 100644 (file)
@@ -121,9 +121,6 @@ void ToolbarDefaults::read(LyXLex & lex)
                lex.printTable(lyxerr);
        
        while (lex.IsOK() && !quit) {
-               
-               lyxerr[Debug::GUI] << "Toolbar::read: current lex text: `"
-                                      << lex.GetString() << '\'' << endl;
 
                switch(lex.lex()) {
                case TO_ADD:
index 13732893b23487a476db74a39b8cb80c3089cc79..a49f13fdfca7f49be1c9edc83b552a8852da65e7 100644 (file)
@@ -140,6 +140,7 @@ enum kb_action {
        LFUN_MATH_SIZE,   //  Alejandro 150896
        LFUN_MATH_MACRO,  // 120 // ale970510
        LFUN_MATH_MACROARG,  // ale970510
+       LFUN_MATH_PANEL,
        LFUN_FIGURE,
        LFUN_TABLE, // schedule for deletion
        LFUN_MELT,
index d3bd54caae96d2ae0993d6acec6c9bed4fd01bc4..7e486ad3fe98366328e2e37caca5dc4971fd688b 100644 (file)
@@ -26,7 +26,6 @@
 #include "bufferlist.h"
 #include "lastfiles.h"
 #include "LyXView.h"
-#include "lyx_gui_misc.h"
 #include "MenuBackend.h"
 #include "Menubar_pimpl.h"
 
@@ -50,11 +49,6 @@ char const * menu_tabstop = "aa";
 char const * default_tabstop = "aaaaaaaa";
 
 
-//Defined later.
-extern "C"
-void C_Menubar_Pimpl_MenuCallback(FL_OBJECT * ob, long button);
-
-
 Menubar::Pimpl::Pimpl(LyXView * view, MenuBackend const & mb) 
        : frame_(0), owner_(view), menubackend_(&mb)
 {
@@ -66,6 +60,18 @@ Menubar::Pimpl::~Pimpl()
        // Should we do something here?
 }
 
+// This is used a few times below.
+inline
+int string_width(string const & str) 
+{
+       return fl_get_string_widthTAB(FL_NORMAL_STYLE, MENU_LABEL_SIZE,
+                                     str.c_str(),      str.length());
+}
+
+//Defined later, used in set().
+extern "C"
+void C_Menubar_Pimpl_MenuCallback(FL_OBJECT * ob, long button);
+
 void Menubar::Pimpl::set(string const & menu_name) 
 {
        lyxerr[Debug::GUI] << "Entering Menubar::Pimpl::set " 
@@ -151,17 +157,14 @@ void Menubar::Pimpl::set(string const & menu_name)
                                " only submenus can appear in a menubar";
                        break;
                }
-               char const * label = idex(i->label().c_str());
-               char const * shortcut = scex(i->label().c_str());
-               int width = fl_get_string_width(FL_NORMAL_STYLE,
-                                               MENU_LABEL_SIZE,
-                                               label,
-                                               strlen(label));
+               string label = i->label();
+               string shortcut = i->shortcut();
+               int width = string_width(label);
                obj = fl_add_button(FL_TOUCH_BUTTON,
                                    air + moffset, yloc,
                                    width + mbadd,
                                    mbheight, 
-                                   label);
+                                   label.c_str());
                fl_set_object_boxtype(obj, FL_FLAT_BOX);
                fl_set_object_color(obj, FL_MCOL, FL_MCOL);
                fl_set_object_lsize(obj, MENU_LABEL_SIZE);
@@ -170,7 +173,7 @@ void Menubar::Pimpl::set(string const & menu_name)
                fl_set_object_gravity(obj, NorthWestGravity, 
                                      NorthWestGravity);
                moffset += obj->w + air;
-               fl_set_object_shortcut(obj, shortcut, 1);
+               fl_set_object_shortcut(obj, shortcut.c_str(), 1);
                fl_set_object_callback(obj, C_Menubar_Pimpl_MenuCallback, 1);
                ItemInfo * iteminfo = new ItemInfo(this, 
                                                   new MenuItem(*i), obj);
@@ -276,25 +279,22 @@ int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
 
        // Compute the size of the largest label (because xforms is
        // not able to support shortcuts correctly...)
-       int max_width = 0, max_tabs = 0;
-       int tab_width = fl_get_string_width(FL_NORMAL_STYLE, MENU_LABEL_SIZE,
-                                           menu_tabstop, strlen(menu_tabstop));
+       int max_width = 0;
+       string widest_label;
        for (Menu::const_iterator i = md.begin(); i != md.end(); ++i) {
                MenuItem item = (*i);
                if (item.kind() == MenuItem::Command) {
-                       string label = idex(item.label().c_str());
-                       int width = fl_get_string_width(FL_NORMAL_STYLE,
-                                                       MENU_LABEL_SIZE,
-                                                       label.c_str(),
-                                                       label.length());
-                       if (width > max_width)
+                       string label = item.label() + '\t';
+                       int width = string_width(label);
+                       if (width > max_width) {
                                max_width = width;
+                               widest_label = label;
+                       }
                }
        }
-       max_tabs = (max_width + 5)/tab_width + 1;
-       lyxerr[Debug::GUI] << "tab_width=" << tab_width 
-                          << ", max_width=" << max_width 
-                          << ", max_tabs=" << max_tabs << endl;
+       lyxerr[Debug::GUI] << "max_width=" << max_width 
+                          << ", widest_label=`" << widest_label 
+                          << "'" << endl;
 
        for (Menu::const_iterator i = md.begin(); i != md.end(); ++i) {
                MenuItem item = (*i);
@@ -308,30 +308,27 @@ int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
                case MenuItem::Command: {
                        LyXFunc::func_status flag = 
                                view->getLyXFunc()->getStatus(item.action()); 
+
+                       // handle optional entries.
+                       if (item.optional() && (flag & LyXFunc::Disabled)) {
+                               lyxerr[Debug::GUI] 
+                                       << "Skipping optional item " 
+                                       << item.label() << endl; 
+                               break;
+                       }
+
                        // Get the keys bound to this action, but keep only the
                        // first one later
                        string accel = toplevel_keymap->findbinding(item.action());
-                       lyxerr[Debug::GUI] << "Command: "  
-                                          << lyxaction.getActionName(item.action())
-                                          << " Binding " << accel << endl;
-
                        // Build the menu label from all the info
-                       string label = idex(item.label().c_str());
+                       string label = item.label();
 
                        if (!accel.empty()) {
-                               // Try to be clever and add enough
+                               // Try to be clever and add  just enough
                                // tabs to align shortcuts.
-                               int width = 
-                                       fl_get_string_width(FL_NORMAL_STYLE,
-                                                           MENU_LABEL_SIZE,
-                                                           label.c_str(),
-                                                           label.length());
-                               int nb = max_tabs - width/tab_width;
-                               lyxerr[Debug::GUI] << "label=" << label 
-                                                  << ", tabs=" << nb 
-                                                  << endl;
-                               if (nb > 0)
-                                       label += string(nb, '\t');
+                               do 
+                                       label += '\t';
+                               while (string_width(label) < max_width);
                                label += accel.substr(1,accel.find(']') - 1);
                        }
                        label += "%x" + tostr(item.action()) + extra_label;
@@ -347,10 +344,9 @@ int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
                        label += pupmode;
 
                        // Finally the menu shortcut
-                       string shortcut = scex(item.label().c_str());
-
+                       string shortcut = item.shortcut();
+                       string xfshortcut;
                        if (!shortcut.empty()) {
-                               string xfshortcut;
                                xfshortcut += uppercase(shortcut[0]);
                                xfshortcut += '#';
                                xfshortcut += uppercase(shortcut[0]);
@@ -364,6 +360,13 @@ int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
                                            strpool.add(xfshortcut));
                        } else
                                fl_addtopup(menu, strpool.add(label));
+                       
+                       lyxerr[Debug::GUI] << "Command: \""  
+                                          << lyxaction.getActionName(item.action())
+                                          << "\", Binding " << accel 
+                                          << ", shortcut " << xfshortcut 
+                                          << endl;
+
 
                        break;
                }
@@ -374,9 +377,9 @@ int Menubar::Pimpl::create_submenu(Window win, LyXView * view,
                                                     smn, strpool);
                        if (submenu == -1)
                                return -1;
-                       string label = idex(item.label().c_str());
+                       string label = item.label();
                        label += extra_label + "%m";
-                       string shortcut = scex(item.label().c_str());
+                       string shortcut = item.shortcut();
                        int n = fl_addtopup(menu, strpool.add(label), submenu);
                        fl_setpup_shortcut(menu, n, strpool.add(shortcut));
                        break;
index 4fe32344cbc119b819b027747eb1689403e68066..ff42a6bc30106f0771138c380b5b31e40771d8ff 100644 (file)
@@ -238,7 +238,8 @@ void ToolbarCB(FL_OBJECT * ob, long ac)
        
        string res = owner->getLyXFunc()->Dispatch(int(ac));
        if(!res.empty())
-               lyxerr[Debug::GUI] << res << endl;
+               lyxerr[Debug::GUI] << "ToolbarCB: Function returned: " 
+                                  << res << endl;
 }
 
 
index 1e08cce899af0bc8678296ac18b67c900ad36dee..539bdda2dc4d8ed3260fd359e53036eedb836095 100644 (file)
@@ -201,7 +201,8 @@ static string unique_id() {
        ost << "file" << ++seed << '\0';
 #endif
 
-       return ost.str();
+       // Needed if we use lyxstring.
+       return ost.str().c_str();
 }
 
 
index 13a75c012c996cef588f1f69da613b4544255109..c6c401cf0ee5e96ff8e9068827eee3658ce5bd50 100644 (file)
@@ -918,7 +918,7 @@ InsetText::LocalDispatch(BufferView * bv,
            }
                        
 #ifdef HAVE_SSTREAM
-           std::istringstream istr(arg);
+           std::istringstream istr(arg.c_str());
 #else
            istrstream istr(arg.c_str());
 #endif
index 83b46b6008a15548864691530c81ba2e14f47c6f..01f949df91e99fe43fac748ea13a041cc94fbd63 100644 (file)
@@ -123,6 +123,7 @@ extern void MenuSendto();
 extern void QuitLyX();
 extern void MenuFax(Buffer *);
 extern void MenuExport(Buffer *, string const &);
+extern void show_symbols_form(LyXFunc *);
 
 extern LyXAction lyxaction;
 // (alkis)
@@ -380,20 +381,31 @@ LyXFunc::func_status LyXFunc::getStatus(int ac) const
                disable = noLaTeX || lyxrc.fax_command == "none";
                break;
        case LFUN_IMPORT:
-               if (argument == "latex")
+               if (argument == "latex" || argument == "noweb")
                        disable = lyxrc.relyx_command == "none";
-               if (argument == "linuxdoc")
+               else if (argument == "linuxdoc")
                        disable = lyxrc.linuxdoc_to_lyx_command == "none";
                break;
        case LFUN_EXPORT:
-               if (argument == "dvi" || argument == "postscript")
+               if (argument == "latex")
+                       disable = ! buf->isLatex();
+               else if (argument == "linuxdoc")
+                       disable = ! buf->isLinuxDoc();
+               else if (argument == "docbook")
+                       disable = ! buf->isDocBook();
+               else if (argument == "dvi" || argument == "postscript")
                        disable = noLaTeX;
-               if (argument == "html")
-                       disable = lyxrc.html_command == "none";
-               if (argument == "html-linuxdoc")
-                       disable = lyxrc.linuxdoc_to_html_command == "none";
-               if (argument == "html-docbook")
-                       disable = lyxrc.docbook_to_html_command == "none";
+               else if (argument == "html")
+                       disable = (! buf->isLatex() 
+                                  || lyxrc.html_command == "none");
+               else if (argument == "html-linuxdoc")
+                       disable = (! buf->isLinuxDoc() 
+                                  || lyxrc.linuxdoc_to_html_command == "none");
+               else if (argument == "html-docbook")
+                       disable = (! buf->isDocBook() 
+                                  || lyxrc.docbook_to_html_command == "none");
+               else if (argument == "custom")
+                       disable == ! buf->isLatex();
                break;
        case LFUN_UNDO:
                disable = buf->undostack.empty();
@@ -407,6 +419,9 @@ LyXFunc::func_status LyXFunc::getStatus(int ac) const
        case LFUN_RUNCHKTEX:
                disable = lyxrc.chktex_command == "none";
                break;
+       case LFUN_BUILDPROG:
+               disable = (lyxrc.literate_command == "none" 
+                          || ! buf->isLiterate());
 #ifndef NEW_TABULAR
        case LFUN_LAYOUT_TABLE:
                disable = ! owner->view()->text->cursor.par()->table;
@@ -2447,8 +2462,7 @@ string LyXFunc::Dispatch(int ac,
        break;
 
        case LFUN_MATH_MODE:   // Open or create a math inset
-       {
-               
+       {               
                if (owner->view()->available())
                        owner->view()->open_new_inset(new InsetFormula);
                setMessage(N_("Math editor mode"));
@@ -2459,6 +2473,13 @@ string LyXFunc::Dispatch(int ac,
        case LFUN_MATH_LIMITS:
        {
                setErrorMessage(N_("This is only allowed in math mode!"));
+       
+       }
+       break;
+
+       case LFUN_MATH_PANEL:
+       {
+               show_symbols_form(this);
        }
        break;
        
index 523cfe3c637665b0e6bd147951637a0eb04d29e6..6a86739199780f229ced9db7bc5e3dcfd8b256ef 100644 (file)
@@ -68,7 +68,6 @@ extern BufferList bufferlist;
 
 extern void MenuLayoutSave();
 extern void ShowCredits();
-extern void show_symbols_form(LyXFunc *);
 
 // A bunch of wrappers
 
@@ -1997,7 +1996,7 @@ void Menus::ShowMathMenu(FL_OBJECT * ob, long)
                        tmpfunc->Dispatch(LFUN_MATH_DISPLAY);
                        break;
                case 9: /* Panel */
-                       show_symbols_form(tmpfunc);
+                       tmpfunc->Dispatch(LFUN_MATH_PANEL);
                        break;
                }
                men->currentView()->update(BufferView::SELECT|BufferView::FITCUR);
index fcf8b73aec10385dbbf03df4537015135666e0f0..52e642203bf262f1fe9295f5ee27aabd6d891ece 100644 (file)
@@ -735,7 +735,7 @@ string GetFileContents(string const & fname) {
                        ofs << ifs.rdbuf();
                        ifs.close();
 #ifdef HAVE_SSTREAM
-                       return ofs.str();
+                       return ofs.str().c_str();
 #else
                        ofs << '\0';
                        char const * tmp = ofs.str();