]> git.lyx.org Git - features.git/commitdiff
This commit splits the add() method in two methods add() and
authorAbdelrazak Younes <younes@lyx.org>
Fri, 29 Sep 2006 21:40:56 +0000 (21:40 +0000)
committerAbdelrazak Younes <younes@lyx.org>
Fri, 29 Sep 2006 21:40:56 +0000 (21:40 +0000)
addWithStatus(). It also replaces LyXView uses with BufferView as none of the LyXView feature were used.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15181 a592a061-630c-0410-9148-cb99ea01b6c8

src/MenuBackend.C
src/MenuBackend.h
src/frontends/gtk/GMenubar.C
src/frontends/qt3/QLPopupMenu.C
src/frontends/qt4/QLMenubar.C
src/frontends/qt4/QLPopupMenu.C

index 6c85230a470fe310c3a9e4f6557bb7e8e6411aa9..35de35677d3fae42c493a8d3a475379186f2b8b6 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "BranchList.h"
 #include "buffer.h"
+#include "bufferlist.h"
 #include "bufferparams.h"
 #include "CutAndPaste.h"
 #include "debug.h"
@@ -37,7 +38,6 @@
 #include "toc.h"
 
 #include "frontends/Application.h"
-#include "frontends/LyXView.h"
 
 #include "support/filetools.h"
 #include "support/lstrings.h"
@@ -156,18 +156,20 @@ docstring const MenuItem::binding() const
 }
 
 
-Menu & Menu::add(MenuItem const & i, LyXView const * view)
+Menu & Menu::add(MenuItem const & i)
 {
-       if (!view) {
-               items_.push_back(i);
-               return *this;
-       }
+       items_.push_back(i);
+       return *this;
+}
 
+
+Menu & Menu::addWithStatusCheck(MenuItem const & i)
+{
        switch (i.kind()) {
 
        case MenuItem::Command: {
                FuncStatus status =
-                       view->getLyXFunc().getStatus(i.func());
+                       theApp->lyxFunc().getStatus(i.func());
                if (status.unknown()
                    || (!status.enabled() && i.optional()))
                        break;
@@ -428,7 +430,7 @@ string const limit_string_length(string const & str)
 }
 
 
-void expandLastfiles(Menu & tomenu, LyXView const * view)
+void expandLastfiles(Menu & tomenu)
 {
        lyx::Session::LastFiles const & lf = LyX::cref().session().lastFiles();
        lyx::Session::LastFiles::const_iterator lfit = lf.begin();
@@ -439,19 +441,19 @@ void expandLastfiles(Menu & tomenu, LyXView const * view)
                docstring const label = convert<docstring>(ii) + lyx::from_ascii(". ")
                        + makeDisplayPath((*lfit), 30)
                        + char_type('|') + convert<docstring>(ii);
-               tomenu.add(MenuItem(MenuItem::Command, label, FuncRequest(LFUN_FILE_OPEN, (*lfit))), view);
+               tomenu.add(MenuItem(MenuItem::Command, label, FuncRequest(LFUN_FILE_OPEN, (*lfit))));
        }
 }
 
 
-void expandDocuments(Menu & tomenu, LyXView const * view)
+void expandDocuments(Menu & tomenu)
 {
        typedef vector<string> Strings;
        Strings const names = theApp->bufferList().getFileNames();
 
        if (names.empty()) {
                tomenu.add(MenuItem(MenuItem::Command, _("No Documents Open!"),
-                                   FuncRequest(LFUN_NOACTION)), view);
+                                   FuncRequest(LFUN_NOACTION)));
                return;
        }
 
@@ -462,18 +464,17 @@ void expandDocuments(Menu & tomenu, LyXView const * view)
                docstring label = makeDisplayPath(*docit, 20);
                if (ii < 10)
                        label = convert<docstring>(ii) + lyx::from_ascii(". ") + label + char_type('|') + convert<docstring>(ii);
