X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FToolbars.cpp;h=b03b110d13e56ae8bbd1d271824d28770a15b645;hb=5a46224f7311067cda747e0cae32d22dd919f179;hp=834c9ab3941a3b6b16e84e900110bc6f2751604d;hpb=051a50439dd3c6e71771cbc72d5f5addefc41e64;p=lyx.git diff --git a/src/frontends/qt4/Toolbars.cpp b/src/frontends/qt4/Toolbars.cpp index 834c9ab394..b03b110d13 100644 --- a/src/frontends/qt4/Toolbars.cpp +++ b/src/frontends/qt4/Toolbars.cpp @@ -12,6 +12,8 @@ #include #include "Toolbars.h" +#include "Converter.h" +#include "Format.h" #include "FuncRequest.h" #include "Lexer.h" #include "LyXAction.h" @@ -21,7 +23,7 @@ #include "support/gettext.h" #include "support/lstrings.h" -#include +#include "support/bind.h" #include @@ -31,10 +33,6 @@ using namespace lyx::support; namespace lyx { namespace frontend { -namespace { - -} // namespace anon - ///////////////////////////////////////////////////////////////////////// // @@ -57,7 +55,7 @@ ToolbarItem::ToolbarItem(Type type, string const & name, docstring const & label void ToolbarInfo::add(ToolbarItem const & item) { items.push_back(item); - items.back().func_.origin = FuncRequest::TOOLBAR; + items.back().func_.setOrigin(FuncRequest::TOOLBAR); } @@ -73,18 +71,26 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) TO_POPUPMENU, TO_STICKYPOPUPMENU, TO_ICONPALETTE, + TO_EXPORTFORMATS, + TO_IMPORTFORMATS, + TO_UPDATEFORMATS, + TO_VIEWFORMATS, }; struct LexerKeyword toolTags[] = { { "end", TO_ENDTOOLBAR }, + { "exportformats", TO_EXPORTFORMATS }, { "iconpalette", TO_ICONPALETTE }, + { "importformats", TO_IMPORTFORMATS }, { "item", TO_COMMAND }, { "layouts", TO_LAYOUTS }, { "minibuffer", TO_MINIBUFFER }, { "popupmenu", TO_POPUPMENU }, { "separator", TO_SEPARATOR }, { "stickypopupmenu", TO_STICKYPOPUPMENU }, - { "tableinsert", TO_TABLEINSERT } + { "tableinsert", TO_TABLEINSERT }, + { "updateformats", TO_UPDATEFORMATS }, + { "viewformats", TO_VIEWFORMATS }, }; //consistency check @@ -114,7 +120,8 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) lex.printTable(lyxerr); while (lex.isOK() && !quit) { - switch (lex.lex()) { + int const code = lex.lex(); + switch (code) { case TO_COMMAND: if (lex.next(true)) { docstring const tooltip = translateIfPossible(lex.getDocString()); @@ -147,7 +154,7 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) add(ToolbarItem(ToolbarItem::POPUPMENU, name, label)); } break; - + case TO_STICKYPOPUPMENU: if (lex.next(true)) { string const name = lex.getString(); @@ -183,6 +190,53 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) quit = true; break; + case TO_EXPORTFORMATS: + case TO_IMPORTFORMATS: + case TO_UPDATEFORMATS: + case TO_VIEWFORMATS: { + vector formats = (code == TO_IMPORTFORMATS) ? + theConverters().importableFormats() : + theConverters().exportableFormats(code != TO_EXPORTFORMATS); + sort(formats.begin(), formats.end()); + vector::const_iterator fit = formats.begin(); + vector::const_iterator end = formats.end(); + for (; fit != end ; ++fit) { + if ((*fit)->dummy()) + continue; + if (code != TO_IMPORTFORMATS && + !(*fit)->documentFormat()) + continue; + + docstring const prettyname = + from_utf8((*fit)->prettyname()); + docstring tooltip; + FuncCode lfun = LFUN_NOACTION; + switch (code) { + case TO_EXPORTFORMATS: + lfun = LFUN_BUFFER_EXPORT; + tooltip = _("Export %1$s"); + break; + case TO_IMPORTFORMATS: + lfun = LFUN_BUFFER_IMPORT; + tooltip = _("Import %1$s"); + break; + case TO_UPDATEFORMATS: + lfun = LFUN_BUFFER_UPDATE; + tooltip = _("Update %1$s"); + break; + case TO_VIEWFORMATS: + lfun = LFUN_BUFFER_VIEW; + tooltip = _("View %1$s"); + break; + } + FuncRequest func(lfun, (*fit)->name(), + FuncRequest::TOOLBAR); + add(ToolbarItem(ToolbarItem::COMMAND, func, + bformat(tooltip, prettyname))); + } + break; + } + default: lex.printError("ToolbarInfo::read: " "Unknown toolbar tag: `$$Token'"); @@ -304,6 +358,8 @@ void Toolbars::readToolbarSettings(Lexer & lex) flag = RIGHT; else if (!compare_ascii_no_case(*cit, "auto")) flag = AUTO; + else if (!compare_ascii_no_case(*cit, "samerow")) + flag = SAMEROW; else { LYXERR(Debug::ANY, "Toolbars::readToolbarSettings: unrecognised token:`"