X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FToolbars.cpp;h=b03b110d13e56ae8bbd1d271824d28770a15b645;hb=5a46224f7311067cda747e0cae32d22dd919f179;hp=3a335fe4958eb4ecd213c30f6a58256a91df4e40;hpb=a54850d7622f63d6ca39aaa2c211d959c295f232;p=lyx.git diff --git a/src/frontends/qt4/Toolbars.cpp b/src/frontends/qt4/Toolbars.cpp index 3a335fe495..b03b110d13 100644 --- a/src/frontends/qt4/Toolbars.cpp +++ b/src/frontends/qt4/Toolbars.cpp @@ -12,15 +12,18 @@ #include #include "Toolbars.h" +#include "Converter.h" +#include "Format.h" #include "FuncRequest.h" #include "Lexer.h" #include "LyXAction.h" -#include "support/lstrings.h" +#include "qt_helpers.h" #include "support/debug.h" #include "support/gettext.h" +#include "support/lstrings.h" -#include +#include "support/bind.h" #include @@ -30,10 +33,6 @@ using namespace lyx::support; namespace lyx { namespace frontend { -namespace { - -} // namespace anon - ///////////////////////////////////////////////////////////////////////// // @@ -56,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); } @@ -70,18 +69,28 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) TO_MINIBUFFER, TO_TABLEINSERT, 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 }, - { "tableinsert", TO_TABLEINSERT } + { "stickypopupmenu", TO_STICKYPOPUPMENU }, + { "tableinsert", TO_TABLEINSERT }, + { "updateformats", TO_UPDATEFORMATS }, + { "viewformats", TO_VIEWFORMATS }, }; //consistency check @@ -94,7 +103,7 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) name = lex.getString(); lex.next(true); - gui_name = lex.getString(); + gui_name = _(lex.getString()); // FIXME what to do here? if (!lex) { @@ -111,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()); @@ -145,6 +155,15 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex) } break; + case TO_STICKYPOPUPMENU: + if (lex.next(true)) { + string const name = lex.getString(); + lex.next(true); + docstring const label = lex.getDocString(); + add(ToolbarItem(ToolbarItem::STICKYPOPUPMENU, name, label)); + } + break; + case TO_ICONPALETTE: if (lex.next(true)) { string const name = lex.getString(); @@ -171,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'"); @@ -292,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:`" @@ -304,7 +372,8 @@ void Toolbars::readToolbarSettings(Lexer & lex) if (visibility >= MATH) { if (ToolbarInfo const * ti = info(name)) - const_cast(ti)->gui_name += " (auto)"; + const_cast(ti)->gui_name += + " (" + _("auto") + ")"; } } }