-               tomenu.add(MenuItem(MenuItem::Command, label, FuncRequest(LFUN_BUFFER_SWITCH, *docit)), view);
+               tomenu.add(MenuItem(MenuItem::Command, label, FuncRequest(LFUN_BUFFER_SWITCH, *docit)));
        }
 }
 
 
-void expandFormats(MenuItem::Kind kind, Menu & tomenu, LyXView const * view)
+void expandFormats(MenuItem::Kind kind, Menu & tomenu, Buffer const * buf)
 {
-       if (!view->buffer() && kind != MenuItem::ImportFormats) {
+       if (!buf && kind != MenuItem::ImportFormats) {
                tomenu.add(MenuItem(MenuItem::Command,
                                    _("No Documents Open!"),
-                                   FuncRequest(LFUN_NOACTION)),
-                                   view);
+                                   FuncRequest(LFUN_NOACTION)));
                return;
        }
 
@@ -487,15 +488,15 @@ void expandFormats(MenuItem::Kind kind, Menu & tomenu, LyXView const * view)
                action = LFUN_BUFFER_IMPORT;
                break;
        case MenuItem::ViewFormats:
-               formats = Exporter::getExportableFormats(*view->buffer(), true);
+               formats = Exporter::getExportableFormats(*buf, true);
                action = LFUN_BUFFER_VIEW;
                break;
        case MenuItem::UpdateFormats:
-               formats = Exporter::getExportableFormats(*view->buffer(), true);
+               formats = Exporter::getExportableFormats(*buf, true);
                action = LFUN_BUFFER_UPDATE;
                break;
        default:
-               formats = Exporter::getExportableFormats(*view->buffer(), false);
+               formats = Exporter::getExportableFormats(*buf, false);
                action = LFUN_BUFFER_EXPORT;
        }
        sort(formats.begin(), formats.end(), compare_format());
@@ -528,80 +529,78 @@ void expandFormats(MenuItem::Kind kind, Menu & tomenu, LyXView const * view)
                if (!(*fit)->shortcut().empty())
                        label += char_type('|') + lyx::from_utf8((*fit)->shortcut());
 
-               tomenu.add(MenuItem(MenuItem::Command, label,
-                                   FuncRequest(action, (*fit)->name())),
-                          view);
+               if (buf)
+                       tomenu.addWithStatusCheck(MenuItem(MenuItem::Command, label,
+                               FuncRequest(action, (*fit)->name())));
+               else
+                       tomenu.add(MenuItem(MenuItem::Command, label,
+                               FuncRequest(action, (*fit)->name())));
        }
 }
 
 
-void expandFloatListInsert(Menu & tomenu, LyXView const * view)
+void expandFloatListInsert(Menu & tomenu, Buffer const * buf)
 {
-       if (!view->buffer()) {
+       if (!buf) {
                tomenu.add(MenuItem(MenuItem::Command,
                                    _("No Documents Open!"),
-                                   FuncRequest(LFUN_NOACTION)),
-                          view);
+                                   FuncRequest(LFUN_NOACTION)));
                return;
        }
 
        FloatList const & floats =
-               view->buffer()->params().getLyXTextClass().floats();
+               buf->params().getLyXTextClass().floats();
        FloatList::const_iterator cit = floats.begin();
        FloatList::const_iterator end = floats.end();
        for (; cit != end; ++cit) {
-               tomenu.add(MenuItem(MenuItem::Command,
+               tomenu.addWithStatusCheck(MenuItem(MenuItem::Command,
                                    _(cit->second.listName()),
                                    FuncRequest(LFUN_FLOAT_LIST,
-                                               cit->second.type())),
-                          view);
+                                               cit->second.type())));
        }
 }
 
 
-void expandFloatInsert(Menu & tomenu, LyXView const * view)
+void expandFloatInsert(Menu & tomenu, Buffer const * buf)
 {
-       if (!view->buffer()) {
+       if (!buf) {
                tomenu.add(MenuItem(MenuItem::Command,
                                    _("No Documents Open!"),
-                                   FuncRequest(LFUN_NOACTION)),
-                          view);
+                                   FuncRequest(LFUN_NOACTION)));
                return;
        }
 
        FloatList const & floats =
