X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FMenuBackend.cpp;h=fec705230dd64dddca6ce2f7518f36575a1abc3b;hb=2417d9d911dbca181c48f45d1aad26d31c9aa815;hp=bde9cc0a7b3262aa76bf9e933696476876c9995c;hpb=897436efbb9bd641b61467d185a2dfae9839e575;p=lyx.git diff --git a/src/MenuBackend.cpp b/src/MenuBackend.cpp index bde9cc0a7b..fec705230d 100644 --- a/src/MenuBackend.cpp +++ b/src/MenuBackend.cpp @@ -218,6 +218,8 @@ Menu & Menu::read(Lexer & lex) md_documents, md_bookmarks, md_charstyles, + md_custom, + md_elements, md_endmenu, md_exportformats, md_importformats, @@ -240,7 +242,9 @@ Menu & Menu::read(Lexer & lex) { "bookmarks", md_bookmarks }, { "branches", md_branches }, { "charstyles", md_charstyles }, + { "custom", md_custom }, { "documents", md_documents }, + { "elements", md_elements }, { "end", md_endmenu }, { "exportformats", md_exportformats }, { "floatinsert", md_floatinsert }, @@ -294,6 +298,14 @@ Menu & Menu::read(Lexer & lex) add(MenuItem(MenuItem::CharStyles)); break; + case md_custom: + add(MenuItem(MenuItem::Custom)); + break; + + case md_elements: + add(MenuItem(MenuItem::Elements)); + break; + case md_documents: add(MenuItem(MenuItem::Documents)); break; @@ -456,24 +468,27 @@ void expandLastfiles(Menu & tomenu) void expandDocuments(Menu & tomenu) { - typedef vector Strings; - Strings const names = theBufferList().getFileNames(); - - if (names.empty()) { + Buffer * first = theBufferList().first(); + if (first) { + Buffer * b = first; + int ii = 1; + + // We cannot use a for loop as the buffer list cycles. + do { + docstring label = makeDisplayPath(b->fileName(), 20); + if (!b->isClean()) label = label + "*"; + if (ii < 10) + label = convert(ii) + ". " + label + '|' + convert(ii); + tomenu.add(MenuItem(MenuItem::Command, label, FuncRequest(LFUN_BUFFER_SWITCH, b->fileName()))); + + b = theBufferList().next(b); + ++ii; + } while (b != first); + } else { tomenu.add(MenuItem(MenuItem::Command, _("No Documents Open!"), - FuncRequest(LFUN_NOACTION))); + FuncRequest(LFUN_NOACTION))); return; } - - int ii = 1; - Strings::const_iterator docit = names.begin(); - Strings::const_iterator end = names.end(); - for (; docit != end; ++docit, ++ii) { - docstring label = makeDisplayPath(*docit, 20); - if (ii < 10) - label = convert(ii) + ". " + label + char_type('|') + convert(ii); - tomenu.add(MenuItem(MenuItem::Command, label, FuncRequest(LFUN_BUFFER_SWITCH, *docit))); - } } @@ -497,7 +512,7 @@ void expandFormats(MenuItem::Kind kind, Menu & tomenu, Buffer const * buf) { if (!buf && kind != MenuItem::ImportFormats) { tomenu.add(MenuItem(MenuItem::Command, - _("No Documents Open!"), + _("No Document Open!"), FuncRequest(LFUN_NOACTION))); return; } @@ -569,7 +584,7 @@ void expandFloatListInsert(Menu & tomenu, Buffer const * buf) { if (!buf) { tomenu.add(MenuItem(MenuItem::Command, - _("No Documents Open!"), + _("No Document Open!"), FuncRequest(LFUN_NOACTION))); return; } @@ -591,7 +606,7 @@ void expandFloatInsert(Menu & tomenu, Buffer const * buf) { if (!buf) { tomenu.add(MenuItem(MenuItem::Command, - _("No Documents Open!"), + _("No Document Open!"), FuncRequest(LFUN_NOACTION))); return; } @@ -610,22 +625,23 @@ void expandFloatInsert(Menu & tomenu, Buffer const * buf) } -void expandCharStyleInsert(Menu & tomenu, Buffer const * buf) +void expandFlexInsert(Menu & tomenu, Buffer const * buf, std::string s) { if (!buf) { tomenu.add(MenuItem(MenuItem::Command, - _("No Documents Open!"), + _("No Document Open!"), FuncRequest(LFUN_NOACTION))); return; } - CharStyles & charstyles = - buf->params().getTextClass().charstyles(); - CharStyles::iterator cit = charstyles.begin(); - CharStyles::iterator end = charstyles.end(); + InsetLayouts const & insetlayouts = + buf->params().getTextClass().insetlayouts(); + InsetLayouts::const_iterator cit = insetlayouts.begin(); + InsetLayouts::const_iterator end = insetlayouts.end(); for (; cit != end; ++cit) { - docstring const label = from_utf8(cit->name); - tomenu.addWithStatusCheck(MenuItem(MenuItem::Command, label, - FuncRequest(LFUN_CHARSTYLE_INSERT, + docstring const label = cit->first; + if (cit->second.lyxtype == s) + tomenu.addWithStatusCheck(MenuItem(MenuItem::Command, + label, FuncRequest(LFUN_FLEX_INSERT, label))); } } @@ -700,11 +716,15 @@ void expandToc(Menu & tomenu, Buffer const * buf) if (!buf) { tomenu.add(MenuItem(MenuItem::Command, - _("No Documents Open!"), + _("No Document Open!"), FuncRequest(LFUN_NOACTION))); return; } + Buffer* cbuf = const_cast(buf); + cbuf->tocBackend().update(); + cbuf->structureChanged(); + // Add an entry for the master doc if this is a child doc Buffer const * const master = buf->getMasterBuffer(); if (buf != master) { @@ -789,9 +809,10 @@ void expandToolbars(Menu & tomenu) for (; cit != end; ++cit) { docstring label = _(cit->gui_name); - // frontends are not supposed to turn on/off toolbars, if they cannot - // update ToolbarBackend::flags. That is to say, ToolbarsBackend::flags - // should reflect the true state of toolbars. + // frontends are not supposed to turn on/off toolbars, + // if they cannot update ToolbarBackend::flags. That + // is to say, ToolbarsBackend::flags should reflect + // the true state of toolbars. // // menu is displayed as // on/off review @@ -801,17 +822,27 @@ void expandToolbars(Menu & tomenu) if (cit->flags & ToolbarInfo::AUTO) label += _(" (auto)"); tomenu.add(MenuItem(MenuItem::Command, label, - FuncRequest(LFUN_TOOLBAR_TOGGLE_STATE, cit->name))); + FuncRequest(LFUN_TOOLBAR_TOGGLE, cit->name + " allowauto"))); } } void expandBranches(Menu & tomenu, Buffer const * buf) { - if (!buf) + if (!buf) { + tomenu.add(MenuItem(MenuItem::Command, + _("No Document Open!"), + FuncRequest(LFUN_NOACTION))); return; + } BufferParams const & params = buf->getMasterBuffer()->params(); + if (params.branchlist().empty()) { + tomenu.add(MenuItem(MenuItem::Command, + _("No Branch in Document!"), + FuncRequest(LFUN_NOACTION))); + return; + } BranchList::const_iterator cit = params.branchlist().begin(); BranchList::const_iterator end = params.branchlist().end(); @@ -859,7 +890,15 @@ void MenuBackend::expand(Menu const & frommenu, Menu & tomenu, break; case MenuItem::CharStyles: - expandCharStyleInsert(tomenu, buf); + expandFlexInsert(tomenu, buf, "charstyle"); + break; + + case MenuItem::Custom: + expandFlexInsert(tomenu, buf, "custom"); + break; + + case MenuItem::Elements: + expandFlexInsert(tomenu, buf, "element"); break; case MenuItem::FloatListInsert: