]> git.lyx.org Git - lyx.git/blobdiff - src/MenuBackend.C
remove noload/don't typeset
[lyx.git] / src / MenuBackend.C
index faa09a8a523556932df2178f4544281d553b22d2..f3f7fff25a51573932fba928bdf8f15504efe7ba 100644 (file)
@@ -24,6 +24,7 @@
 #include "lastfiles.h"
 #include "lyx_main.h" // for lastfiles
 #include "bufferlist.h"
+#include "buffer.h"
 #include "converter.h"
 #include "exporter.h"
 #include "importer.h"
@@ -81,8 +82,7 @@ MenuItem::MenuItem(Kind kind, string const & label,
 }
 
 
-MenuItem::MenuItem(Kind kind, string const & label, int action,
-                bool optional = false);
+MenuItem::MenuItem(Kind kind, string const & label, int action, bool optional)
        : kind_(kind), label_(label), action_(action), submenuname_(),
          optional_(optional)
 {}
@@ -92,6 +92,12 @@ MenuItem::~MenuItem()
 {}
 
 
+void MenuItem::submenu(Menu * menu)
+{
+       submenu_.reset(menu);
+}
+
+
 string const MenuItem::label() const
 {
        return token(label_, '|', 0);
@@ -111,12 +117,6 @@ Menu & Menu::add(MenuItem const & i)
 }
 
 
-void Menu::submenu(Menu * menu)
-{
-       submenu_.reset(menu);
-}
-
-
 Menu & Menu::read(LyXLex & lex)
 {
        enum Menutags {
@@ -315,7 +315,7 @@ void expandDocuments(Menu & tomenu)
                                    LFUN_NOACTION));
                return;
        }
-       
+
        int ii = 1;
        Strings::const_iterator docit = names.begin();
        Strings::const_iterator end = names.end();
@@ -336,12 +336,12 @@ void expandFormats(MenuItem::Kind kind, Menu & tomenu, Buffer const * buf)
                tomenu.add(MenuItem(MenuItem::Command,
                                    _("No Documents Open!"), LFUN_NOACTION));
                return;
-       }                               
-                       
+       }
+
        typedef vector<Format const *> Formats;
        Formats formats;
        kb_action action;
-       
+
        switch (kind) {
        case MenuItem::ImportFormats:
                formats = Importer::GetImportableFormats();
@@ -387,10 +387,17 @@ void expandFormats(MenuItem::Kind kind, Menu & tomenu, Buffer const * buf)
 }
 
 
-void expandFloatListInsert(Menu & tomenu)
+void expandFloatListInsert(Menu & tomenu, Buffer const * buf)
 {
-       FloatList::const_iterator cit = floatList.begin();
-       FloatList::const_iterator end = floatList.end();
+       if (!buf) {
+               tomenu.add(MenuItem(MenuItem::Command,
+                                   _("No Documents Open!"), LFUN_NOACTION));
+               return;
+       }
+
+       FloatList const & floats = buf->params.getLyXTextClass().floats();
+       FloatList::const_iterator cit = floats.begin();
+       FloatList::const_iterator end = floats.end();
        for (; cit != end; ++cit) {
                int const action =  lyxaction
                        .getPseudoAction(LFUN_FLOAT_LIST, cit->second.type());
@@ -401,10 +408,17 @@ void expandFloatListInsert(Menu & tomenu)
 }
 
 
-void expandFloatInsert(Menu & tomenu)
+void expandFloatInsert(Menu & tomenu, Buffer const * buf)
 {
-       FloatList::const_iterator cit = floatList.begin();
-       FloatList::const_iterator end = floatList.end();
+       if (!buf) {
+               tomenu.add(MenuItem(MenuItem::Command,
+                                   _("No Documents Open!"), LFUN_NOACTION));
+               return;
+       }
+
+       FloatList const & floats = buf->params.getLyXTextClass().floats();
+       FloatList::const_iterator cit = floats.begin();
+       FloatList::const_iterator end = floats.end();
        for (; cit != end; ++cit) {
                // normal float
                int const action =
@@ -466,6 +480,7 @@ void expandToc2(Menu & tomenu, toc::Toc const & toc_list,
 
 void expandToc(Menu & tomenu, Buffer const * buf)
 {
+       FloatList const & floats = buf->params.getLyXTextClass().floats();
        toc::TocList toc_list = toc::getTocList(buf);
        toc::TocList::const_iterator cit = toc_list.begin();
        toc::TocList::const_iterator end = toc_list.end();
@@ -483,7 +498,7 @@ void expandToc(Menu & tomenu, Buffer const * buf)
                                           label, ccit->action()));
                }
                MenuItem item(MenuItem::Submenu,
-                             floatList[cit->first]->second.name());
+                             floats[cit->first]->second.name());
                item.submenu(menu);
                tomenu.add(item);
        }
@@ -508,7 +523,7 @@ void MenuBackend::expand(Menu const & frommenu, Menu & tomenu,
        for (Menu::const_iterator cit = frommenu.begin();
             cit != frommenu.end() ; ++cit) {
                switch (cit->kind()) {
-               case MenuItem::Lastfiles: 
+               case MenuItem::Lastfiles:
                        expandLastfiles(tomenu);
                        break;
 
@@ -524,11 +539,11 @@ void MenuBackend::expand(Menu const & frommenu, Menu & tomenu,
                        break;
 
                case MenuItem::FloatListInsert:
-                       expandFloatListInsert(tomenu);
+                       expandFloatListInsert(tomenu, buf);
                        break;
 
                case MenuItem::FloatInsert:
-                       expandFloatInsert(tomenu);
+                       expandFloatInsert(tomenu, buf);
                        break;
 
                case MenuItem::Toc:
@@ -543,7 +558,7 @@ void MenuBackend::expand(Menu const & frommenu, Menu & tomenu,
                        tomenu.add(item);
                }
                break;
-                       
+
                default:
                        tomenu.add(*cit);
                }
@@ -682,6 +697,8 @@ Menu const & MenuBackend::getMenu(string const & name) const
 {
        const_iterator cit = find_if(begin(), end(),
                                     lyx::compare_memfun(&Menu::name, name));
+       if (cit == end())
+               lyxerr << "No submenu named " << name << endl;
        lyx::Assert(cit != end());
        return (*cit);
 }