-               view->buffer()->params().getLyXTextClass().floats();
+               buf->params().getLyXTextClass().floats();
        FloatList::const_iterator cit = floats.begin();
        FloatList::const_iterator end = floats.end();
        for (; cit != end; ++cit) {
                // normal float
                docstring const label = _(cit->second.name());
-               tomenu.add(MenuItem(MenuItem::Command, label,
+               tomenu.addWithStatusCheck(MenuItem(MenuItem::Command, label,
                                    FuncRequest(LFUN_FLOAT_INSERT,
-                                               cit->second.type())),
-                          view);
+                                               cit->second.type())));
        }
 }
 
 
-void expandCharStyleInsert(Menu & tomenu, LyXView const * view)
+void expandCharStyleInsert(Menu & tomenu, Buffer const * buf)
 {
-       if (!view->buffer()) {
+       if (!buf) {
                tomenu.add(MenuItem(MenuItem::Command,
                                    _("No Documents Open!"),
-                                   FuncRequest(LFUN_NOACTION)),
-                          view);
+                                   FuncRequest(LFUN_NOACTION)));
                return;
        }
        CharStyles & charstyles =
-               view->buffer()->params().getLyXTextClass().charstyles();
+               buf->params().getLyXTextClass().charstyles();
        CharStyles::iterator cit = charstyles.begin();
        CharStyles::iterator end = charstyles.end();
        for (; cit != end; ++cit) {
                docstring const label = lyx::from_utf8(cit->name);
-               tomenu.add(MenuItem(MenuItem::Command, label,
+               tomenu.addWithStatusCheck(MenuItem(MenuItem::Command, label,
                                    FuncRequest(LFUN_CHARSTYLE_INSERT,
-                                               cit->name)), view);
+                                               cit->name)));
        }
 }
 
@@ -666,20 +665,17 @@ void expandToc2(Menu & tomenu,
 }
 
 
-void expandToc(Menu & tomenu, LyXView const * view)
+void expandToc(Menu & tomenu, Buffer const * buf)
 {
-       // To make things very cleanly, we would have to pass view to
+       // To make things very cleanly, we would have to pass buf to
        // all MenuItem constructors and to expandToc2. However, we
        // know that all the entries in a TOC will be have status_ ==
        // OK, so we avoid this unnecessary overhead (JMarc)
 
-
-       Buffer const * buf = view->buffer();
        if (!buf) {
                tomenu.add(MenuItem(MenuItem::Command,
                                    _("No Documents Open!"),
-                                   FuncRequest(LFUN_NOACTION)),
-                          view);
+                                   FuncRequest(LFUN_NOACTION)));
                return;
        }
 
@@ -711,23 +707,22 @@ void expandToc(Menu & tomenu, LyXView const * view)
        // Handle normal TOC
        cit = toc_list.find("TOC");
        if (cit == end) {
-               tomenu.add(MenuItem(MenuItem::Command,
+               tomenu.addWithStatusCheck(MenuItem(MenuItem::Command,
                                    _("No Table of contents"),
-                                   FuncRequest()),
-                          view);
+                                   FuncRequest()));
        } else {
                expandToc2(tomenu, cit->second, 0, cit->second.size(), 0);
        }
 }
 
 
-void expandPasteRecent(Menu & tomenu, LyXView const * view)
+void expandPasteRecent(Menu & tomenu, Buffer const * buf)
 {
-       if (!view || !view->buffer())
+       if (!buf)
                return;
 
        vector<string> const sel =
-               lyx::cap::availableSelections(*view->buffer());
+               lyx::cap::availableSelections(*buf);
 
        vector<string>::const_iterator cit = sel.begin();
        vector<string>::const_iterator end = sel.end();
@@ -739,12 +734,12 @@ void expandPasteRecent(Menu & tomenu, LyXView const * view)
 }
 
 
