]> git.lyx.org Git - lyx.git/commitdiff
regex patch for gnom from Marko
authorLars Gullik Bjønnes <larsbj@gullik.org>
Fri, 15 Sep 2000 17:01:24 +0000 (17:01 +0000)
committerLars Gullik Bjønnes <larsbj@gullik.org>
Fri, 15 Sep 2000 17:01:24 +0000 (17:01 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1023 a592a061-630c-0410-9148-cb99ea01b6c8

ChangeLog
po/POTFILES.in
src/frontends/gnome/FormCitation.C
src/frontends/gnome/FormCitation.h
src/frontends/gnome/diainsertcitation_interface.c
src/frontends/gnome/dialogs/diainsertcitation.glade
src/menus.C [deleted file]
src/menus.h [deleted file]

index 350a1ebe9b02b86181dbc7c7e6cbe8b7ea9d4759..3501ed3f8c45ad1325e796ee2da46a12739843b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2000-09-15  Marko Vendelin <markov@ioc.ee>
+       * src/frontends/gnome/FormCitation.C
+       * src/frontends/gnome/FormCitation.h
+       * src/frontends/gnome/diainsertcitation_interface.c
+       * src/frontends/gnome/dialogs/diainsertcitation.glade: adds
+       regexp support to FormCitation [Gnome].
+            
 2000-09-15  John Levon  <moz@compsoc.man.ac.uk>
 
        * acconfig.h
index a70f1b39b2df2e1025e53d75b8a5cfecd45a685d..70efb80a26b9d5b8cfd57f7e54f15ac9d1215a54 100644 (file)
@@ -119,7 +119,6 @@ src/mathed/formulamacro.C
 src/mathed/math_forms.C
 src/mathed/math_panel.C
 src/MenuBackend.C
-src/menus.C
 src/minibuffer.C
 src/PaperLayout.C
 src/paragraph.C
index 6056cf68d046a76531658950be792944c07413da..9127069e72579e0f328dc558305a2ba152cb2cae 100644 (file)
@@ -25,6 +25,7 @@
 #include "buffer.h"
 #include "lyxfunc.h"
 #include "support/filetools.h"
+#include "support/LRegex.h"
 
 extern "C" {
 #include "diainsertcitation_interface.h"
@@ -63,6 +64,9 @@ using SigC::bind;
 #define CONF_COLUMN                    "column"
 #define CONF_COLUMN_DEFAULT            "=50"
 
+#define CONF_REGEXP                    "regexp"
+#define CONF_REGEXP_DEFAULT            "=0"
+
 
 FormCitation::FormCitation(LyXView * lv, Dialogs * d)
        : lv_(lv), d_(d), u_(0), h_(0), ih_(0), inset_(0), dialog_(NULL)
@@ -209,6 +213,8 @@ void FormCitation::show()
       button_down_ = Gtk::wrap( GTK_BUTTON( lookup_widget(pd, "button_down") ) );
       button_search_ = Gtk::wrap( GTK_BUTTON( lookup_widget(pd, "button_search") ) );
 
+      button_regexp_ = Gtk::wrap( GTK_CHECK_BUTTON( lookup_widget(pd, "button_regexp") ) );
+
       paned_info_ = Gtk::wrap( GTK_PANED( lookup_widget(pd, "vpaned_info") ) );
       paned_key_ = Gtk::wrap( GTK_PANED( lookup_widget(pd, "hpaned_key") ) );
       box_keys_ =  Gtk::wrap( GTK_BOX( lookup_widget(pd, "vbox_keys") ) );
@@ -291,6 +297,10 @@ void FormCitation::show()
          w = path + "/" + CONF_COLUMN + "_" + tostr(i) + CONF_COLUMN_DEFAULT;
          clist_bib_->column(i).set_width( gnome_config_get_int(w.c_str()) );
        }
+
+      // restoring regexp setting
+      w = path + "/" + CONF_REGEXP + CONF_REGEXP_DEFAULT;
+      button_regexp_->set_active( (gnome_config_get_int(w.c_str()) > 0) );
       
       // ready to go...
       if (!dialog_->is_visible()) dialog_->show_all();
@@ -499,6 +509,9 @@ void FormCitation::free()
          gnome_config_set_int(w.c_str(), clist_bib_->get_column_width(i));
        }
 
+      w = path + "/" + CONF_REGEXP;
+      gnome_config_set_int(w.c_str(), button_regexp_->get_active());
+
       gnome_config_sync();
 
       // cleaning up
@@ -546,8 +559,45 @@ void FormCitation::sortBibList(gint col)
   clist_bib_->sort();
 }
 
-// looking for entries which contain all the words specified in search_text entry
 void FormCitation::search()
