]> git.lyx.org Git - lyx.git/blobdiff - src/MenuBackend.cpp
Embedding: saving inzip name to .lyx file so that embedded files can always be found...
[lyx.git] / src / MenuBackend.cpp
index 5c20906999387af23a63ef1325b2ae729881f36d..8d269f3e02e5761d1baff98aa1fc7ec22acade8b 100644 (file)
@@ -39,6 +39,8 @@
 #include "TocBackend.h"
 #include "ToolbarBackend.h"
 
+#include "frontends/Application.h"
+
 #include "support/filetools.h"
 #include "support/lstrings.h"
 #include "support/convert.h"
 
 using namespace std;
 using boost::bind;
+using namespace lyx::support;
 
 namespace lyx {
 
-using support::compare_ascii_no_case;
-using support::contains;
-using support::makeDisplayPath;
-using support::token;
-
 namespace {
 
-class MenuNamesEqual : public std::unary_function<Menu, bool> {
+class MenuNamesEqual : public unary_function<Menu, bool> {
 public:
        MenuNamesEqual(docstring const & name)
                : name_(name) {}
@@ -74,10 +72,6 @@ private:
 } // namespace anon
 
 
-// This is the global menu definition
-MenuBackend menubackend;
-
-
 MenuItem::MenuItem(Kind kind)
        : kind_(kind), optional_(false)
 {}
@@ -122,7 +116,7 @@ docstring const MenuItem::shortcut() const
 }
 
 
-docstring const MenuItem::binding(bool forgui) const
+docstring const MenuItem::binding() const
 {
        if (kind_ != Command)
                return docstring();
@@ -379,7 +373,7 @@ MenuItem const & Menu::operator[](size_type i) const
 bool Menu::hasFunc(FuncRequest const & func) const
 {
        return find_if(begin(), end(),
-                      bind(std::equal_to<FuncRequest>(),
+                      bind(equal_to<FuncRequest>(),
                            bind(&MenuItem::func, _1),
                            func)) != end();
 }
@@ -410,7 +404,7 @@ void Menu::checkShortcuts() const
 }
 
 
-bool Menu::searchFunc(FuncRequest & func, stack<docstring> & names)
+bool Menu::searchFunc(FuncRequest & func, stack<docstring> & names) const
 {
        const_iterator m = begin();
        const_iterator m_end = end();
@@ -420,7 +414,7 @@ bool Menu::searchFunc(FuncRequest & func, stack<docstring> & names)
                        return true;
                } else if (m->kind() == MenuItem::Submenu) {
                        names.push(m->label());
-                       Menu submenu = menubackend.getMenu(m->submenuname());
+                       Menu submenu = theApp()->menuBackend().getMenu(m->submenuname());
                        if (submenu.searchFunc(func, names))
                                return true;
                        else
@@ -555,6 +549,7 @@ void expandFormats(MenuItem::Kind kind, Menu & tomenu, Buffer const * buf)
                if ((*fit)->dummy())
                        continue;
                docstring label = from_utf8((*fit)->prettyname());
+               docstring const shortcut = from_utf8((*fit)->shortcut());
 
                switch (kind) {
                case MenuItem::ImportFormats:
@@ -576,8 +571,13 @@ void expandFormats(MenuItem::Kind kind, Menu & tomenu, Buffer const * buf)
                        BOOST_ASSERT(false);
                        break;
                }
-               if (!(*fit)->shortcut().empty())
-                       label += char_type('|') + from_utf8((*fit)->shortcut());
+               // FIXME: if we had proper support for translating the
+               // format names defined in configure.py, there would
+               // not be a need to check whether the shortcut is
+               // correct. If we add it uncondiitonally, it would
+               // create useless warnings on bad shortcuts
+               if (!shortcut.empty() && contains(label, shortcut))
+                       label += char_type('|') + shortcut;
 
                if (buf)
                        tomenu.addWithStatusCheck(MenuItem(MenuItem::Command, label,
@@ -634,7 +634,7 @@ void expandFloatInsert(Menu & tomenu, Buffer const * buf)
 }
 
 
-void expandFlexInsert(Menu & tomenu, Buffer const * buf, std::string s)
+void expandFlexInsert(Menu & tomenu, Buffer const * buf, string s)
 {
        if (!buf) {
                tomenu.add(MenuItem(MenuItem::Command,
@@ -668,7 +668,7 @@ void expandToc2(Menu & tomenu,
        // check whether depth is smaller than the smallest depth in toc.
        int min_depth = 1000;
        for (Toc::size_type i = from; i < to; ++i)
-               min_depth = std::min(min_depth, toc_list[i].depth());
+               min_depth = min(min_depth, toc_list[i].depth());
        if (min_depth > depth)
                depth = min_depth;