]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/Toolbars.cpp
Use <cstdint> instead of <boost/cstdint.hpp>
[lyx.git] / src / frontends / qt4 / Toolbars.cpp
index 20eee931bc9eeeea80b9df8b2b4a7156273b4441..bf4617cd5b0d4842d601466178144b9fc4c29b7e 100644 (file)
@@ -23,8 +23,6 @@
 #include "support/gettext.h"
 #include "support/lstrings.h"
 
-#include "support/bind.h"
-
 #include <algorithm>
 
 using namespace std;
@@ -40,14 +38,16 @@ namespace frontend {
 //
 /////////////////////////////////////////////////////////////////////////
 
-ToolbarItem::ToolbarItem(Type type, FuncRequest const & func, docstring const & label)
-       : type_(type), func_(func), label_(label)
+ToolbarItem::ToolbarItem(Type type, FuncRequest const & func,
+                         docstring const & label)
+       : type_(type), func_(make_shared<FuncRequest>(func)), label_(label)
 {
 }
 
 
-ToolbarItem::ToolbarItem(Type type, string const & name, docstring const & label)
-       : type_(type), label_(label), name_(name)
+ToolbarItem::ToolbarItem(Type type, string const & name,
+                         docstring const & label)
+       : type_(type), func_(make_shared<FuncRequest>()), label_(label), name_(name)
 {
 }
 
@@ -55,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_.setOrigin(FuncRequest::TOOLBAR);
+       items.back().func_->setOrigin(FuncRequest::TOOLBAR);
 }
 
 
@@ -74,10 +74,12 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex)
                TO_EXPORTFORMATS,
                TO_IMPORTFORMATS,
                TO_UPDATEFORMATS,
-               TO_VIEWFORMATS
+               TO_VIEWFORMATS,
+               TO_DYNAMICMENU
        };
 
        struct LexerKeyword toolTags[] = {
+               { "dynamicmenu", TO_DYNAMICMENU},
                { "end", TO_ENDTOOLBAR },
                { "exportformats", TO_EXPORTFORMATS },
                { "iconpalette", TO_ICONPALETTE },
@@ -147,29 +149,39 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex)
                        break;
 
                case TO_POPUPMENU:
+                       if (lex.next(true)) {
+                               string const pname = lex.getString();
+                               lex.next(true);
+                               docstring const label = lex.getDocString();
+                               add(ToolbarItem(ToolbarItem::POPUPMENU, pname, label));
+                       }
+                       break;
+
+               case TO_DYNAMICMENU: {
                        if (lex.next(true)) {
                                string const name = lex.getString();
                                lex.next(true);
                                docstring const label = lex.getDocString();
-                               add(ToolbarItem(ToolbarItem::POPUPMENU, name, label));
+                               add(ToolbarItem(ToolbarItem::DYNAMICMENU, name, label));
                        }
                        break;
+               }
 
                case TO_STICKYPOPUPMENU:
                        if (lex.next(true)) {
-                               string const name = lex.getString();
+                               string const pname = lex.getString();
                                lex.next(true);
                                docstring const label = lex.getDocString();
-                               add(ToolbarItem(ToolbarItem::STICKYPOPUPMENU, name, label));
+                               add(ToolbarItem(ToolbarItem::STICKYPOPUPMENU, pname, label));
                        }
                        break;
 
                case TO_ICONPALETTE:
                        if (lex.next(true)) {
-                               string const name = lex.getString();
+                               string const pname = lex.getString();
                                lex.next(true);
                                docstring const label = lex.getDocString();
-                               add(ToolbarItem(ToolbarItem::ICONPALETTE, name, label));
+                               add(ToolbarItem(ToolbarItem::ICONPALETTE, pname, label));
                        }
                        break;
 
@@ -194,21 +206,22 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex)
                case TO_IMPORTFORMATS:
                case TO_UPDATEFORMATS:
                case TO_VIEWFORMATS: {
-                       vector<Format const *> formats = (code == TO_IMPORTFORMATS) ?
-                               theConverters().importableFormats() :
-                               theConverters().exportableFormats(code != TO_EXPORTFORMATS);
+                       FormatList formats;
+                       if (code == TO_IMPORTFORMATS)
+                               formats = theConverters().importableFormats();
+                       else if (code == TO_EXPORTFORMATS)
+                               formats = theConverters().exportableFormats(false);
+                       else
+                               formats = theConverters().exportableFormats(true);
                        sort(formats.begin(), formats.end());
-                       vector<Format const *>::const_iterator fit = formats.begin();
-                       vector<Format const *>::const_iterator end = formats.end();
-                       for (; fit != end ; ++fit) {
-                               if ((*fit)->dummy())
+                       for (Format const * f : formats) {
+                               if (f->dummy())
                                        continue;
                                if (code != TO_IMPORTFORMATS &&
-                                   !(*fit)->documentFormat())
+                                   !f->documentFormat())
                                        continue;
 
-                               docstring const prettyname =
-                                       from_utf8((*fit)->prettyname());
+                               docstring const prettyname = f->prettyname();
                                docstring tooltip;
                                FuncCode lfun = LFUN_NOACTION;
                                switch (code) {
@@ -229,10 +242,10 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex)
                                        tooltip = _("View %1$s");
                                        break;
                                }
-                               FuncRequest func(lfun, (*fit)->name(),
+                               FuncRequest func(lfun, f->name(),
                                                FuncRequest::TOOLBAR);
                                add(ToolbarItem(ToolbarItem::COMMAND, func,
-                                               bformat(tooltip, prettyname)));
+                                               bformat(tooltip, translateIfPossible(prettyname))));
                        }
                        break;
                }