+{
+  if (button_regexp_->get_active()) searchReg();
+  else searchSimple();
+}
+
+// looking for entries which match regexp
+void FormCitation::searchReg()
+{
+  string tmp, rexptxt( search_text_->get_entry()->get_text() );
+  rexptxt = frontStrip( strip( rexptxt ) );
+  
+  LRegex reg(rexptxt);
+
+  // populating clist_bib_
+  clist_bib_->rows().clear();
+
+  clist_bib_->freeze();
+
+  int i, sz;
+  bool additem;
+  for ( i = 0, sz = bibkeys.size(); i < sz; ++i )
+    {
+      string data = bibkeys[i] + bibkeysInfo[i];
+
+      if (rexptxt.empty()) additem = true;
+      else additem = (reg.exec(data).size() > 0);
+            
+      if ( additem ) addItemToBibList(i);
+    }
+
+  clist_bib_->sort();
+  clist_bib_->thaw();
+  // clist_bib_: done
+  updateButtons();
+}
+
+// looking for entries which contain all the words specified in search_text entry
+void FormCitation::searchSimple()
 {
   vector<string> searchwords;
   string tmp, stext( search_text_->get_entry()->get_text() );
index c55838aada5e73e6f995dcb1c7b18ec94462d308..96cd4d0773635daf92079f4458e44a4f17bf45dd 100644 (file)
@@ -28,6 +28,7 @@
 #include <gtk--/button.h>
 #include <gtk--/paned.h>
 #include <gtk--/box.h>
+#include <gtk--/checkbutton.h>
 
 /** This class provides an Gnome implementation of the FormCitation Dialog.
  */
@@ -74,6 +75,8 @@ private:
   void moveCitationDown();
   /// searches for entries
   void search();
+  void searchReg();
+  void searchSimple();
 
   /// add item to the list 
   void addItemToBibList(int i);
@@ -113,7 +116,8 @@ private:
   Gtk::Button * button_up_;
   Gtk::Button * button_down_;
   Gtk::Button * button_search_;
-
+  Gtk::CheckButton * button_regexp_;
+  
   Gtk::CList * clist_selected_;
   Gtk::CList * clist_bib_;
   
index 5a810ab0cc21910dd6da300a46a5c386664550d0..776fb9700940b9d4805e1e1b5656be82264f6632 100644 (file)
@@ -42,6 +42,7 @@ create_DiaInsertCitation (void)
   GtkWidget *search_text;
   GtkWidget *combo_entry1;
   GtkWidget *button_search;
+  GtkWidget *button_regexp;
   GtkWidget *vbox5;
   GtkWidget *alignment2;
   GtkWidget *label16;
@@ -236,6 +237,13 @@ create_DiaInsertCitation (void)
   gtk_box_pack_start (GTK_BOX (hbox3), button_search, FALSE, FALSE, 0);
   gtk_container_set_border_width (GTK_CONTAINER (button_search), 2);
 
+  button_regexp = gtk_check_button_new_with_label (_("Use Regular Expression"));
+  gtk_widget_ref (button_regexp);
+  gtk_object_set_data_full (GTK_OBJECT (DiaInsertCitation), "button_regexp", button_regexp,
+                            (GtkDestroyNotify) gtk_widget_unref);
+  gtk_widget_show (button_regexp);
+  gtk_box_pack_start (GTK_BOX (hbox3), button_regexp, FALSE, FALSE, 0);
+
   vbox5 = gtk_vbox_new (FALSE, 1);
   gtk_widget_ref (vbox5);
   gtk_object_set_data_full (GTK_OBJECT (DiaInsertCitation), "vbox5", vbox5,
index 783b571e57992d267fb92a1f1e8abe2f5b804ea4..167d6a756f8d6b282b0445397780d7f1f5a0efb9 100644 (file)
                  <fill>False</fill>
                </child>
              </widget>
+
+             <widget>
+               <class>GtkCheckButton</class>
+               <name>button_regexp</name>
+               <can_focus>True</can_focus>
+               <label>Use Regular Expression</label>
+               <active>False</active>
+               <draw_indicator>True</draw_indicator>
+               <child>
+                 <padding>0</padding>
+                 <expand>False</expand>
+                 <fill>False</fill>
+               </child>
+             </widget>
            </widget>
          </widget>
        </widget>
diff --git a/src/menus.C b/src/menus.C
deleted file mode 100644 (file)
index a34dbdc..0000000
+++ /dev/null
@@ -1,2192 +0,0 @@
-/*
- *  This file is part of
- * ================================================== 
- *
- *       LyX, The Document Processor
- *
- *       Copyright 1995 Matthias Ettrich
- *       Copyright 1995-2000 The LyX Team.
- *
- * ================================================== 
- */
-
-/* This file contains all the menu and submenu declarations.
-   The call backs are in lyx_cb.C */
-
-/*
- * REMEMBER:
- * XFORMS can handle 10 (more with the new xforms, but not unlimited)
- * popups at the same time
- * so when you are finished looking at a pup free it (fl_freepup)
- */
-
-#include <config.h>
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
-#include <algorithm>
-
-#include "menus.h"
-#include "version.h"
-#include "lyxfont.h"
-#include "lyx_main.h"
-#include "lyxfunc.h"
-#include "spellchecker.h"
-#include "support/filetools.h"
-#include "LyXView.h"
-#include "lastfiles.h"
-#include "bufferlist.h"
-#include "lyx_gui_misc.h"
-#include "minibuffer.h"
-#include "intl.h"
-#include "debug.h"
-#include "lyxrc.h"
-#include "lyxtext.h"
-#include "gettext.h"
-#include "layout.h"
-#include "lyx_cb.h"
-#include "bufferview_funcs.h"
-#include "insets/insetref.h"
-#include "insets/insettabular.h"
-#include "tabular.h"
-#include "exporter.h"
-
-#include "frontends/Dialogs.h"
-
-using std::vector;
-using std::pair;
-using std::endl;
-using std::max;
-using std::min;
-using std::sort;
-
-extern BufferList bufferlist;
-
-// I would really prefere to see most or all of these 'extern's disappear.
-// Their commands should be called through LyXFunc (IMO). (Lgb)
-
-extern void MenuLayoutSave();
-extern void ShowCredits();
-
-// A bunch of wrappers
-
-extern "C" void C_Menus_ShowFileMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowFileMenu(ob, data);
-}
-
-extern "C" void C_Menus_ShowFileMenu2(FL_OBJECT * ob, long data)
-{
-       Menus::ShowFileMenu2(ob, data);
-}
-
-extern "C" void C_Menus_ShowEditMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowEditMenu(ob, data);
-}
-
-extern "C" void C_Menus_ShowTocMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowTocMenu(ob, data);
-}
-
-extern "C" void C_Menus_ShowRefsMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowRefsMenu(ob, data);
-}
-
-extern "C" void C_Menus_ShowLayoutMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowLayoutMenu(ob, data);
-}
-
-extern "C" void C_Menus_ShowInsertMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowInsertMenu(ob, data);
-}
-
-extern "C" void C_Menus_ShowMathMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowMathMenu(ob, data);
-}
-
-extern "C" void C_Menus_ShowOptionsMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowOptionsMenu(ob, data);
-}
-
-extern "C" void C_Menus_ShowBufferMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowBufferMenu(ob, data);
-}
-
-extern "C" void C_Menus_ShowHelpMenu(FL_OBJECT * ob, long data)
-{
-       Menus::ShowHelpMenu(ob, data);
-}
-
-
-Menus::Menus(LyXView * view, int air)
-       : _view(view)
-{      
-       create_menus(air);
-       // deactivate the menu accelerators
-       fl_set_object_shortcut(menu_file, "", 1);
-       fl_set_object_shortcut(menu_file2, "", 1);
-       fl_set_object_shortcut(menu_edit, "", 1);
-       fl_set_object_shortcut(menu_toc, "", 1);
-       fl_set_object_shortcut(menu_refs, "", 1);
-       fl_set_object_shortcut(menu_layout, "", 1);
-       fl_set_object_shortcut(menu_math, "", 1);
-       fl_set_object_shortcut(menu_insert, "", 1);
-       fl_set_object_shortcut(menu_options, "", 1);
-       fl_set_object_shortcut(menu_options2, "", 1);
-       fl_set_object_shortcut(menu_buffer, "", 1);
-       fl_set_object_shortcut(menu_help, "", 1);
-       fl_set_object_shortcut(menu_help2, "", 1);
-       hideMenus();
-}
-
-
-inline
-BufferView * Menus::currentView() 
-{
-       return _view->view(); 
-}
-
-
-void Menus::showMenus()
-{
-       fl_hide_object(menu_grp2);
-       fl_show_object(menu_grp1);
-}
-
-
-void Menus::hideMenus()
-{
-       fl_hide_object(menu_grp1);
-       fl_show_object(menu_grp2);
-}
-
-
-void Menus::openByName(string const & menuName)
-       /* Opens the visible menu of given name, or simply does nothing
-          when the name is not known. NOTE THE EXTREMELY STUPID
-          IMPLEMENTATION! :-) There are probably hundred ways to do
-          this better, for instance, by scanning the menu objects and
-          testing for the given name. I leave this as an exercise for an
-          experienced GG (GUI Guy/Girl). RVDK_PATCH_5. */
-{
-       if (menu_file->visible) {
-               if (menuName == _("File"))
-                       ShowFileMenu(menu_file, 0);
-               else if (menuName == _("Edit"))
-                       ShowEditMenu(menu_edit, 0);
-               else if (menuName == _("TOC"))
-                       ShowTocMenu(menu_toc, 0);
-               else if (menuName == _("Refs"))
-                       ShowRefsMenu(menu_refs, 0);
-               else if (menuName == _("Layout"))
-                       ShowLayoutMenu(menu_layout, 0);
-               else if (menuName == _("Insert"))
-                       ShowInsertMenu(menu_insert, 0);
-               else if (menuName == _("Math"))
-                       ShowMathMenu(menu_math, 0);
-               else if (menuName == _("Options"))
-                       ShowOptionsMenu(menu_options, 0);
-               else if (menuName == _("Documents"))
-                       ShowBufferMenu(menu_buffer, 0);
-               else if (menuName == _("Help"))
-                       ShowHelpMenu(menu_help, 0);
-               else lyxerr << "The menu '" << menuName
-                           << "' is not available." << endl;
-       } else {
-               if (menuName == _("File"))
-                       ShowFileMenu2(menu_file2, 0);
-               else if (menuName == _("Options"))
-                       ShowOptionsMenu(menu_options2, 0);
-               else if (menuName == _("Help"))
-                       ShowHelpMenu(menu_help2, 0);
-               else lyxerr << "The menu '" << menuName
-                           << "' is not available." << endl;
-       }
-}
-
-
-void Menus::create_menus(int air)
-{
-       FL_FORM * form = _view->getForm(); 
-
-       // Here I'd really like to see code like:
-       // addMenuBar();
-       FL_OBJECT * obj;
-
-       const int MENU_LABEL_SIZE = FL_NORMAL_SIZE;
-       const int mheight = 30;
-       const int mbheight= 22;
-       // where to place the menubar?
-       const int yloc = (mheight - mbheight)/2; //air + bw;
-       const int mbadd = 20; // menu button add (to width)
-       int moffset = 0;
-
-       // menubar frame
-       obj = fl_add_frame(FL_UP_FRAME, 0, 0, form->w, mheight, "");
-       fl_set_object_resize(obj, FL_RESIZE_ALL);
-       fl_set_object_gravity(obj, NorthWestGravity, NorthEastGravity);
-
-       menu_grp1 = fl_bgn_group();
-       
-       // File menu button
-       menu_file = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             air+moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("File"),
-                                                 strlen(_("File"))) + mbadd,
-                             mbheight, _("File"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#F")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowFileMenu, 0);
-       obj->u_vdata = this;
-       
-       // Edit menu button
-       menu_edit = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Edit"),
-                                                 strlen(_("Edit"))) + mbadd,
-                             mbheight, _("Edit"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#E")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowEditMenu, 0);
-       obj->u_vdata = this;
-       
-       /// TOC menu button
-       menu_toc = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("TOC"),
-                                                 strlen(_("TOC"))) + mbadd,
-                             mbheight, _("TOC"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#T")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowTocMenu, 0);
-       obj->u_vdata = this;
-
-       /// Refs menu button
-       menu_refs = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Refs"),
-                                                 strlen(_("Refs"))) + mbadd,
-                             mbheight, _("Refs"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#R")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowRefsMenu, 0);
-       obj->u_vdata = this;
-
-       // Layout menu button
-       menu_layout = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Layout"),
-                                                 strlen(_("Layout"))) + mbadd,
-                             mbheight, _("Layout"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#L")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowLayoutMenu, 0);
-       obj->u_vdata = this;
-       
-       // Insert menu button button
-       menu_insert = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Insert"),
-                                                 strlen(_("Insert"))) + mbadd,
-                             mbheight, _("Insert"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#I")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowInsertMenu, 0);
-       obj->u_vdata = this;
-       
-       // Math menu button
-       menu_math = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Math"),
-                                                 strlen(_("Math"))) + mbadd,
-                             mbheight, _("Math"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#M")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowMathMenu, 0);
-       obj->u_vdata = this;
-       
-       // Options menu button
-       menu_options = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Options"),
-                                                 strlen(_("Options"))) + mbadd,
-                             mbheight, _("Options"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#O")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowOptionsMenu, 0);
-       obj->u_vdata = this;
-
-       // Documents menu button
-       menu_buffer = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Documents"),
-                                                 strlen(_("Documents"))) + mbadd,
-                             mbheight, _("Documents"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#D")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowBufferMenu, 0);
-       obj->u_vdata = this;
-       
-       // Help menu button
-       menu_help = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Help"),
-                                                 strlen(_("Help"))) + mbadd,
-                             mbheight, _("Help"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#H")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowHelpMenu, 0);
-       obj->u_vdata = this;
-       
-       fl_end_group();
-
-       // Set the menu buttons atrributes.
-       // Due to a bug in xforms we cant do this only an the group.
-       obj = menu_grp1->next;
-       do {
-               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);
-               fl_set_object_lstyle(obj, FL_BOLD_STYLE);
-               fl_set_object_resize(obj, FL_RESIZE_ALL);
-               fl_set_object_gravity(obj, NorthWestGravity, NorthWestGravity);
-               obj= obj->next;
-       } while (obj != 0 && obj->objclass != FL_END_GROUP);
-
-       // group 2
-       moffset = 0;
-       menu_grp2 = fl_bgn_group();
-       
-       // File menu button
-       menu_file2 = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             air+moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("File"),
-                                                 strlen(_("File"))) + mbadd,
-                             mbheight, _("File"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#F")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowFileMenu2, 0);
-       obj->u_vdata = this;
-       
-       // Options menu button
-       menu_options2 = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Options"),
-                                                 strlen(_("Options"))) +mbadd,
-                             mbheight, _("Options"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#O")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowOptionsMenu, 0);
-       obj->u_vdata = this;
-
-       // Help menu button
-       menu_help2 = obj = 
-               fl_add_button(FL_TOUCH_BUTTON,
-                             moffset, yloc,
-                             fl_get_string_width(FL_BOLD_STYLE,
-                                                 MENU_LABEL_SIZE,
-                                                 _("Help"),
-                                                 strlen(_("Help"))) + mbadd,
-                             mbheight, _("Help"));
-       moffset += obj->w + air;
-       fl_set_object_shortcut(obj, scex(_("MB|#H")), 1);
-       fl_set_object_callback(obj, C_Menus_ShowHelpMenu, 0);
-       obj->u_vdata = this;
-       
-       fl_end_group();
-
-       // Set the menu buttons atrributes.
-       // Due to a bug in xforms we cant do this only an the group.
-       obj = menu_grp2->next;
-       do {
-               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);
-               fl_set_object_lstyle(obj, FL_BOLD_STYLE);
-               fl_set_object_resize(obj, FL_RESIZE_ALL);
-               fl_set_object_gravity(obj, NorthWestGravity, NorthWestGravity);
-               obj= obj->next;
-       } while (obj != 0 && obj->objclass != FL_END_GROUP);
-}
-
-
-//
-// Here comes all the menu callbacks.
-//
-
-void Menus::ShowFileMenu(FL_OBJECT * ob, long)
-{
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-
-       // Regarding the pseudo-menu-button:
-       // ok, ok this is a hack. It would be better to use the menus of the
-       // xforms 0.8 library. but then all popups have to be defined all the
-       // time, code rewriting would be necessary and contex-depending menus
-       // (i.e. the linux-doc-sgml stuff) are a bit more complicated. But of
-       // course it would be more proper (and little faster). So if anybody
-       // likes to do the cleanup, just do it. Matthias
-
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-
-       Buffer * tmpbuffer = men->_view->buffer();
-       LyXFunc * tmpfunc = men->_view->getLyXFunc();
-
-       bool LinuxDoc = tmpbuffer->isLinuxDoc();
-       bool DocBook  = tmpbuffer->isDocBook();
-       bool Literate = tmpbuffer->isLiterate();
-
-       // Import sub-menu
-
-       int SubFileImport = fl_defpup(FL_ObjWin(ob),
-                                     _("Import%t"
-                                       "|LaTeX...%x30"
-                                       "|Ascii Text as Lines...%x31"
-                                       "|Ascii Text as Paragraphs%x32"
-                                       "|Noweb%x33"
-                                       "|LinuxDoc%x34"));
-
-       fl_setpup_shortcut(SubFileImport, 30, scex(_("FIM|Ll#l#L")));
-       fl_setpup_shortcut(SubFileImport, 31, scex(_("FIM|Aa#a#A")));
-       fl_setpup_shortcut(SubFileImport, 32, scex(_("FIM|Pp#p#P")));
-       fl_setpup_shortcut(SubFileImport, 33, scex(_("FIM|Nn#n#N")));
-       fl_setpup_shortcut(SubFileImport, 34, scex(_("FIM|Dd#d#D")));
-
-       // Export sub-menu
-#ifdef NEW_EXPORT
-       int SubFileExport = fl_defpup(FL_ObjWin(ob),
-                                     _("Export%t"));
-       vector<pair<string,string> > formats =
-               Exporter::GetExportableFormats(tmpbuffer);
-       for (vector<pair<string,string> >::size_type i = 0;
-            i < formats.size(); ++i) {
-               string entry = _("as ")
-                       + formats[i].second
-                       + "%x" + tostr(1000+i);
-               fl_addtopup(SubFileExport, entry.c_str());
-       }
-#else
-       // remember to make this handle linuxdoc too.
-       // and now docbook also.
-
-       int SubFileExport = 0;
-       if (!LinuxDoc && !DocBook)
-               SubFileExport= fl_defpup(FL_ObjWin(ob),
-                                        _("Export%t"
-                                          "|as LaTeX...%x40"
-                                          "|as DVI...%x41"
-                                          "|as PostScript...%x42"
-                                          "|as Ascii Text...%x43"
-                                          "|as HTML...%x44"
-                                          "|Custom...%x45"));
-        else if(LinuxDoc)
-               SubFileExport= fl_defpup(FL_ObjWin(ob),
-                                        _("Export%t"
-                                          "|as LinuxDoc...%x40"
-                                          "|as DVI...%x41"
-                                          "|as PostScript...%x42"
-                                          "|as Ascii Text...%x43"
-                                          "|as HTML...%x44"));
-        else if(DocBook)
-               SubFileExport= fl_defpup(FL_ObjWin(ob),
-                                        _("Export%t"
-                                          "|as DocBook...%x40"
-                                          "|as DVI...%x41"
-                                          "|as PostScript...%x42"
-                                          "|as Ascii Text...%x43"
-                                          "|as HTML...%x44"));
-       fl_setpup_shortcut(SubFileExport, 40, scex(_("FEX|Ll#l#L")));
-       fl_setpup_shortcut(SubFileExport, 41, scex(_("FEX|Dd#d#D")));
-       fl_setpup_shortcut(SubFileExport, 42, scex(_("FEX|Pp#p#P")));
-       fl_setpup_shortcut(SubFileExport, 43, scex(_("FEX|Tt#t#T")));
-       fl_setpup_shortcut(SubFileExport, 44, scex(_("FEX|Hh#h#H")));
-
-       if (!LinuxDoc && !DocBook) {
-               fl_setpup_shortcut(SubFileExport, 45, scex(_("FEX|mM#m#M")));
-       }
-#endif
-       
-       int FileMenu = fl_defpup(FL_ObjWin(ob),
-                                _("New..."
-                                  "|New from template..."
-                                  "|Open...%l"
-                                  "|Close"
-                                  "|Save"
-                                  "|Save As..."
-                                  "|Revert to saved%l"
-                                  "|View dvi"
-                                  "|View PostScript"
-                                  "|Update dvi"
-                                   "|Update PostScript"
-                                   "|Build program%l"
-                                  "|Print..."
-                                  "|Fax..."));
-
-       fl_setpup_shortcut(FileMenu, 1, scex(_("FM|Nn#n#N")));
-       fl_setpup_shortcut(FileMenu, 2, scex(_("FM|tT#t#T")));
-       fl_setpup_shortcut(FileMenu, 3, scex(_("FM|Oo#o#O")));
-       fl_setpup_shortcut(FileMenu, 4, scex(_("FM|Cc#c#C")));
-       fl_setpup_shortcut(FileMenu, 5, scex(_("FM|Ss#s#S")));
-       fl_setpup_shortcut(FileMenu, 6, scex(_("FM|Aa#a#A")));
-       fl_setpup_shortcut(FileMenu, 7, scex(_("FM|Rr#r#R")));
-       fl_setpup_shortcut(FileMenu, 8, scex(_("FM|dD#d#D")));
-       fl_setpup_shortcut(FileMenu, 9, scex(_("FM|wW#w#W")));
-       fl_setpup_shortcut(FileMenu, 10, scex(_("FM|vV#v#V")));
-       fl_setpup_shortcut(FileMenu, 11, scex(_("FM|Uu#u#U")));
-        fl_setpup_shortcut(FileMenu, 12, scex(_("FM|Bb#b#B")));
-        fl_setpup_shortcut(FileMenu, 13, scex(_("FM|Pp#p#P")));
-        fl_setpup_shortcut(FileMenu, 14, scex(_("FM|Ff#f#F")));
-
-       // These commands are disabled when the corresponding programs
-       // are not installed. I simply grey them out, since I do not
-       // want to change their number (JMarc)
-       bool hasLaTeX = lyxrc.latex_command != "none";
-
-       if (!hasLaTeX || lyxrc.view_dvi_command == "none") 
-               fl_setpup_mode(FileMenu, 8, FL_PUP_GREY);
-       
-       if (!hasLaTeX || lyxrc.view_ps_command == "none") 
-               fl_setpup_mode(FileMenu, 9, FL_PUP_GREY);
-       
-       if (!hasLaTeX) {
-               fl_setpup_mode(FileMenu, 10, FL_PUP_GREY);
-               fl_setpup_mode(FileMenu, 11, FL_PUP_GREY);
-       } 
-
-        if (lyxrc.literate_command == "none" || ! Literate) 
-               fl_setpup_mode(FileMenu, 12, FL_PUP_GREY);
-
-       if (!hasLaTeX || lyxrc.print_command == "none") 
-               fl_setpup_mode(FileMenu, 13, FL_PUP_GREY);
-
-       if (!hasLaTeX || lyxrc.fax_command == "none") 
-               fl_setpup_mode(FileMenu, 14, FL_PUP_GREY);
-
-       bool hasReLyX = lyxrc.relyx_command != "none";
-       if (!hasReLyX) {
-               // Disable import LaTeX and Noweb
-               fl_setpup_mode(SubFileImport, 30, FL_PUP_GREY);
-               fl_setpup_mode(SubFileImport, 33, FL_PUP_GREY);
-       }
-
-       if ( lyxrc.linuxdoc_to_lyx_command == "none")
-               fl_setpup_mode(SubFileImport, 34, FL_PUP_GREY);
-
-#ifndef NEW_EXPORT
-       if (!hasLaTeX) {
-               // Disable export dvi and export postscript
-               fl_setpup_mode(SubFileExport, 41, FL_PUP_GREY);
-               fl_setpup_mode(SubFileExport, 42, FL_PUP_GREY);
-       }
-
-       if ((!LinuxDoc && !DocBook && lyxrc.html_command == "none") ||
-           ( LinuxDoc && lyxrc.linuxdoc_to_html_command == "none") ||
-           ( DocBook  && lyxrc.docbook_to_html_command  == "none")) {
-               // Disable export HTML
-               fl_setpup_mode(SubFileExport, 44, FL_PUP_GREY);
-       }
-#endif
-
-       // xgettext:no-c-format
-       fl_addtopup(FileMenu, _("|Import%m"), SubFileImport);
-       // xgettext:no-c-format
-       fl_addtopup(FileMenu, _("|Export%m%l"), SubFileExport);
-       // xgettext:no-c-format
-       fl_addtopup(FileMenu, _("|Exit%l"));
-       fl_setpup_shortcut(FileMenu, 15, scex(_("FM|Ii#i#I")));
-       fl_setpup_shortcut(FileMenu, 16, scex(_("FM|Ee#e#E")));
-       fl_setpup_shortcut(FileMenu, 17, scex(_("FM|xX#x#X")));
-
-       // make the lastfiles menu
-       int ii = 1;
-       for (LastFiles::const_iterator cit = lastfiles->begin();
-            cit != lastfiles->end() && ii < 10; ++cit, ++ii) {
-               string tmp = tostr(ii);
-               string tmp2 = tmp + "#" + tmp;
-               tmp += ". " + MakeDisplayPath((*cit), 30);
-               fl_addtopup(FileMenu, tmp.c_str());
-               fl_setpup_shortcut(FileMenu, 18 - 1 + ii, tmp2.c_str());
-       }
-
-       // place popup
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);   
-       int choice = fl_dopup(FileMenu);
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-
-       switch (choice) {
-       case -1: case 0: // we won't do anything
-               break;
-       case  1: tmpfunc->Dispatch(LFUN_MENUNEW); break;
-       case  2: tmpfunc->Dispatch(LFUN_MENUNEWTMPLT); break;
-       case  3: tmpfunc->Dispatch(LFUN_MENUOPEN); break;
-       case  4: tmpfunc->Dispatch(LFUN_CLOSEBUFFER); break;
-       case  5: tmpfunc->Dispatch(LFUN_MENUWRITE); break;
-       case  6: tmpfunc->Dispatch(LFUN_MENUWRITEAS); break;
-       case  7: tmpfunc->Dispatch(LFUN_MENURELOAD); break;
-#ifdef NEW_EXPORT
-       case 8: tmpfunc->Dispatch(LFUN_PREVIEW, "dvi"); break;
-       case 9: tmpfunc->Dispatch(LFUN_PREVIEW, "ps"); break;
-       case 10: tmpfunc->Dispatch(LFUN_UPDATE, "dvi"); break;
-       case 11: tmpfunc->Dispatch(LFUN_UPDATE, "ps"); break;
-#else
-       case  8: tmpfunc->Dispatch(LFUN_PREVIEW); break;
-       case  9: tmpfunc->Dispatch(LFUN_PREVIEWPS); break;
-       case 10: tmpfunc->Dispatch(LFUN_RUNLATEX); break;
-       case 11: tmpfunc->Dispatch(LFUN_RUNDVIPS); break;
-#endif
-       case 12: tmpfunc->Dispatch(LFUN_BUILDPROG); break;
-       case 13: tmpfunc->Dispatch(LFUN_MENUPRINT); break;
-       case 14: tmpfunc->Dispatch(LFUN_FAX); break;
-       case 15: // import menu
-       case 30: tmpfunc->Dispatch(LFUN_IMPORT, "latex");
-               break;
-       case 31: tmpfunc->Dispatch(LFUN_IMPORT, "ascii");
-               break;
-       case 32: tmpfunc->Dispatch(LFUN_IMPORT, "asciiparagraph");
-               break;
-       case 33: tmpfunc->Dispatch(LFUN_IMPORT, "noweb");
-               break;
-       case 34: tmpfunc->Dispatch(LFUN_IMPORT, "linuxdoc");
-               break;
-#ifdef NEW_EXPORT
-       case 18:
-               tmpfunc->Dispatch(LFUN_QUIT);
-               break;
-       default:
-               if (choice >= 1000)
-                       tmpfunc->Dispatch(LFUN_EXPORT,
-                                         formats[choice-1000].first.c_str());
-               else
-                       men->currentView()
-                               ->buffer(bufferlist
-                                        .loadLyXFile((*lastfiles)[choice - 18]));
-               break;
-#else
-       case 16: // export menu
-       case 40:
-               if (!LinuxDoc && !DocBook)
-                       tmpfunc->Dispatch(LFUN_EXPORT, "latex");
-               else if(LinuxDoc)
-                       tmpfunc->Dispatch(LFUN_EXPORT, "linuxdoc");
-               else
-                       tmpfunc->Dispatch(LFUN_EXPORT, "docbook");
-               break;
-       case 41: tmpfunc->Dispatch(LFUN_EXPORT, "dvi");
-               break;
-       case 42: tmpfunc->Dispatch(LFUN_EXPORT, "postscript");
-               break;
-       case 43: tmpfunc->Dispatch(LFUN_EXPORT, "ascii");
-               break;
-       case 44: tmpfunc->Dispatch(LFUN_EXPORT, "html");
-               break;
-       case 45: tmpfunc->Dispatch(LFUN_EXPORT, "custom"); 
-               break;
-       case 17: tmpfunc->Dispatch(LFUN_QUIT); break;
-               // Lastfiles:
-       case 18: // The first item with lastfiles.
-       default:
-               men->currentView()
-                       ->buffer(bufferlist
-                                .loadLyXFile((*lastfiles)[choice - 18]));
-               break;
-#endif
-       }
-       fl_freepup(SubFileImport);
-       fl_freepup(SubFileExport);
-       fl_freepup(FileMenu);
-
-       AllowInput(men->currentView());
-}
-
-
-void Menus::ShowFileMenu2(FL_OBJECT * ob, long)
-{
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-
-       // Regarding the pseudo-menu-button:
-       // ok, ok this is a hack. It would be better to use the menus of the
-       // xforms 0.8 library. but then all popups have to be defined all the
-       // time, code rewriting would be necessary and contex-depending menus
-       // (i.e. the linux-doc-sgml stuff) are a bit more complicated. But of
-       // course it would be more proper (and little faster). So if anybody
-       // likes to do the cleanup, just do it. Matthias
-
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-
-       LyXFunc * tmpfunc = men->_view->getLyXFunc();
-
-       // Import sub-menu
-       
-       int SubFileImport = fl_defpup(FL_ObjWin(ob),
-                                     _("Import%t"
-                                       "|LaTeX...%x15"
-                                       "|Ascii Text as Lines...%x16"
-                                       "|Ascii Text as Paragraphs...%x17"
-                                       "|Noweb...%x18"
-                                       "|LinuxDoc...%x19"));
-       
-       fl_setpup_shortcut(SubFileImport, 15, scex(_("FIM|Ll#l#L")));
-       fl_setpup_shortcut(SubFileImport, 16, scex(_("FIM|Aa#a#A")));
-       fl_setpup_shortcut(SubFileImport, 17, scex(_("FIM|Pp#p#P")));
-       fl_setpup_shortcut(SubFileImport, 18, scex(_("FIM|Nn#n#N")));
-       fl_setpup_shortcut(SubFileImport, 19, scex(_("FIM|Dd#d#D")));
-
-       bool hasReLyX = lyxrc.relyx_command != "none";
-       if (!hasReLyX) {
-               // Disable import LaTeX and Noweb
-               fl_setpup_mode(SubFileImport, 15, FL_PUP_GREY);
-               fl_setpup_mode(SubFileImport, 18, FL_PUP_GREY);
-       }
-
-       if ( lyxrc.linuxdoc_to_lyx_command == "none")
-               fl_setpup_mode(SubFileImport, 19, FL_PUP_GREY);
-
-       // This can be done cleaner later.
-       int FileMenu = fl_defpup(FL_ObjWin(ob), 
-                                _("New..."
-                                  "|New from template..."
-                                  "|Open...%l"
-                                  "|Import%m%l"
-                                  "|Exit%l"), SubFileImport);
-       
-       fl_setpup_shortcut(FileMenu, 1, scex(_("FM|Nn#n#N")));
-       fl_setpup_shortcut(FileMenu, 2, scex(_("FM|tT#t#T")));
-       fl_setpup_shortcut(FileMenu, 3, scex(_("FM|Oo#o#O")));
-       fl_setpup_shortcut(FileMenu, 4, scex(_("FM|Ii#i#I")));
-       fl_setpup_shortcut(FileMenu, 5, scex(_("FM|xX#x#X")));
-       
-       // make the lastfiles menu
-       int ii = 1;
-       for (LastFiles::const_iterator cit = lastfiles->begin();
-            cit != lastfiles->end() && ii < 10; ++cit, ++ii) {
-               string tmp = tostr(ii);
-               string tmp2 = tmp + "#" + tmp;
-               tmp += ". " + MakeDisplayPath((*cit), 30);
-               fl_addtopup(FileMenu, tmp.c_str());
-               fl_setpup_shortcut(FileMenu, 18 - 1 + ii, tmp2.c_str());
-       }
-
-       // place popup
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);   
-       int choice = fl_dopup(FileMenu);
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-
-       switch (choice) {
-       case -1: case 0: // we won't do anything
-               break;
-       case 1:
-               tmpfunc->Dispatch(LFUN_MENUNEW);
-               break;
-       case 2:
-               tmpfunc->Dispatch(LFUN_MENUNEWTMPLT);
-               break;
-       case 3:
-               tmpfunc->Dispatch(LFUN_MENUOPEN);
-               break;
-       case 4: // import menu
-       case 15: tmpfunc->Dispatch(LFUN_IMPORT, "latex");
-               break;
-       case 16: tmpfunc->Dispatch(LFUN_IMPORT, "ascii");
-               break;
-       case 17: tmpfunc->Dispatch(LFUN_IMPORT, "asciiparagraph");
-               break;
-       case 18: tmpfunc->Dispatch(LFUN_IMPORT, "noweb");
-               break;
-       case 19: tmpfunc->Dispatch(LFUN_IMPORT, "linuxdoc");
-               break;
-       case 5:
-               tmpfunc->Dispatch(LFUN_QUIT);
-               break;
-               // Lastfiles:
-       case 6: // The first item with lastfiles.
-       default:
-               men->currentView()
-                       ->buffer(bufferlist
-                                .loadLyXFile((*lastfiles)[choice - 6]));
-               break;
-       }
-
-       fl_freepup(SubFileImport);
-       fl_freepup(FileMenu);
-       AllowInput(men->currentView());
-       return;
-}
-
-
-void Menus::ShowEditMenu(FL_OBJECT * ob, long)
-{
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-       
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-
-       Buffer * tmpbuffer = men->_view->buffer();
-       LyXFunc * tmpfunc = men->_view->getLyXFunc();
-
-       // Floats & Insets submenu
-       int SubEditFloats= fl_defpup(FL_ObjWin(ob),
-                                    _("Floats & Insets%t"
-                                      "|Open/Close%x21"
-                                      "|Melt%x22"
-                                      "|Open All Footnotes/Margin Notes%x23"
-                                      "|Close All Footnotes/Margin Notes%x24"
-                                      "|Open All Figures/Tables%x25"
-                                      "|Close All Figures/Tables%x26%l"
-                                      "|Remove all Error Boxes%x27"));
-       
-       fl_setpup_shortcut(SubEditFloats, 21, scex(_("EMF|Oo#o#O")));
-       fl_setpup_shortcut(SubEditFloats, 22, scex(_("EMF|Mm#m#M")));
-       fl_setpup_shortcut(SubEditFloats, 23, scex(_("EMF|Aa#a#A")));
-       fl_setpup_shortcut(SubEditFloats, 24, scex(_("EMF|Cc#c#C")));
-       fl_setpup_shortcut(SubEditFloats, 25, scex(_("EMF|Ff#f#F")));
-       fl_setpup_shortcut(SubEditFloats, 26, scex(_("EMF|Tt#t#T")));
-       fl_setpup_shortcut(SubEditFloats, 27, scex(_("EMF|Rr#r#R")));
-
-       // Table submenu
-       int SubEditTable = fl_newpup(FL_ObjWin(ob));
-#ifndef NEW_TABULAR
-       if (men->currentView()->available() && 
-           men->currentView()->text->cursor.par()->table &&
-           !tmpbuffer->isReadonly()){
-               LyXTable * table = men->currentView()->text->cursor.par()->table;
-
-               fl_addtopup(SubEditTable, _("Table%t"));
-
-               if (table->IsMultiColumn(men->currentView()->text->
-                                        NumberOfCell(men->currentView()->
-                                                     text->cursor.par(), 
-                                                     men->currentView()->
-                                                     text->cursor.pos())))
-                       fl_addtopup(SubEditTable, _("|Multicolumn%B%x44%l"));
-               else
-                       fl_addtopup(SubEditTable, _("|Multicolumn%b%x44%l"));
-               fl_setpup_shortcut(SubEditTable, 44, scex(_("EMT|Mm#m#M")));
-     
-               if (table->TopLine(men->currentView()->text->
-                                  NumberOfCell(men->currentView()->
-                                               text->cursor.par(), 
-                                               men->currentView()->text->
-                                               cursor.pos())))
-                       fl_addtopup(SubEditTable, _("|Line Top%B%x36"));
-               else
-                       fl_addtopup(SubEditTable, _("|Line Top%b%x36"));
-               fl_setpup_shortcut(SubEditTable, 36, scex(_("EMT|Tt#t#T")));
-     
-               if (table->BottomLine(men->currentView()->text->
-                                     NumberOfCell(men->currentView()->
-                                                  text->cursor.par(), 
-                                                  men->currentView()->
-                                                  text->cursor.pos())))
-                       fl_addtopup(SubEditTable, _("|Line Bottom%B%x37"));
-               else
-                       fl_addtopup(SubEditTable, _("|Line Bottom%b%x37"));
-               fl_setpup_shortcut(SubEditTable, 37, scex(_("EMT|Bb#b#B")));
-
-               if (table->LeftLine(men->currentView()->text->
-                                   NumberOfCell(men->currentView()->
-                                                text->cursor.par(), 
-                                                men->currentView()->
-                                                text->cursor.pos())))
-                       fl_addtopup(SubEditTable, _("|Line Left%B%x38"));
-               else
-                       fl_addtopup(SubEditTable, _("|Line Left%b%x38"));
-               fl_setpup_shortcut(SubEditTable, 38, scex(_("EMT|Ll#l#L")));
-
-               if (table->RightLine(men->currentView()->text->
-                                    NumberOfCell(men->currentView()->
-                                                 text->cursor.par(), 
-                                                 men->currentView()->
-                                                 text->cursor.pos())))
-                       fl_addtopup(SubEditTable, _("|Line Right%B%x39%l"));
-               else
-                       fl_addtopup(SubEditTable, _("|Line Right%b%x39%l"));
-               fl_setpup_shortcut(SubEditTable, 39, scex(_("EMT|Rr#r#R")));
-
-               int align =
-                       table->GetAlignment(men->currentView()->text->
-                                           NumberOfCell(men->currentView()->
-                                                        text->cursor.par(), 
-                                                        men->currentView()->
-                                                        text->cursor.pos()));
-               if (align == LYX_ALIGN_LEFT)
-                       fl_addtopup(SubEditTable, _("|Align Left%R%x40"));
-               else
-                       fl_addtopup(SubEditTable, _("|Align Left%r%x40"));
-               fl_setpup_shortcut(SubEditTable, 40, scex(_("EMT|eE#e#E")));
-
-               if (align == LYX_ALIGN_RIGHT)
-                       fl_addtopup(SubEditTable, _("|Align Right%R%x41"));
-               else
-                       fl_addtopup(SubEditTable, _("|Align Right%r%x41"));
-               fl_setpup_shortcut(SubEditTable, 41, scex(_("EMT|iI#i#I")));
-
-               if (align == LYX_ALIGN_CENTER)
-                       fl_addtopup(SubEditTable, _("|Align Center%R%x42%l"));
-               else
-                       fl_addtopup(SubEditTable, _("|Align Center%r%x42%l"));
-               fl_setpup_shortcut(SubEditTable, 42, scex(_("EMT|Cc#c#C")));
-
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Append Row%x32"));
-               fl_setpup_shortcut(SubEditTable, 32, scex(_("EMT|oO#o#O")));
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Append Column%x33%l"));
-               fl_setpup_shortcut(SubEditTable, 33, scex(_("EMT|uU#u#U")));
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Delete Row%x34"));
-               fl_setpup_shortcut(SubEditTable, 34, scex(_("EMT|wW#w#W")));
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Delete Column%x35%l"));
-               fl_setpup_shortcut(SubEditTable, 35, scex(_("EMT|nN#n#N")));
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Delete Table%x43"));
-               fl_setpup_shortcut(SubEditTable, 43, scex(_("EMT|Dd#d#D")));
-       } else
-#endif
-               if (men->currentView()->the_locking_inset &&
-                  (men->currentView()->the_locking_inset->LyxCode() ==
-                   Inset::TABULAR_CODE) &&
-                  !tmpbuffer->isReadonly()) {
-               InsetTabular * inset = static_cast<InsetTabular *>(men->currentView()->the_locking_inset);
-               LyXTabular * table = inset->tabular;
-
-               fl_addtopup(SubEditTable, _("Table%t"));
-
-               if (table->IsMultiColumn(inset->GetActCell()))
-                       fl_addtopup(SubEditTable, _("|Multicolumn%B%x44%l"));
-               else
-                       fl_addtopup(SubEditTable, _("|Multicolumn%b%x44%l"));
-               fl_setpup_shortcut(SubEditTable, 44, scex(_("EMT|Mm#m#M")));
-
-               if (table->TopLine(inset->GetActCell()))
-                       fl_addtopup(SubEditTable, _("|Line Top%B%x36"));
-               else
-                       fl_addtopup(SubEditTable, _("|Line Top%b%x36"));
-               fl_setpup_shortcut(SubEditTable, 36, scex(_("EMT|Tt#t#T")));
-     
-               if (table->BottomLine(inset->GetActCell()))
-                       fl_addtopup(SubEditTable, _("|Line Bottom%B%x37"));
-               else
-                       fl_addtopup(SubEditTable, _("|Line Bottom%b%x37"));
-               fl_setpup_shortcut(SubEditTable, 37, scex(_("EMT|Bb#b#B")));
-
-               if (table->LeftLine(inset->GetActCell()))
-                       fl_addtopup(SubEditTable, _("|Line Left%B%x38"));
-               else
-                       fl_addtopup(SubEditTable, _("|Line Left%b%x38"));
-               fl_setpup_shortcut(SubEditTable, 38, scex(_("EMT|Ll#l#L")));
-
-               if (table->RightLine(inset->GetActCell()))
-                       fl_addtopup(SubEditTable, _("|Line Right%B%x39%l"));
-               else
-                       fl_addtopup(SubEditTable, _("|Line Right%b%x39%l"));
-               fl_setpup_shortcut(SubEditTable, 39, scex(_("EMT|Rr#r#R")));
-
-               int align = table->GetAlignment(inset->GetActCell());
-               if (align == LYX_ALIGN_LEFT)
-                       fl_addtopup(SubEditTable, _("|Align Left%R%x40"));
-               else
-                       fl_addtopup(SubEditTable, _("|Align Left%r%x40"));
-               fl_setpup_shortcut(SubEditTable, 40, scex(_("EMT|eE#e#E")));
-
-               if (align == LYX_ALIGN_RIGHT)
-                       fl_addtopup(SubEditTable, _("|Align Right%R%x41"));
-               else
-                       fl_addtopup(SubEditTable, _("|Align Right%r%x41"));
-               fl_setpup_shortcut(SubEditTable, 41, scex(_("EMT|iI#i#I")));
-
-               if (align == LYX_ALIGN_CENTER)
-                       fl_addtopup(SubEditTable, _("|Align Center%R%x42%l"));
-               else
-                       fl_addtopup(SubEditTable, _("|Align Center%r%x42%l"));
-               fl_setpup_shortcut(SubEditTable, 42, scex(_("EMT|Cc#c#C")));
-
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Append Row%x32"));
-               fl_setpup_shortcut(SubEditTable, 32, scex(_("EMT|oO#o#O")));
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Append Column%x33%l"));
-               fl_setpup_shortcut(SubEditTable, 33, scex(_("EMT|uU#u#U")));
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Delete Row%x34"));
-               fl_setpup_shortcut(SubEditTable, 34, scex(_("EMT|wW#w#W")));
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Delete Column%x35%l"));
-               fl_setpup_shortcut(SubEditTable, 35, scex(_("EMT|nN#n#N")));
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Delete Table%x43"));
-               fl_setpup_shortcut(SubEditTable, 43, scex(_("EMT|Dd#d#D")));
-       } else {
-               fl_addtopup(SubEditTable, _("Table%t"));
-               // xgettext:no-c-format
-               fl_addtopup(SubEditTable, _("|Insert table%x31"));
-               fl_setpup_shortcut(SubEditTable, 31, scex(_("EMT|Ii#i#I")));
-       }
-
-       int SubVersionControl =         fl_newpup(FL_ObjWin(ob));
-       fl_addtopup(SubVersionControl, _("Version Control%t"));
-       if (tmpbuffer->lyxvc.inUse()) {
-               // xgettext:no-c-format
-               fl_addtopup(SubVersionControl, _("|Register%d%x51"));
-               if (tmpbuffer->isReadonly()) {
-                       // signifies that the file is not checked out
-                       // xgettext:no-c-format
-                       fl_addtopup(SubVersionControl, _("|Check In Changes%d%x52"));
-                       // xgettext:no-c-format
-                       fl_addtopup(SubVersionControl, _("|Check Out for Edit%x53"));
-               } else {
-                       // signifies that the file is checked out
-                       // xgettext:no-c-format
-                       fl_addtopup(SubVersionControl, _("|Check In Changes%x52"));
-                       // xgettext:no-c-format
-                       fl_addtopup(SubVersionControl, _("|Check Out for Edit%d%x53"));
-               }
-               // xgettext:no-c-format
-               fl_addtopup(SubVersionControl, _("|Revert to last version%x54"));
-               // xgettext:no-c-format
-               fl_addtopup(SubVersionControl, _("|Undo last check in%x55"));
-               // xgettext:no-c-format
-               fl_addtopup(SubVersionControl, _("|Show History%x56"));
-       } else {
-               // xgettext:no-c-format
-               fl_addtopup(SubVersionControl, _("|Register%x51"));
-       }
-       // the shortcuts are not good.
-       fl_setpup_shortcut(SubVersionControl, 51, scex(_("EMV|Rr#r#R")));
-       fl_setpup_shortcut(SubVersionControl, 52, scex(_("EMV|Ii#i#I")));
-       fl_setpup_shortcut(SubVersionControl, 53, scex(_("EMV|Oo#o#O")));
-       fl_setpup_shortcut(SubVersionControl, 54, scex(_("EMV|lL#l#l")));
-       fl_setpup_shortcut(SubVersionControl, 55, scex(_("EMV|Uu#u#U")));
-       fl_setpup_shortcut(SubVersionControl, 56, scex(_("EMV|Hh#h#H")));
-
-       int EditMenu= fl_defpup(FL_ObjWin(ob),
-                               _("Undo"
-                                 "|Redo %l"
-                                 "|Cut"
-                                 "|Copy"
-                                 "|Paste%l"
-                                 "|Find & Replace..."
-                                 "|Go to Error"
-                                 "|Go to Note"
-                                 "|Floats & Insets%m"
-                                 "|Table%m"
-                                 "|Spellchecker...."
-                                 "|Check TeX"
-                                 "|Table of Contents..."
-                                 "|List of Figures..."
-                                 "|List of Tables..."
-                                 "|List of Algorithms...%l"
-                                 "|Version Control%m%l"
-                                 "|View LaTeX log file%l"
-                                 "|Paste Primary Selection as Lines"
-                                 "|Paste Primary Selection as Paragraphs"),
-                               SubEditFloats, SubEditTable, SubVersionControl);
-
-       fl_setpup_shortcut(EditMenu, 1, scex(_("EM|Uu#u#U")));
-       fl_setpup_shortcut(EditMenu, 2, scex(_("EM|Rr#r#R")));
-       fl_setpup_shortcut(EditMenu, 3, scex(_("EM|Cc#c#C")));
-       fl_setpup_shortcut(EditMenu, 4, scex(_("EM|oO#o#O")));
-       fl_setpup_shortcut(EditMenu, 5, scex(_("EM|Pp#p#P")));
-       fl_setpup_shortcut(EditMenu, 6, scex(_("EM|Ff#f#F")));
-       fl_setpup_shortcut(EditMenu, 7, scex(_("EM|Ee#e#E")));
-       fl_setpup_shortcut(EditMenu, 8, scex(_("EM|Nn#n#N")));
-       fl_setpup_shortcut(EditMenu, 9, scex(_("EM|Ii#i#I")));
-       //fl_setpup_shortcut(EditMenu, 10, scex(_("EM|Tt#t#T")));
-       fl_setpup_shortcut(EditMenu, 11, scex(_("EM|Ss#s#S")));
-       fl_setpup_shortcut(EditMenu, 12, scex(_("EM|hH#h#H")));
-       fl_setpup_shortcut(EditMenu, 13, scex(_("EM|Tt#t#T")));
-       //fl_setpup_shortcut(EditMenu, 14, scex(_("EM|Ff#f#F")));
-       //fl_setpup_shortcut(EditMenu, 15, scex(_("EM|bB#b#B")));
-       //fl_setpup_shortcut(EditMenu, 16, scex(_("EM|mM#m#M")));
-       fl_setpup_shortcut(EditMenu, 17, scex(_("EM|Vv#v#V")));
-       fl_setpup_shortcut(EditMenu, 18, scex(_("EM|wW#w#W")));
-       fl_setpup_shortcut(EditMenu, 19, scex(_("EM|Ll#l#L")));
-       fl_setpup_shortcut(EditMenu, 20, scex(_("EM|gG#g#G")));
-      
-       // disable unavailable entries.
-       if(tmpbuffer->undostack.empty())
-               fl_setpup_mode(EditMenu, 1, FL_PUP_GREY);
-       if(tmpbuffer->redostack.empty())
-               fl_setpup_mode(EditMenu, 2, FL_PUP_GREY);
-       if(lyxrc.isp_command == "none") 
-               fl_setpup_mode(EditMenu, 11, FL_PUP_GREY);
-       if(lyxrc.chktex_command == "none") 
-               fl_setpup_mode(EditMenu, 12, FL_PUP_GREY);
-
-       if (tmpbuffer->isReadonly()) {
-                fl_setpup_mode(EditMenu, 1, FL_PUP_GREY); 
-                fl_setpup_mode(EditMenu, 2, FL_PUP_GREY); 
-                fl_setpup_mode(EditMenu, 3, FL_PUP_GREY); 
-                fl_setpup_mode(EditMenu, 5, FL_PUP_GREY); 
-                fl_setpup_mode(EditMenu, 19, FL_PUP_GREY); 
-                fl_setpup_mode(EditMenu, 20, FL_PUP_GREY);
-       }
-       
-       fl_setpup_position(men->_view->getForm()->x + ob->x,
-                          men->_view->getForm()->y + ob->y +
-                          ob->h + 10);   
-       int choice = fl_dopup(EditMenu);
-       XFlush(fl_display);
-   
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-
-       switch (choice) {
-       case  1: tmpfunc->Dispatch(LFUN_UNDO); break;
-       case  2: tmpfunc->Dispatch(LFUN_REDO); break;
-       case  3: tmpfunc->Dispatch(LFUN_CUT); break;
-       case  4: tmpfunc->Dispatch(LFUN_COPY); break;
-       case  5: tmpfunc->Dispatch(LFUN_PASTE); break;
-       case  6: tmpfunc->Dispatch(LFUN_MENUSEARCH); break;
-       case  7: tmpfunc->Dispatch(LFUN_GOTOERROR); break;
-       case  8: tmpfunc->Dispatch(LFUN_GOTONOTE); break;
-       case  9: // floats & insets
-               break;
-       case 10:// table 
-               break;
-       case 11: tmpfunc->Dispatch(LFUN_SPELLCHECK); break;
-       case 12: tmpfunc->Dispatch(LFUN_RUNCHKTEX); break;
-       case 13: tmpfunc->Dispatch(LFUN_TOCVIEW); break;
-       case 14: tmpfunc->Dispatch(LFUN_LOFVIEW); break;
-       case 15: tmpfunc->Dispatch(LFUN_LOTVIEW); break;
-       case 16: tmpfunc->Dispatch(LFUN_LOAVIEW); break;
-       case 17: // version control
-               break;
-       case 18: tmpfunc->Dispatch(LFUN_LATEX_LOG); break;
-       case 19: tmpfunc->Dispatch(LFUN_PASTESELECTION, "line"); break;
-       case 20: tmpfunc->Dispatch(LFUN_PASTESELECTION, "paragraph"); break;
-
-#ifndef NEW_INSETS
-       // floats & insets sub-menu
-       case 21: men->currentView()->toggleFloat(); break;
-       case 22: tmpfunc->Dispatch(LFUN_MELT); break;
-       case 23: men->currentView()->allFloats(1, 0); break;
-       case 24: men->currentView()->allFloats(0, 0); break;
-       case 25: men->currentView()->allFloats(1, 1); break;
-       case 26: men->currentView()->allFloats(0, 1); break;
-       case 27: tmpfunc->Dispatch(LFUN_REMOVEERRORS); break;
-#endif
-       case 31: tmpfunc->Dispatch(LFUN_DIALOG_TABULAR_INSERT); break;
-               // this is really temporary. We need new function in keybind.C
-               // These should set the minibuffer, too.
-       case 32: case 33: case 34:
-       case 35: case 36: case 37:
-       case 38: case 39: case 40: 
-       case 41: case 42: case 43:
-       case 44: 
-               if (men->currentView()->available()) {
-                       men->currentView()->hideCursor();
-                       if (!men->currentView()->text->selection){
-                               men->currentView()->beforeChange(); 
-                               men->currentView()->update(BufferView::SELECT|BufferView::FITCUR);
-                       }
-                       if (men->currentView()->the_locking_inset &&
-                           (men->currentView()->the_locking_inset->LyxCode()
-                            == Inset::TABULAR_CODE)) {
-                               InsetTabular * inset =
-                                   static_cast<InsetTabular *>
-                                      (men->currentView()->the_locking_inset);
-                               inset->TabularFeatures(men->currentView(), choice - 32);
-                       }
-#ifndef NEW_TABULAR
-                       else {
-                               men->currentView()->text->
-                                       TableFeatures(men->currentView(), choice - 32);
-                               men->currentView()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
-                       }
-#endif
-               }
-               break;
-               // version control sub-menu
-       case 51: // register
-               tmpfunc->Dispatch(LFUN_VC_REGISTER);
-               break;
-       case 52: // check in
-               tmpfunc->Dispatch(LFUN_VC_CHECKIN);
-               break;
-       case 53: // check out
-               tmpfunc->Dispatch(LFUN_VC_CHECKOUT);
-               break;
-       case 54: // revert to last
-               tmpfunc->Dispatch(LFUN_VC_REVERT);
-               break;
-       case 55: // undo last
-               tmpfunc->Dispatch(LFUN_VC_UNDO);
-               break;
-       case 56: // show history
-               tmpfunc->Dispatch(LFUN_VC_HISTORY);
-               break;
-       }
-
-       fl_freepup(EditMenu);
-       fl_freepup(SubEditFloats);
-       fl_freepup(SubEditTable);
-       fl_freepup(SubVersionControl);
-}
-
-vector<int>::size_type const max_number_of_menus = 32;
-unsigned int const max_number_of_items = 25;
-
-string Limit_string_length(string const & str) {
-       string::size_type const max_item_length = 45;
-
-       if (str.size() > max_item_length)
-               return str.substr(0, max_item_length-3) + "...";
-       else
-               return str;
-}
-
-void Add_to_toc_menu(vector<Buffer::TocItem> const & toclist, 
-                    unsigned int from, unsigned int to, int depth,
-                    int menu, vector<int> & menus, FL_OBJECT * ob)
-{
-       if (to - from <= max_number_of_items) {
-               for (unsigned int i = from; i < to; ++i) {
-                       string entry(4 * max(0, toclist[i].depth - depth),' ');
-                       entry += toclist[i].str;
-                       entry = Limit_string_length(entry);
-                       entry += "%x" + tostr(i + 1);
-                       fl_addtopup(menu, entry.c_str());
-               }
-       } else {
-               unsigned int pos = from;
-               unsigned int count = 0;
-               while (pos < to) {
-                       ++count;
-                       if (count > max_number_of_items) {
-                               fl_addtopup(menu, ". . .%d");
-                               break;
-                       }
-                       unsigned int new_pos = pos+1;
-                       while (new_pos < to &&
-                              toclist[new_pos].depth > depth)
-                               ++new_pos;
-
-                       string entry(4 * max(0, toclist[pos].depth - depth), ' ');
-                       entry += toclist[pos].str;
-                       entry = Limit_string_length(entry);
-
-                       if (new_pos == pos + 1) {
-                               entry += "%x";
-                               entry += tostr(pos + 1);
-                               fl_addtopup(menu, entry.c_str());
-                       } else if (menus.size() < max_number_of_menus) {
-                               int menu2 = fl_newpup(FL_ObjWin(ob));
-                               menus.push_back(menu2);
-                               Add_to_toc_menu(toclist, pos, new_pos,
-                                               depth + 1, menu2, menus,ob);
-                               entry += "%m";
-                               fl_addtopup(menu, entry.c_str(), menu2);
-                       } else {
-                               entry += "%d";
-                               fl_addtopup(menu, entry.c_str());
-                       }
-                       pos = new_pos;
-               }
-       }
-}
-
-int const BIG_NUM = 1048576;
-
-void Menus::ShowTocMenu(FL_OBJECT * ob, long)
-{
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-       vector<int> menus;
-
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-   
-       int TocMenu = fl_newpup(FL_ObjWin(ob));
-       menus.push_back(TocMenu);
-       vector<vector<Buffer::TocItem> > toclist =
-               men->currentView()->buffer()->getTocList();
-
-       //xgettext:no-c-format
-       static char const * MenuNames[3] = { N_("List of Figures%m"),
-       //xgettext:no-c-format
-                                            N_("List of Tables%m"),
-       //xgettext:no-c-format
-                                            N_("List of Algorithms%m") };
-
-       int max_nonempty = 0;
-       for (int j = 1; j <= 3; ++j)
-               if (!toclist[j].empty())
-                       max_nonempty = j;
-
-       for (int j = 1; j <= 3; ++j)
-               if (!toclist[j].empty()) {
-                       int menu2 = fl_newpup(FL_ObjWin(ob));
-                       menus.push_back(menu2);
-                       for (unsigned int i = 0; i < toclist[j].size(); ++i) {
-                               if (i > max_number_of_items) {
-                                       fl_addtopup(menu2, ". . .%d");
-                                       break;
-                               }
-                               string entry = Limit_string_length(toclist[j][i].str);
-                               entry += "%x" + tostr(i+1+j*BIG_NUM);
-                               fl_addtopup(menu2, entry.c_str());
-                       }
-                       if (j == max_nonempty) {
-                               string tmp = _(MenuNames[j-1]);
-                               tmp += "%l";
-                               fl_addtopup(TocMenu, tmp.c_str(), menu2);
-                       } else
-                               fl_addtopup(TocMenu, _(MenuNames[j-1]), menu2);
-               }
-
-       Add_to_toc_menu(toclist[0], 0, toclist[0].size(), 0,
-                       TocMenu, menus, ob);
-
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);   
-       int choice = fl_dopup(TocMenu);
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-       if (choice == 0)
-               men->_view->getLyXFunc()->Dispatch(LFUN_TOCVIEW);
-       else if (choice > 0) {
-               int type = choice / BIG_NUM;
-               int num = (choice % BIG_NUM) - 1;
-               BufferView *bv = men->currentView();
-               bv->beforeChange();
-               bv->text->SetCursor(bv, toclist[type][num].par, 0);
-               bv->text->sel_cursor = bv->text->cursor;
-               bv->update(BufferView::SELECT|BufferView::FITCUR);
-       }
-       for (unsigned int i = 0; i < menus.size(); ++i)
-               fl_freepup(menus[i]);
-}
-
-void Add_to_refs_menu(vector<string> const & label_list, int offset,
-                    int menu, vector<int> & menus, FL_OBJECT * ob)
-{
-       typedef vector<string>::size_type size_type;
-       size_type const max_number_of_items = 25;
-       size_type const max_number_of_items2 = 20;
-       string::size_type const max_item_length = 40;
-       string::size_type const max_item_length2 = 20;
-
-       if (label_list.size() <= max_number_of_items)
-               for (size_type i = 0; i < label_list.size(); ++i) {
-                       string entry = label_list[i];
-                       if (entry.size() > max_item_length)
-                               entry = entry.substr(0, max_item_length-1) + "$";
-                       entry += "%x" + tostr(i+offset);
-                       fl_addtopup(menu, entry.c_str());
-               }
-       else {
-               size_type count = 0;
-               for (size_type i = 0; i < label_list.size();
-                    i += max_number_of_items2) {
-                       ++count;
-                       if (count > max_number_of_items) {
-                               fl_addtopup(menu, ". . .%d");
-                               break;
-                       }
-                       size_type j = min(label_list.size(),
-                                         i+max_number_of_items2);
-
-                       string entry;
-                       if (label_list[i].size() > max_item_length2)
-                               entry += label_list[i].substr(0, max_item_length2-1) + "$";
-                       else
-                               entry += label_list[i];
-                       entry += "..";
-                       if (label_list[j-1].size() > max_item_length2)
-                               entry += label_list[j-1].substr(0, max_item_length2-1) + "$";
-                       else
-                               entry += label_list[j-1];
-
-                       if (menus.size() < max_number_of_menus) {
-                               int menu2 = fl_newpup(FL_ObjWin(ob));
-                               menus.push_back(menu2);
-                               for (size_type k = i;  k < j; ++k) {
-                                       string entry2 = label_list[k];
-                                       if (entry2.size() > max_item_length)
-                                               entry2 = entry2.substr(0, max_item_length-1) + "$";
-                                       entry2 += "%x" + tostr(k+offset);
-                                       fl_addtopup(menu2, entry2.c_str());
-                               }
-                               entry += "%m";
-                               fl_addtopup(menu, entry.c_str(), menu2);
-                       } else {
-                               entry += "%d";
-                               fl_addtopup(menu, entry.c_str());
-                       }
-               }
-       }
-}
-
-void Menus::ShowRefsMenu(FL_OBJECT * ob, long)
-{
-       vector<int> menus;
-
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-   
-       int RefsMenu = fl_newpup(FL_ObjWin(ob));
-       menus.push_back(RefsMenu);
-       Buffer * buffer = men->currentView()->buffer();
-       vector<string> label_list = buffer->getLabelList();
-       sort(label_list.begin(), label_list.end());
-
-       //xgettext:no-c-format
-       static char const * MenuNames[6] = { N_("Insert Reference%m"),
-       //xgettext:no-c-format
-                                            N_("Insert Page Number%m"),
-       //xgettext:no-c-format
-                                            N_("Insert vref%m"),
-       //xgettext:no-c-format
-                                            N_("Insert vpageref%m"),
-       //xgettext:no-c-format
-                                            N_("Insert Pretty Ref%m"),
-       //xgettext:no-c-format
-                                            N_("Goto Reference%m") };
-
-       for (int j = 0; j < 6; ++j) {
-               if (menus.size() < max_number_of_menus) {
-                       int menu2 = fl_newpup(FL_ObjWin(ob));
-                       menus.push_back(menu2);
-                       Add_to_refs_menu(label_list, (j+1)*BIG_NUM, menu2, menus, ob);
-                       fl_addtopup(RefsMenu, _(MenuNames[j]), menu2);
-               } else {
-                       string tmp = _(MenuNames[j]);
-                       tmp += "%d";
-                       fl_addtopup(RefsMenu, tmp.c_str());     
-               }
-       }
-       fl_addtopup(RefsMenu, _("Go Back"));
-
-       bool empty = label_list.empty();
-       bool sgml = buffer->isSGML();
-       bool readonly = buffer->isReadonly();
-
-       if (empty)
-               fl_setpup_mode(RefsMenu, 6, FL_PUP_GREY);
-       if (empty || readonly) {
-               fl_setpup_mode(RefsMenu, 1, FL_PUP_GREY);
-               fl_setpup_mode(RefsMenu, 2, FL_PUP_GREY);
-       }
-       if (empty || readonly || sgml) {
-               fl_setpup_mode(RefsMenu, 3, FL_PUP_GREY);
-               fl_setpup_mode(RefsMenu, 4, FL_PUP_GREY);
-               fl_setpup_mode(RefsMenu, 5, FL_PUP_GREY);
-       }
-       if (men->currentView()->NoSavedPositions())
-               fl_setpup_mode(RefsMenu, 7, FL_PUP_GREY);       
-
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);   
-       int choice = fl_dopup(RefsMenu);
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-
-       if (choice == 7)
-               men->_view->getLyXFunc()->Dispatch(LFUN_REF_BACK);
-       else if (choice >= BIG_NUM) {
-               int type = (choice / BIG_NUM) - 1;
-               int num = choice % BIG_NUM;
-               if (type >= 5)
-                       men->_view->getLyXFunc()->Dispatch(LFUN_REF_GOTO,
-                                                          label_list[num].c_str());
-               else {
-                       static string const cmdname[5]
-                               = { "ref", "pageref", "vref", "vpageref", "prettyref"};
-                       InsetCommandParams p( cmdname[type] );
-                       p.setContents( label_list[num] );
-                       men->currentView()->insertInset(new InsetRef(p));
-               }
-       }
-
-       for (unsigned int i = 0; i < menus.size(); ++i)
-               fl_freepup(menus[i]);
-}
-
-
-void Menus::ShowLayoutMenu(FL_OBJECT * ob, long)
-{
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-
-       if (!men->currentView()->available())
-               return;
-       
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-   
-       Buffer * tmpbuffer = men->_view->buffer();
-       LyXFunc * tmpfunc = men->_view->getLyXFunc();
-
-       int LayoutMenu = fl_newpup(FL_ObjWin(ob));
-       fl_addtopup(LayoutMenu, _("Character..."
-                                 "|Paragraph..."
-                                 "|Document..."
-                                 "|Paper..."
-                                 "|Table..."
-                                 "|Quotes...%l"
-                                 "|Emphasize Style%b"
-                                 "|Noun Style%b"
-                                 "|Bold Style%b"
-                                 "|TeX Style%b%l"
-                                 "|Change Environment Depth"
-                                 "|LaTeX Preamble..."
-                                 "|Start of Appendix%l"
-                                 "|Save layout as default"));
-       fl_setpup_shortcut(LayoutMenu, 1, scex(_("LM|Cc#c#C")));
-       fl_setpup_shortcut(LayoutMenu, 2, scex(_("LM|Pp#p#P")));
-       fl_setpup_shortcut(LayoutMenu, 3, scex(_("LM|Dd#d#D")));
-       fl_setpup_shortcut(LayoutMenu, 4, scex(_("LM|aA#a#A")));
-       fl_setpup_shortcut(LayoutMenu, 5, scex(_("LM|eE#e#E")));
-       fl_setpup_shortcut(LayoutMenu, 6, scex(_("LM|Qq#q#Q")));
-       fl_setpup_shortcut(LayoutMenu, 7, scex(_("LM|mM#m#M")));
-       fl_setpup_shortcut(LayoutMenu, 8, scex(_("LM|Nn#n#N")));
-       fl_setpup_shortcut(LayoutMenu, 9, scex(_("LM|Bb#b#B")));
-       fl_setpup_shortcut(LayoutMenu, 10, scex(_("LM|Tt#t#T")));
-       fl_setpup_shortcut(LayoutMenu, 11, scex(_("LM|vV#v#V")));
-       fl_setpup_shortcut(LayoutMenu, 12, scex(_("LM|Ll#l#L")));
-       fl_setpup_shortcut(LayoutMenu, 13, scex(_("LM|xX#x#X")));
-       fl_setpup_shortcut(LayoutMenu, 14, scex(_("LM|Ss#s#S")));
-
-       // Set values of checkboxes according to font
-       LyXFont font = men->currentView()->text->real_current_font;
-       if (font.emph() == LyXFont::ON)
-               fl_setpup_mode(LayoutMenu, 7, FL_PUP_CHECK);
-       if (font.noun() == LyXFont::ON)
-               fl_setpup_mode(LayoutMenu, 8, FL_PUP_CHECK);
-       if (font.series() == LyXFont::BOLD_SERIES)
-               fl_setpup_mode(LayoutMenu, 9, FL_PUP_CHECK);
-       if (font.latex() == LyXFont::ON)
-               fl_setpup_mode(LayoutMenu, 10, FL_PUP_CHECK);
-
-       // Grey out unavailable entries
-#ifndef NEW_TABULAR
-       if (!men->currentView()->text->cursor.par()->table)
-               fl_setpup_mode(LayoutMenu, 5, FL_PUP_GREY);
-#endif
-       if (tmpbuffer->isReadonly()) {
-               fl_setpup_mode(LayoutMenu, 1, FL_PUP_GREY);
-               fl_setpup_mode(LayoutMenu, 6, FL_PUP_GREY);
-               fl_setpup_mode(LayoutMenu, 11, FL_PUP_GREY);
-       }
-
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);
-       int choice = fl_dopup(LayoutMenu);
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-
-       switch (choice) {
-       case 1:  tmpfunc->Dispatch(LFUN_LAYOUT_CHARACTER); break;
-       case 2:  tmpfunc->Dispatch(LFUN_LAYOUT_PARAGRAPH); break;
-       case 3:  tmpfunc->Dispatch(LFUN_LAYOUT_DOCUMENT);  break;
-       case 4:  tmpfunc->Dispatch(LFUN_LAYOUT_PAPER); break;
-       case 5:  tmpfunc->Dispatch(LFUN_LAYOUT_TABLE, "true"); break;
-       case 6:  tmpfunc->Dispatch(LFUN_LAYOUT_QUOTES); break;
-       case 7:  tmpfunc->Dispatch(LFUN_EMPH); break;
-       case 8:  tmpfunc->Dispatch(LFUN_NOUN); break;
-       case 9:  tmpfunc->Dispatch(LFUN_BOLD); break;
-       case 10: tmpfunc->Dispatch(LFUN_TEX); break;
-       case 11: tmpfunc->Dispatch(LFUN_DEPTH_PLUS); break;
-       case 12: tmpfunc->Dispatch(LFUN_LAYOUT_PREAMBLE); break;
-       case 13: tmpfunc->Dispatch(LFUN_APPENDIX); break;
-       case 14: tmpfunc->Dispatch(LFUN_LAYOUT_SAVE_DEFAULT); break;
-       }
-       fl_freepup(LayoutMenu); 
-}
-
-
-void Menus::ShowInsertMenu(FL_OBJECT * ob, long)
-{
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-       
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-       Buffer * tmpbuffer = men->_view->buffer();
-       LyXFunc * tmpfunc = men->_view->getLyXFunc();
-
-       int SubInsertAscii = fl_defpup(FL_ObjWin(ob),
-                                      _("Import ASCII file%t"
-                                        "|As Lines%x41"
-                                        "|As Paragraphs%x42"));
-       
-       fl_setpup_shortcut(SubInsertAscii, 41, scex(_("IMA|Ll#l#L")));
-       fl_setpup_shortcut(SubInsertAscii, 42, scex(_("IMA|Pp#p#P")));
-
-       int SubInsertTableList= fl_defpup(FL_ObjWin(ob),
-                                         _("Lists & TOC%t"
-                                           "|Table of Contents%x21"
-                                           "|List of Figures%x22"
-                                           "|List of Tables%x23"
-                                           "|List of Algorithms%x24"
-                                           "|Index List%x25"
-                                           "|BibTeX Reference%x26"));
-       
-       fl_setpup_shortcut(SubInsertTableList, 21, scex(_("IMT|Cc#c#C")));
-       fl_setpup_shortcut(SubInsertTableList, 22, scex(_("IMT|Ff#f#F")));
-       fl_setpup_shortcut(SubInsertTableList, 23, scex(_("IMT|Tt#t#T")));
-       fl_setpup_shortcut(SubInsertTableList, 24, scex(_("IMT|Aa#a#A")));
-       fl_setpup_shortcut(SubInsertTableList, 25, scex(_("IMT|Ii#i#I")));
-       fl_setpup_shortcut(SubInsertTableList, 26, scex(_("IMT|Bb#b#B")));
-
-       int SubInsertFloatList = fl_defpup(FL_ObjWin(ob),
-                                          _("Floats%t"
-                                            "|Figure Float%x71"
-                                            "|Table Float%x72"
-                                            "|Wide Figure Float%x73"
-                                            "|Wide Table Float%l%x74"
-                                            "|Algorithm Float%x75"));
-       
-       fl_setpup_shortcut(SubInsertFloatList, 71, scex(_("IMF|gG#g#G")));
-       fl_setpup_shortcut(SubInsertFloatList, 72, scex(_("IMF|Tt#t#T")));
-       fl_setpup_shortcut(SubInsertFloatList, 73, scex(_("IMF|Ww#w#W")));
-       fl_setpup_shortcut(SubInsertFloatList, 74, scex(_("IMF|iI#i#I")));
-       fl_setpup_shortcut(SubInsertFloatList, 75, scex(_("IMF|Aa#a#A")));
-       
-       int SubInsertSpecial = fl_defpup(FL_ObjWin(ob),
-                                        _("Special Character%t"
-                                          "|HFill%x31"
-                                          "|Hyphenation Point%x32"
-                                          "|Protected Blank%x33"
-                                          "|Linebreak%x34"
-                                          "|Ellipsis (...)%x35"
-                                          "|End of sentence period%x36"
-                                          "|Ordinary Quote (\")%x37"
-                                          "|Menu Separator %x38"));
-
-       fl_setpup_shortcut(SubInsertSpecial, 31, scex(_("IMS|Hh#h#H")));
-       fl_setpup_shortcut(SubInsertSpecial, 32, scex(_("IMS|Pp#p#P")));
-       fl_setpup_shortcut(SubInsertSpecial, 33, scex(_("IMS|Bb#b#B")));
-       fl_setpup_shortcut(SubInsertSpecial, 34, scex(_("IMS|Ll#l#L")));
-       fl_setpup_shortcut(SubInsertSpecial, 35, scex(_("IMS|iI#i#I")));
-       fl_setpup_shortcut(SubInsertSpecial, 36, scex(_("IMS|Ee#e#E")));
-       fl_setpup_shortcut(SubInsertSpecial, 37, scex(_("IMS|Qq#q#Q")));
-       fl_setpup_shortcut(SubInsertSpecial, 38, scex(_("IMS|Mm#m#M")));
-       
-       int InsertMenu = fl_defpup(FL_ObjWin(ob),
-                                  _("Figure..."
-                                    "|Table...%l"
-                                    "|Include File..." 
-                                    "|Import ASCII File%m"
-                                    "|Insert LyX File..."
-                                    "|Insert external material...%l"
-                                    "|Footnote"
-                                    "|Margin Note"
-                                    "|Floats%m%l"      
-                                    "|Lists & TOC%m%l"
-                                    "|Special Character%m%l"
-                                    "|Note..."
-                                    "|Label..."
-                                    "|Cross-Reference..."
-                                    "|Citation Reference..."
-                                    "|Index entry..."
-                                    "|Index entry of last word"),
-                                  SubInsertAscii,
-                                  SubInsertFloatList,  
-                                  SubInsertTableList,
-                                  SubInsertSpecial);
-
-       fl_setpup_shortcut(InsertMenu, 1, scex(_("IM|gG#g#G")));
-       fl_setpup_shortcut(InsertMenu, 2, scex(_("IM|bB#b#B")));
-       fl_setpup_shortcut(InsertMenu, 3, scex(_("IM|cC#c#C")));
-       fl_setpup_shortcut(InsertMenu, 4, scex(_("IM|Aa#a#A")));
-       fl_setpup_shortcut(InsertMenu, 5, scex(_("IM|Xx#x#X")));
-       fl_setpup_shortcut(InsertMenu, 6, scex(_("IM|Ee#e#E")));
-       fl_setpup_shortcut(InsertMenu, 7, scex(_("IM|Ff#f#F")));
-       fl_setpup_shortcut(InsertMenu, 8, scex(_("IM|Mm#m#M")));
-       fl_setpup_shortcut(InsertMenu, 9, scex(_("IM|oO#o#O")));
-       fl_setpup_shortcut(InsertMenu, 10, scex(_("IM|Tt#t#T")));
-       fl_setpup_shortcut(InsertMenu, 11, scex(_("IM|Ss#s#S")));
-       fl_setpup_shortcut(InsertMenu, 12, scex(_("IM|Nn#n#N")));
-       fl_setpup_shortcut(InsertMenu, 13, scex(_("IM|Ll#l#L")));
-       fl_setpup_shortcut(InsertMenu, 14, scex(_("IM|rR#r#R")));     
-       fl_setpup_shortcut(InsertMenu, 15, scex(_("IM|iI#i#I")));
-       fl_setpup_shortcut(InsertMenu, 16, scex(_("IM|dD#d#D")));
-       fl_setpup_shortcut(InsertMenu, 17, scex(_("IM|wW#w#W")));
-
-       fl_addtopup(InsertMenu, _("|URL..."));
-       fl_setpup_shortcut(InsertMenu, 18, scex(_("IM|Uu#u#U")));
-
-       if (tmpbuffer->isReadonly()) {
-                for (int ii = 1; ii <= 17; ++ii)
-                       fl_setpup_mode(InsertMenu, ii, FL_PUP_GREY);
-               fl_setpup_mode(InsertMenu, 18, FL_PUP_GREY);
-       }
-
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);
-   
-       int choice = fl_dopup(InsertMenu);
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-
-       if (men->currentView()->available()){
-               men->currentView()->hideCursor();
-               switch (choice) {
-               case 1: tmpfunc->Dispatch(LFUN_FIGURE); break;
-               case 2: tmpfunc->Dispatch(LFUN_DIALOG_TABULAR_INSERT); break;
-               case 3: tmpfunc->Dispatch(LFUN_CHILDINSERT); break;
-               case 4: // Insert ASCII file submenu
-                       break;
-               case 5: tmpfunc->Dispatch(LFUN_FILE_INSERT); break;
-               case 41: tmpfunc->Dispatch(LFUN_FILE_INSERT_ASCII, "line"); break;
-               case 42: tmpfunc->Dispatch(LFUN_FILE_INSERT_ASCII, "paragraph"); break;
-               case 43: 
-                       break;
-
-               case 6: tmpfunc->Dispatch(LFUN_INSET_EXTERNAL); break;
-
-               case 7:
-#ifndef NEW_INSETS
-                       tmpfunc->Dispatch(LFUN_FOOTMELT); break;
-#else
-                       tmpfunc->Dispatch(LFUN_INSET_FOOTNOTE);
-                       break;
-#endif
-               case 8:
-#ifndef NEW_INSETS
-                       tmpfunc->Dispatch(LFUN_MARGINMELT); break;
-#else
-                       tmpfunc->Dispatch(LFUN_INSET_MARGINAL);
-                       break;
-#endif
-  
-               case 9: // Float sub-menu
-                case 71:
-#ifndef NEW_INSETS
-                       tmpfunc->Dispatch(LFUN_INSERTFOOTNOTE, "figure");
-                       break;
-#else
-                       tmpfunc->Dispatch(LFUN_INSET_FLOAT, "figure");
-                       break;
-#endif
-               case 72:
-#ifndef NEW_INSETS
-                       tmpfunc->Dispatch(LFUN_INSERTFOOTNOTE, "table");
-                       break;
-#else
-                       tmpfunc->Dispatch(LFUN_INSET_FLOAT, "table");
-                       break;
-#endif
-               case 73:
-#ifndef NEW_INSETS
-                       tmpfunc->Dispatch(LFUN_INSERTFOOTNOTE, "wide-fig");
-                       break;
-#else
-                       tmpfunc->Dispatch(LFUN_INSET_FLOAT, "figure");
-                       break;
-#endif
-               case 74:
-#ifndef NEW_INSETS
-                       tmpfunc->Dispatch(LFUN_INSERTFOOTNOTE, "wide-tab");
-                       break;
-#else
-                       tmpfunc->Dispatch(LFUN_INSET_FLOAT, "table");
-                       break;
-#endif
-               case 75:
-#ifndef NEW_INSETS
-                       tmpfunc->Dispatch(LFUN_INSERTFOOTNOTE, "algorithm");
-                       break;
-#else
-                       tmpfunc->Dispatch(LFUN_INSET_FLOAT, "algorithm");
-                       break;
-#endif
-               case 10: // Table/List submenu
-                       break;
-               case 21: tmpfunc->Dispatch(LFUN_TOC_INSERT); break;
-               case 22: tmpfunc->Dispatch(LFUN_LOF_INSERT); break;
-               case 23: tmpfunc->Dispatch(LFUN_LOT_INSERT); break;
-               case 24: tmpfunc->Dispatch(LFUN_LOA_INSERT); break;
-               case 25: tmpfunc->Dispatch(LFUN_INDEX_PRINT); break;
-               case 26: tmpfunc->Dispatch(LFUN_INSERT_BIBTEX); break;
-
-               case 11: // Special Character submenu
-                       break;
-               case 31: tmpfunc->Dispatch(LFUN_HFILL); break;
-               case 32: tmpfunc->Dispatch(LFUN_HYPHENATION); break;
-               case 33: tmpfunc->Dispatch(LFUN_PROTECTEDSPACE); break; 
-               case 34: tmpfunc->Dispatch(LFUN_BREAKLINE); break; 
-               case 35: tmpfunc->Dispatch(LFUN_LDOTS); break;
-               case 36: tmpfunc->Dispatch(LFUN_END_OF_SENTENCE); break;
-               case 37: tmpfunc->Dispatch(LFUN_QUOTE); break;
-               case 38: tmpfunc->Dispatch(LFUN_MENU_SEPARATOR); break;
-
-               case 12: tmpfunc->Dispatch(LFUN_INSERT_NOTE); break;
-               case 13: tmpfunc->Dispatch(LFUN_INSERT_LABEL); break;
-               case 14: tmpfunc->Dispatch(LFUN_REF_INSERT); break;
-               case 15: tmpfunc->Dispatch(LFUN_CITATION_CREATE); break;
-               case 16: tmpfunc->Dispatch(LFUN_INDEX_CREATE); break;
-               case 17: tmpfunc->Dispatch(LFUN_INDEX_INSERT_LAST); break;
-               case 18: tmpfunc->Dispatch(LFUN_URL); break;
-               }
-       }
-       fl_freepup(InsertMenu);
-       fl_freepup(SubInsertAscii);
-       fl_freepup(SubInsertTableList);
-       fl_freepup(SubInsertFloatList);
-       fl_freepup(SubInsertSpecial);
-}
-
-
-void Menus::ShowMathMenu(FL_OBJECT * ob, long)
-{
-       extern void math_insert_symbol(char const * s);
-
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-
-       Buffer * tmpbuffer = men->_view->buffer();
-       LyXFunc * tmpfunc = men->_view->getLyXFunc();
-
-       int MathMenu = fl_defpup(FL_ObjWin(ob), 
-                                _("Fraction"
-                                  "|Square root"
-                                  "|Exponent"
-                                  "|Index"
-                                  "|Sum"
-                                  "|Integral%l"
-                                  "|Math mode"
-                                  "|Display%l"
-                                  "|Math Panel..."));
-
-       fl_setpup_shortcut(MathMenu, 1, scex(_("MM|Ff#f#F")));
-       fl_setpup_shortcut(MathMenu, 2, scex(_("MM|Ss#s#S")));
-       fl_setpup_shortcut(MathMenu, 3, scex(_("MM|Ee#e#E")));
-       fl_setpup_shortcut(MathMenu, 4, scex(_("MM|xX#x#X")));
-       fl_setpup_shortcut(MathMenu, 5, scex(_("MM|uU#u#U")));
-       fl_setpup_shortcut(MathMenu, 6, scex(_("MM|Ii#i#I")));
-       fl_setpup_shortcut(MathMenu, 7, scex(_("MM|Mm#m#M")));
-       fl_setpup_shortcut(MathMenu, 8, scex(_("MM|Dd#d#D")));
-       fl_setpup_shortcut(MathMenu, 9, scex(_("MM|Pp#p#P")));
-
-       if (tmpbuffer->isReadonly()) 
-                for (int ii = 1; ii <= 9; ++ii)
-                       fl_setpup_mode(MathMenu, ii, FL_PUP_GREY);
-
-
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);   
-       int choice = fl_dopup(MathMenu);  
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-
-       if (men->currentView()->available())  {
-               switch (choice) {
-               case 1: /* frac */
-                       tmpfunc->Dispatch(LFUN_INSERT_MATH, "frac");
-                       break;
-               case 2: /* sqrt */
-                       tmpfunc->Dispatch(LFUN_INSERT_MATH, "sqrt");
-                       break;
-               case 3: /* Exponent */ 
-                       tmpfunc->Dispatch(LFUN_INSERT_MATH, "^");
-                       break;
-               case 4: /* Index */
-                       tmpfunc->Dispatch(LFUN_INSERT_MATH, "_");
-                       break;
-               case 5: /* sum */ 
-                       tmpfunc->Dispatch(LFUN_INSERT_MATH, "sum");
-                       break;
-               case 6: /* int */
-                       tmpfunc->Dispatch(LFUN_INSERT_MATH, "int");
-                       break;
-               case 7:
-                       tmpfunc->Dispatch(LFUN_MATH_MODE);
-                       break;
-               case 8:
-                       tmpfunc->Dispatch(LFUN_MATH_DISPLAY);
-                       break;
-               case 9: /* Panel */
-                       tmpfunc->Dispatch(LFUN_MATH_PANEL);
-                       break;
-               }
-               men->currentView()->update(BufferView::SELECT|BufferView::FITCUR);
-       } 
-       fl_freepup(MathMenu);
-}
-
-
-void Menus::ShowOptionsMenu(FL_OBJECT * ob, long)
-{
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-
-       //Buffer *tmpbuffer = men->_view->currentBuffer();
-       LyXFunc * tmpfunc = men->_view->getLyXFunc();
-
-       int OptionsMenu = fl_defpup(FL_ObjWin(ob),
-                                   _("|Spellchecker Options..."
-                                     "|Keyboard...%l"
-                                     "|Reconfigure"
-                                     "|Preferences"));
-
-       fl_setpup_shortcut(OptionsMenu, 1, scex(_("OM|Ss#s#S")));
-       fl_setpup_shortcut(OptionsMenu, 2, scex(_("OM|Kk#k#K")));
-       fl_setpup_shortcut(OptionsMenu, 3, scex(_("OM|Rr#r#R")));
-       fl_setpup_shortcut(OptionsMenu, 4, scex(_("OM|Pp#p#P")));
-
-       if(lyxrc.isp_command == "none") 
-               fl_setpup_mode(OptionsMenu, 2, FL_PUP_GREY);
-
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);   
-       int choice = fl_dopup(OptionsMenu);
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-       switch (choice){
-       case 1: SpellCheckerOptions(); break;      
-       case 2: men->_view->getIntl()->MenuKeymap(); break;
-       case 3: tmpfunc->Dispatch(LFUN_RECONFIGURE); break;
-       case 4: men->_view->getDialogs()->showPreferences(); break;
-       default: break;
-       }   
-       fl_freepup(OptionsMenu);
-}
-
-
-void Menus::ShowBufferMenu(FL_OBJECT * ob, long)
-{
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-       
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-   
-       int BufferMenu = fl_newpup(FL_ObjWin(ob));
-       vector<string> namevec = bufferlist.getFileNames();
-       if (namevec.size() != 0) {
-               for (vector<string>::const_iterator cit = namevec.begin();
-                    cit != namevec.end(); ++cit) {
-                       string relbuf = MakeDisplayPath((*cit), 30);
-                       fl_addtopup(BufferMenu, relbuf.c_str());
-               }
-       } else {
-               fl_addtopup(BufferMenu, _("No Documents Open!%t"));
-       }
-   
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);   
-       int choice = fl_dopup(BufferMenu);
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-       if (choice > 0) men->handleBufferMenu(choice - 1);
-   
-       fl_freepup(BufferMenu);
-}
-
-
-static
-char const * doc_files [] = {"Intro", "Tutorial", 
-                            "UserGuide", "Extended",
-                            "Customization", "Reference",
-                            "FAQ", "TOC",  
-                            "BUGS", "LyXConfig"}; 
-
-void Menus::ShowHelpMenu(FL_OBJECT * ob, long)
-{
-       Menus * men = static_cast<Menus*>(ob->u_vdata);
-       LyXFunc * tmpfunc = men->_view->getLyXFunc();
-
-       // set the pseudo menu-button
-       fl_set_object_boxtype(ob, FL_UP_BOX);
-       fl_set_button(ob, 0);
-       fl_redraw_object(ob);
-   
-       int HelpMenu = fl_defpup(FL_ObjWin(ob),
-                                _("Introduction"
-                                  "|Tutorial"
-                                  "|User's Guide"
-                                  "|Extended Features"
-                                  "|Customization"
-                                  "|Reference Manual"
-                                  "|FAQ"
-                                  "|Table of Contents"
-                                  "|Known Bugs"
-                                  "|LaTeX Configuration%l"
-                                  "|Copyright and Warranty..."
-                                  "|Credits..."
-                                  "|Version..."));
-   
-       fl_setpup_shortcut(HelpMenu,  1, scex(_("HM|Ii#I#i")));
-       fl_setpup_shortcut(HelpMenu,  2, scex(_("HM|Tt#T#t")));
-       fl_setpup_shortcut(HelpMenu,  3, scex(_("HM|Uu#U#u")));
-       fl_setpup_shortcut(HelpMenu,  4, scex(_("HM|xX#x#X")));
-       fl_setpup_shortcut(HelpMenu,  5, scex(_("HM|Cc#C#c")));
-       fl_setpup_shortcut(HelpMenu,  6, scex(_("HM|Rr#R#r")));
-       fl_setpup_shortcut(HelpMenu,  7, scex(_("HM|Ff#F#f")));
-       fl_setpup_shortcut(HelpMenu,  8, scex(_("HM|aA#a#A")));
-       fl_setpup_shortcut(HelpMenu,  9, scex(_("HM|Kk#K#k")));
-       fl_setpup_shortcut(HelpMenu, 10, scex(_("HM|Ll#L#l")));
-       fl_setpup_shortcut(HelpMenu, 11, scex(_("HM|oO#o#O")));
-       fl_setpup_shortcut(HelpMenu, 12, scex(_("HM|eE#e#E")));
-       fl_setpup_shortcut(HelpMenu, 13, scex(_("HM|Vv#v#V")));
-
-       fl_setpup_position(
-               men->_view->getForm()->x + ob->x,
-               men->_view->getForm()->y + ob->y + ob->h + 10);   
-       int choice = fl_dopup(HelpMenu);
-       XFlush(fl_display);
-
-       // set the pseudo menu-button back
-       fl_set_object_boxtype(ob, FL_FLAT_BOX);
-       fl_redraw_object(ob);
-
-       switch (choice) {
-       case 1: case 2: case 3: case 4: case 5: 
-       case 6: case 7: case 8: case 9: case 10:
-               ProhibitInput(men->currentView());
-               men->MenuDocu(doc_files[choice - 1]);
-               AllowInput(men->currentView());
-               break;
-       case 11: tmpfunc->Dispatch(LFUN_HELP_COPYRIGHT); break;
-       case 12: ShowCredits(); break;
-       case 13:
-               ProhibitInput(men->currentView());
-               fl_show_message((string(_("LyX Version ")) + LYX_VERSION 
-                                + _(" of ") + LYX_RELEASE).c_str(),
-                               (_("Library directory: ")
-                                + MakeDisplayPath(system_lyxdir)).c_str(),
-                               (_("User directory: ") 
-                                + MakeDisplayPath(user_lyxdir)).c_str());
-               AllowInput(men->currentView());
-               break;
-       }
-       fl_freepup(HelpMenu);
-}
-
-
-void Menus::MenuDocu(string const & docname) 
-{
-       string fname = i18nLibFileSearch("doc", docname, "lyx");
-       if (fname.empty()) {
-               WriteAlert(_("Error!"),
-                          _("Could not find requested Documentation file"),
-                          fname);
-               return;
-       }
-       _view->getMiniBuffer()->Set(_("Opening help file"),
-                                   MakeDisplayPath(fname), "...");
-       currentView()->buffer(bufferlist.loadLyXFile(fname, false));
-
-       if (docname == "Reference")
-               _view->getLyXFunc()->Dispatch(LFUN_TOCVIEW);
-}
-
-
-void Menus::handleBufferMenu(int choice)
-{
-       currentView()->buffer(bufferlist.getBuffer(choice));
-}
diff --git a/src/menus.h b/src/menus.h
deleted file mode 100644 (file)
index b3ffff4..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-// -*- C++ -*-
-/* This file is part of
-* ======================================================
-* 
-*           LyX, The Document Processor
-*        
-*           Copyright 1995 Matthias Ettrich
-*           Copyright 1995-2000 The LyX Team.
-*
-* ====================================================== */
-
-#ifndef MENUS_H
-#define MENUS_H
-
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include FORMS_H_LOCATION
-#include "lyx.h"
-#include "LString.h"
-
-class BufferView;
-class LyXView;
-
-
-///
-class Menus {
-public:
-       ///
-       Menus(LyXView *view, int air);
-       ///
-       void showMenus();
-       ///
-       void hideMenus();
-       ///
-       void openByName(string const &menuName);
-       ///
-       static void ShowFileMenu(FL_OBJECT *ob, long);
-       ///
-       static void ShowFileMenu2(FL_OBJECT *ob, long);
-       ///
-       static void ShowEditMenu(FL_OBJECT *ob, long data);
-       ///
-       static void ShowTocMenu(FL_OBJECT *ob, long data);
-       ///
-       static void ShowRefsMenu(FL_OBJECT *ob, long data);
-       ///
-       static void ShowLayoutMenu(FL_OBJECT *ob, long data);
-       ///
-       static void ShowInsertMenu(FL_OBJECT *ob, long data);
-       ///
-       static void ShowMathMenu(FL_OBJECT *ob, long);
-       ///
-       static void ShowOptionsMenu(FL_OBJECT *ob, long men);
-       ///
-       static void ShowBufferMenu(FL_OBJECT *ob, long);
-       ///
-       static void ShowHelpMenu(FL_OBJECT *ob, long);
-private:
-       ///
-       void create_menus(int air);
-       ///
-       void showCopyright();
-       ///
-       void showLicense();
-       ///
-       void MenuDocu(string const & docname);
-       ///
-       void handleBufferMenu(int choice);
-       
-       /// 
-       BufferView *currentView();
-       ///
-       LyXView *_view;
-       ///
-       FL_OBJECT *menu_grp1;
-       ///
-       FL_OBJECT *menu_grp2;
-       ///
-       FL_OBJECT *menu_file;
-       ///
-       FL_OBJECT *menu_file2;
-       ///
-       FL_OBJECT *menu_edit;
-       ///
-       FL_OBJECT *menu_toc;
-       ///
-       FL_OBJECT *menu_refs;
-       ///
-       FL_OBJECT *menu_layout;
-       ///
-       FL_OBJECT *menu_insert;
-       ///
-       FL_OBJECT *menu_math;
-       ///
-        FL_OBJECT *menu_options;
-       ///
-        FL_OBJECT *menu_options2;
-       ///
-       FL_OBJECT *menu_buffer;
-       ///
-       FL_OBJECT *menu_help;
-       ///
-       FL_OBJECT *menu_help2;
-};
-
-#endif