-void expandBranches(Menu & tomenu, LyXView const * view)
+void expandBranches(Menu & tomenu, Buffer const * buf)
 {
-       if (!view || !view->buffer())
+       if (!buf)
                return;
 
-       BufferParams const & params = view->buffer()->getMasterBuffer()->params();
+       BufferParams const & params = buf->getMasterBuffer()->params();
 
        BranchList::const_iterator cit = params.branchlist().begin();
        BranchList::const_iterator end = params.branchlist().end();
@@ -753,9 +748,9 @@ void expandBranches(Menu & tomenu, LyXView const * view)
                docstring label = lyx::from_utf8(cit->getBranch());
                if (ii < 10)
                        label = convert<docstring>(ii) + lyx::from_ascii(". ") + label + char_type('|') + convert<docstring>(ii);
-               tomenu.add(MenuItem(MenuItem::Command, label,
+               tomenu.addWithStatusCheck(MenuItem(MenuItem::Command, label,
                                    FuncRequest(LFUN_BRANCH_INSERT,
-                                               cit->getBranch())), view);
+                                               cit->getBranch())));
        }
 }
 
@@ -764,7 +759,7 @@ void expandBranches(Menu & tomenu, LyXView const * view)
 
 
 void MenuBackend::expand(Menu const & frommenu, Menu & tomenu,
-                        LyXView const * view) const
+                        Buffer const * buf) const
 {
        if (!tomenu.empty())
                tomenu.clear();
@@ -773,61 +768,61 @@ void MenuBackend::expand(Menu const & frommenu, Menu & tomenu,
             cit != frommenu.end() ; ++cit) {
                switch (cit->kind()) {
                case MenuItem::Lastfiles:
-                       expandLastfiles(tomenu, view);
+                       expandLastfiles(tomenu);
                        break;
 
                case MenuItem::Documents:
-                       expandDocuments(tomenu, view);
+                       expandDocuments(tomenu);
                        break;
 
                case MenuItem::ImportFormats:
                case MenuItem::ViewFormats:
                case MenuItem::UpdateFormats:
                case MenuItem::ExportFormats:
-                       expandFormats(cit->kind(), tomenu, view);
+                       expandFormats(cit->kind(), tomenu, buf);
                        break;
 
                case MenuItem::CharStyles:
-                       expandCharStyleInsert(tomenu, view);
+                       expandCharStyleInsert(tomenu, buf);
                        break;
 
                case MenuItem::FloatListInsert:
-                       expandFloatListInsert(tomenu, view);
+                       expandFloatListInsert(tomenu, buf);
                        break;
 
                case MenuItem::FloatInsert:
-                       expandFloatInsert(tomenu, view);
+                       expandFloatInsert(tomenu, buf);
                        break;
 
                case MenuItem::PasteRecent:
-                       expandPasteRecent(tomenu, view);
+                       expandPasteRecent(tomenu, buf);
                        break;
 
                case MenuItem::Branches:
-                       expandBranches(tomenu, view);
+                       expandBranches(tomenu, buf);
                        break;
 
                case MenuItem::Toc:
-                       expandToc(tomenu, view);
+                       expandToc(tomenu, buf);
                        break;
 
                case MenuItem::Submenu: {
                        MenuItem item(*cit);
                        item.submenu(new Menu(cit->submenuname()));
                        expand(getMenu(cit->submenuname()),
-                              *item.submenu(), view);
-                       tomenu.add(item, view);
+                              *item.submenu(), buf);
+                       tomenu.addWithStatusCheck(item);
                }
                break;
 
                case MenuItem::Separator:
-                       tomenu.add(*cit, view);
+                       tomenu.addWithStatusCheck(*cit);
                        break;
 
                case MenuItem::Command:
                        if (!specialmenu_
                            || !specialmenu_->hasFunc(cit->func()))
-                               tomenu.add(*cit, view);
+                               tomenu.addWithStatusCheck(*cit);
                }
        }
 
index d04d748f72d2cd8cb31e83823c2bde12e4560026..9fa664d8fc52a83b783a724b3d730b779cb0d5f3 100644 (file)
@@ -21,7 +21,7 @@
 #include <vector>
 
 class LyXLex;
-class LyXView;
+class Buffer;
 class Menu;
 
 ///
