]> git.lyx.org Git - lyx.git/blobdiff - src/MenuBackend.C
last Friday's text*.C -> text_func shuffle
[lyx.git] / src / MenuBackend.C
index c0903bfda7e342cc9da5c9bbf986b4ae44427000..9eb756c7f8527726690294299aa85fa1cf8cea57 100644 (file)
@@ -11,7 +11,6 @@
 
 #include <config.h>
 
-#include <algorithm>
 #include "MenuBackend.h"
 #include "lyxlex.h"
 #include "LyXAction.h"
 #include "lyx_main.h" // for lastfiles
 #include "bufferlist.h"
 #include "buffer.h"
-#include "converter.h"
+#include "format.h"
 #include "exporter.h"
 #include "importer.h"
 #include "FloatList.h"
 #include "toc.h"
+#include "CutAndPaste.h"
 #include "frontends/LyXView.h"
 #include "support/LAssert.h"
 #include "support/filetools.h"
 #include "support/lyxfunctional.h"
 #include "support/lstrings.h"
+#include "support/tostr.h"
+
+#include <algorithm>
 
 extern BufferList bufferlist;
 extern boost::scoped_ptr<kb_keymap> toplevel_keymap;
 
+using namespace lyx::support;
+
 using std::endl;
 using std::vector;
 using std::max;
@@ -63,6 +68,7 @@ MenuItem::MenuItem(Kind kind, string const & label,
        case ImportFormats:
        case FloatListInsert:
        case FloatInsert:
+       case PasteRecent:
                break;
        case Command:
                action_ = lyxaction.LookupFunc(command);
@@ -113,7 +119,7 @@ string const MenuItem::binding() const
 {
        if (kind_ != Command)
                return string();
-       
+
        // Get the keys bound to this action, but keep only the
        // first one later
        string bindings = toplevel_keymap->findbinding(action_);
@@ -131,7 +137,7 @@ Menu & Menu::add(MenuItem const & i, LyXView const * view)
                items_.push_back(i);
                return *this;
        }
-               
+
        switch (i.kind()) {
        case MenuItem::Command:
        {
@@ -173,7 +179,7 @@ Menu & Menu::add(MenuItem const & i, LyXView const * view)
                break;
        default:
                items_.push_back(i);
-       }       
+       }
 
        return *this;
 }
@@ -197,6 +203,7 @@ Menu & Menu::read(LyXLex & lex)
                md_viewformats,
                md_floatlistinsert,
                md_floatinsert,
+               md_pasterecent,
                md_last
        };
 
@@ -211,6 +218,7 @@ Menu & Menu::read(LyXLex & lex)
                { "lastfiles", md_lastfiles },
                { "optitem", md_optitem },
                { "optsubmenu", md_optsubmenu },
+               { "pasterecent", md_pasterecent },
                { "separator", md_separator },
                { "submenu", md_submenu },
                { "toc", md_toc },
@@ -281,6 +289,10 @@ Menu & Menu::read(LyXLex & lex)
                        add(MenuItem(MenuItem::FloatInsert));
                        break;
 
+               case md_pasterecent:
+                       add(MenuItem(MenuItem::PasteRecent));
+                       break;
+
                case md_optsubmenu:
                        optional = true;
                        // fallback to md_submenu
@@ -390,7 +402,7 @@ void expandDocuments(Menu & tomenu, LyXView const * view)
        for (; docit != end; ++docit, ++ii) {
                int const action =
                        lyxaction.getPseudoAction(LFUN_SWITCHBUFFER, *docit);
-               string label = MakeDisplayPath(*docit, 30);
+               string label = MakeDisplayPath(*docit, 20);
                if (ii < 10)
                        label = tostr(ii) + ". " + label + '|' + tostr(ii);
                tomenu.add(MenuItem(MenuItem::Command, label, action), view);
@@ -605,6 +617,22 @@ void expandToc(Menu & tomenu, LyXView const * view)
 }
 
 
+void expandPasteRecent(Menu & tomenu, LyXView const * view)
+{
+       vector<string> const selL =
+               CutAndPaste::availableSelections(*view->buffer());
+
+       vector<string>::const_iterator cit = selL.begin();
+       vector<string>::const_iterator end = selL.end();
+
+       for (unsigned int index = 0; cit != end; ++cit, ++index) {
+               int const action = lyxaction.getPseudoAction(LFUN_PASTE,
+                                                            tostr(index));
+               tomenu.add(MenuItem(MenuItem::Command, *cit, action));
+       }
+}
+
+
 } // namespace anon
 
 
@@ -637,6 +665,10 @@ void MenuBackend::expand(Menu const & frommenu, Menu & tomenu,
                        expandFloatInsert(tomenu, view);
                        break;
 
+               case MenuItem::PasteRecent:
+                       expandPasteRecent(tomenu, view);
+                       break;
+
                case MenuItem::Toc:
                        expandToc(tomenu, view);
                        break;
@@ -731,51 +763,6 @@ void MenuBackend::read(LyXLex & lex)
 }
 
 
-void MenuBackend::defaults()
-{
-       menulist_.clear();
-
-       lyxerr[Debug::GUI] << "MenuBackend::defaults: using default values"
-                          << endl;
-
-       Menu file("file");
-       file
-               .add(MenuItem(MenuItem::Command, _("New...|N"), "buffer-new"))
-               .add(MenuItem(MenuItem::Command, _("Open...|O"), "file-open"))
-               .add(MenuItem(MenuItem::Submenu, _("Import|I"), "import"))
-               .add(MenuItem(MenuItem::Command, _("Quit|Q"), "lyx-quit"))
-               .add(MenuItem(MenuItem::Separator))
-               .add(MenuItem(MenuItem::Lastfiles));
-       add(file);
-
-       Menu import("import");
-       import
-               .add(MenuItem(MenuItem::Command,
-                             _("LaTeX...|L"), "buffer-import latex"))
-               .add(MenuItem(MenuItem::Command,
-                             _("LinuxDoc...|L"), "buffer-import linuxdoc"));
-       add(import);
-
-       Menu edit("edit");
-       edit
-               .add(MenuItem(MenuItem::Command, _("Cut"), "cut"))
-               .add(MenuItem(MenuItem::Command, _("Copy"), "copy"))
-               .add(MenuItem(MenuItem::Command, _("Paste"), "paste"))
-               .add(MenuItem(MenuItem::Command, _("Emphasize"), "font-emph"));
-       add(edit);
-
-       Menu documents("documents");
-       documents.add(MenuItem(MenuItem::Documents));
-       add(documents);
-
-       menubar_.add(MenuItem(MenuItem::Submenu, _("File|F"), "file"))
-               .add(MenuItem(MenuItem::Submenu, _("Edit|E"), "edit"))
-               .add(MenuItem(MenuItem::Submenu,
-                             _("Documents|D"), "documents"));
-
-}
-
-
 void MenuBackend::add(Menu const & menu)
 {
        menulist_.push_back(menu);
@@ -795,7 +782,7 @@ Menu const & MenuBackend::getMenu(string const & name) const
                                     lyx::compare_memfun(&Menu::name, name));
        if (cit == end())
                lyxerr << "No submenu named " << name << endl;
-       lyx::Assert(cit != end());
+       Assert(cit != end());
        return (*cit);
 }
 
@@ -805,7 +792,7 @@ Menu & MenuBackend::getMenu(string const & name)
        MenuList::iterator it =
                find_if(menulist_.begin(), menulist_.end(),
                        lyx::compare_memfun(&Menu::name, name));
-       lyx::Assert(it != menulist_.end());
+       Assert(it != menulist_.end());
        return (*it);
 }