@@ -145,8 +145,11 @@ public:
        ///
        explicit Menu(lyx::docstring const & name = lyx::docstring())
                : name_(name) {}
-       ///
-       Menu & add(MenuItem const &, LyXView const * view = 0);
+       /// Add the menu item unconditionally
+       Menu & add(MenuItem const &);
+       /// Checks the associated FuncRequest status before adding the
+       /// menu item.
+       Menu & addWithStatusCheck(MenuItem const &);
        ///
        Menu & read(LyXLex &);
        ///
@@ -218,7 +221,7 @@ public:
            ViewFormats, ExportFormats, UpdateFormats, Branches
        */
        void expand(Menu const & frommenu, Menu & tomenu,
-                   LyXView const *) const;
+                   Buffer const *) const;
        ///
        const_iterator begin() const {
                return menulist_.begin();
index 2d0d02b659a5346a515759e3abeffeddd9b7a25f..e397af9d01bb55e3c1b45d91b02db5807c702602 100644 (file)
@@ -159,7 +159,7 @@ void GMenubar::onSubMenuActivate(MenuItem const * item,
        Menu::const_iterator end;
        if(!item->submenuname().empty()) {
                fmenu = &menubackend.getMenu(item->submenuname());
-               menubackend.expand(*fmenu, lyxmenu->getBackMenu(), view_);
+               menubackend.expand(*fmenu, lyxmenu->getBackMenu(), view_->buffer());
                i = lyxmenu->getBackMenu().begin();
                end = lyxmenu->getBackMenu().end();
        } else {
index f1b6f40b57704bea86ae461b86a296454e64b6e0..636b1384408e579ada560cc03e3e227d94731184 100644 (file)
@@ -163,7 +163,7 @@ void QLPopupMenu::showing()
        clear();
        Menu tomenu;
        Menu const frommenu = owner_->backend().getMenu(name_);
-       owner_->backend().expand(frommenu, tomenu, owner_->view());
+       owner_->backend().expand(frommenu, tomenu, owner_->view()->buffer());
        populate(&tomenu);
 #ifdef Q_WS_MACX
        /* The qt/mac menu code has a very silly hack that
index 8857d1ca61416bbcc4a7e200749b1c31b33c29aa..57fae6918f68af8f62d84d36602c3c9aa70f9f14 100644 (file)
@@ -60,7 +60,7 @@ QLMenubar::QLMenubar(LyXView * view, MenuBackend & mbe)
        //      for (; m != end; ++m) {
 
        Menu menu;
-       menubackend_.expand(menubackend_.getMenubar(), menu, owner_);
+       menubackend_.expand(menubackend_.getMenubar(), menu, owner_->buffer());
 
        Menu::const_iterator m = menu.begin();
        Menu::const_iterator end = menu.end();
@@ -81,7 +81,7 @@ QLMenubar::QLMenubar(LyXView * view, MenuBackend & mbe)
                }
 
                Menu menu;
-               menubackend_.expand(menubackend_.getMenubar(), menu, owner_);
+               menubackend_.expand(menubackend_.getMenubar(), menu, owner_->buffer());
 
                QLPopupMenu * qMenu = new QLPopupMenu(this, *m, true);
                owner_->menuBar()->addMenu(qMenu);
index e7d9b6ab90b38af37b7201ef44cc2fd024ad88e1..34fdacb6f6ac29e591780cee1c6601bae2ace0bb 100644 (file)
@@ -75,7 +75,7 @@ void QLPopupMenu::update()
                return;
 
        Menu const & fromLyxMenu = owner_->backend().getMenu(name_);
-       owner_->backend().expand(fromLyxMenu, topLevelMenu_, owner_->view());
+       owner_->backend().expand(fromLyxMenu, topLevelMenu_, owner_->view()->buffer());
 
        if (!owner_->backend().hasMenu(topLevelMenu_.name())) {
                lyxerr[Debug::GUI] << "\tWARNING: menu seems empty" << lyx::to_utf8(topLevelMenu_.name()) << endl;