]> git.lyx.org Git - features.git/commitdiff
fix a couple warnings after the number localization patch
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Sun, 12 Jul 2009 17:28:46 +0000 (17:28 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Sun, 12 Jul 2009 17:28:46 +0000 (17:28 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30515 a592a061-630c-0410-9148-cb99ea01b6c8

configure.ac
src/Buffer.cpp
src/Counters.cpp
src/Counters.h
src/Paragraph.cpp
src/frontends/qt4/GuiGraphics.cpp
src/frontends/qt4/Validator.cpp
src/insets/InsetBibitem.cpp
src/insets/InsetCaption.cpp
src/insets/InsetCollapsable.cpp
src/insets/InsetFoot.cpp

index f81818aa406519edae12134c38d53368c26b9079..f233132e123d9d7f9f17170b4b526fd9e1112a10 100644 (file)
@@ -26,7 +26,7 @@ fi
 AM_MAINTAINER_MODE
 
 save_PACKAGE=$PACKAGE
-AM_INIT_AUTOMAKE([foreign dist-bzip2 no-define 1.5])
+AM_INIT_AUTOMAKE([foreign dist-bzip2 no-define 1.5 silent-rules])
 PACKAGE=$save_PACKAGE
 
 ### Set the execute permissions of the various scripts correctly
index 369dff14f8ff4758cf05fd71319773192b6be599..2d44472d4feeabfaa1ce87dcd9e045d75bd8f88c 100644 (file)
@@ -3389,7 +3389,8 @@ static void setLabel(Buffer const & buf, ParIterator & it)
                        counters.reset(enumcounter);
                counters.step(enumcounter);
 
-               par.params().labelString(counters.theCounter(enumcounter));
+               string const & lang = par.getParLanguage(bp)->code();
+               par.params().labelString(counters.theCounter(enumcounter, lang));
 
                break;
        }
@@ -3402,10 +3403,11 @@ static void setLabel(Buffer const & buf, ParIterator & it)
                else {
                        docstring name = buf.B_(textclass.floats().getType(type).name());
                        if (counters.hasCounter(from_utf8(type))) {
+                               string const & lang = par.getParLanguage(bp)->code();
                                counters.step(from_utf8(type));
                                full_label = bformat(from_ascii("%1$s %2$s:"), 
                                                     name, 
-                                                    counters.theCounter(from_utf8(type)));
+                                                    counters.theCounter(from_utf8(type), lang));
                        } else
                                full_label = bformat(from_ascii("%1$s #:"), name);      
                }
index 3921cf2890db3742cad8d6a6bbfd51dc6c0911d9..a79bc6b36d64bdf491cc92259cafbf8897214a77 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "support/convert.h"
 #include "support/debug.h"
+#include "support/gettext.h"
 #include "support/lassert.h"
 #include "support/lstrings.h"
 
@@ -143,19 +144,12 @@ docstring const & Counter::labelString(bool in_appendix) const
 }
 
 
-docstring const & Counter::flatLabelString(bool in_appendix) const
+Counter::StringMap & Counter::flatLabelStrings(bool in_appendix) const
 {
        return in_appendix ? flatlabelstringappendix_ : flatlabelstring_;
 }
 
 
-void Counter::setFlatLabelStrings(docstring const & fls, docstring const & flsa)
-{
-       flatlabelstring_ = fls;
-       flatlabelstringappendix_ = flsa;
-}
-
-
 void Counters::newCounter(docstring const & newc,
                          docstring const & masterc, 
                          docstring const & ls,
@@ -255,20 +249,6 @@ void Counters::reset()
        appendix_ = false;
        subfloat_ = false;
        current_float_.erase();
-       CounterList::iterator it = counterList_.begin();
-       CounterList::iterator const end = counterList_.end();
-       std::vector<docstring> callers;
-       for (; it != end; ++it) {
-               it->second.reset();
-               // Compute the explicit counter labels without any
-               // \thexxx strings, in order to avoid recursion.  
-               // It only needs to be done when the textclass is
-               // updated, but in practice the extra work is probably
-               // not noticeable (JMarc)
-               docstring const fls = flattenLabelString(it->first, false, callers);
-               docstring const flsa = flattenLabelString(it->first, true, callers);
-               it->second.setFlatLabelStrings(fls, flsa);
-       }
 }
 
 
@@ -430,18 +410,29 @@ docstring Counters::labelItem(docstring const & ctr,
 }
 
 
-docstring Counters::theCounter(docstring const & counter) const
+docstring Counters::theCounter(docstring const & counter,
+                              string const & lang) const
 {
        CounterList::const_iterator it = counterList_.find(counter); 
        if (it == counterList_.end())
                return from_ascii("??");
-       // FIXME: this should get translated.
-       return counterLabel(it->second.flatLabelString(appendix()));
+       Counter const & ctr = it->second;
+       Counter::StringMap sm = ctr.flatLabelStrings(appendix());
+       Counter::StringMap::iterator smit = sm.find(lang);
+       if (smit != sm.end())
+               return counterLabel(smit->second, lang);
+
+       vector<docstring> callers;
+       docstring const & fls = flattenLabelString(counter, appendix(),
+                                                  lang, callers);
+       sm[lang] = fls;
+       return counterLabel(fls, lang);
 }
 
 
 docstring Counters::flattenLabelString(docstring const & counter, 
-                                      bool in_appendix, 
+                                      bool in_appendix,
+                                      string const & lang,
                                       vector<docstring> & callers) const
 {
        docstring label;
@@ -459,12 +450,12 @@ docstring Counters::flattenLabelString(docstring const & counter,
                return from_ascii("??");
        Counter const & c = it->second;
 
-       docstring ls = c.labelString(in_appendix);
+       docstring ls = translateIfPossible(c.labelString(in_appendix), lang);
 
        callers.push_back(counter);
        if (ls.empty()) {
                if (!c.master().empty())
-                       ls = flattenLabelString(c.master(), in_appendix, callers) 
+                       ls = flattenLabelString(c.master(), in_appendix, lang, callers) 
                                + from_ascii(".");
                callers.pop_back();
                return ls + from_ascii("\\arabic{") + counter + "}";
@@ -481,7 +472,8 @@ docstring Counters::flattenLabelString(docstring const & counter,
                       && lowercase(ls[k]) <= 'z')
                        ++k;
                docstring const newc = ls.substr(j, k - j);
-               docstring const repl = flattenLabelString(newc, in_appendix, callers);
+               docstring const repl = flattenLabelString(newc, in_appendix,
+                                                         lang, callers);
                ls.replace(i, k - j + 4, repl);
        }
        callers.pop_back();
@@ -490,7 +482,8 @@ docstring Counters::flattenLabelString(docstring const & counter,
 }
 
 
-docstring Counters::counterLabel(docstring const & format) const
+docstring Counters::counterLabel(docstring const & format,
+                                string const & lang) const
 {
        docstring label = format;
 
@@ -507,7 +500,7 @@ docstring Counters::counterLabel(docstring const & format) const
                       && lowercase(label[k]) <= 'z')
                        ++k;
                docstring const newc = label.substr(j, k - j);
-               docstring const repl = theCounter(newc);
+               docstring const repl = theCounter(newc, lang);
                label.replace(i, k - j + 4, repl);
        }
        while (true) {
index a83c5226e211027e9d11c266aaa5edaf7fb7afe4..fdae212a262ee9947b82abfea786f09ea85abf1c 100644 (file)
@@ -49,19 +49,19 @@ public:
        docstring const & master() const;
        /// Returns a LaTeX-like string to format the counter. 
        /** This is similar to what one gets in LaTeX when using
-        *  "\the<counter>". The \c in_appendix bool tells whether
-        *  we want the version shown in an appendix.
+        *  "\the<counter>". The \c in_appendix bool tells whether we
+        *  want the version shown in an appendix.
         */
        docstring const & labelString(bool in_appendix) const;
-       /// Returns a LaTeX-like string to format the counter. 
-       /** This is similar to what one gets in LaTeX when using
-        *  "\the<counter>". The \c in_appendix bool tells whether
-        *  we want the version shown in an appendix. This version does 
-        * not contain any \\the<counter> expression.
+       /// Returns a map of LaTeX-like strings to format the counter. 
+       /** For each language, the string is similar to what one gets
+        *  in LaTeX when using "\the<counter>". The \c in_appendix
+        *  bool tells whether we want the version shown in an
+        *  appendix. This version does not contain any \\the<counter>
+        *  expression.
         */
-       docstring const & flatLabelString(bool in_appendix) const;
-       /// set the \c flatLabelString values.
-       void setFlatLabelStrings(docstring const & fls, docstring const & flsa);
+       typedef std::map<std::string, docstring> StringMap;
+       StringMap & flatLabelStrings(bool in_appendix) const;
 private:
        ///
        int value_;
@@ -75,10 +75,12 @@ private:
        docstring labelstring_;
        /// The same as labelstring_, but in appendices.
        docstring labelstringappendix_;
-       /// A version of the labelstring with \\the<counter> expressions expanded
-       docstring flatlabelstring_;
-       /// A version of the appendix labelstring with \\the<counter> expressions expanded
-       docstring flatlabelstringappendix_;
+       /// Cache of the labelstring with \\the<counter> expressions expanded, 
+       /// indexed by language
+       mutable StringMap flatlabelstring_;
+       /// Cache of the appendix labelstring with \\the<counter> expressions expanded, 
+       /// indexed by language
+       mutable StringMap flatlabelstringappendix_;
 };
 
 
@@ -119,11 +121,17 @@ public:
        /// the &to array of counters. Empty string matches all.
        void copy(Counters & from, Counters & to,
                  docstring const & match = docstring());
-       /// returns the expanded string representation of the counter.
-       docstring theCounter(docstring const & c) const;
-       /// Replace in \c format all the LaTeX-like macros that depend on
-       /// counters.
-       docstring counterLabel(docstring const & format) const;
+       /** returns the expanded string representation of counter \c
+        *  c. The \c lang code is used to translate the string.
+        */
+       docstring theCounter(docstring const & c,
+                            std::string const & lang) const;
+       /** Replace in \c format all the LaTeX-like macros that depend
+        * on counters. The \c lang code is used to translate the
+        * string.
+        */
+       docstring counterLabel(docstring const & format,
+                              std::string const & lang) const;
        /// Are we in appendix?
        bool appendix() const { return appendix_; };
        /// Set the state variable indicating whether we are in appendix.
@@ -137,9 +145,12 @@ public:
        /// Set the state variable indicating whether we are in a subfloat.
        void isSubfloat(bool s) { subfloat_ = s; };
 private:
-       /// expands recusrsively any \\the<counter> macro in the
-       /// labelstring of \c counter.
-       docstring flattenLabelString(docstring const & counter, bool in_appendix, 
+       /** expands recusrsively any \\the<counter> macro in the
+        *  labelstring of \c counter.  The \c lang code is used to
+        *  translate the string.
+        */
+       docstring flattenLabelString(docstring const & counter, bool in_appendix,
+                                    std::string const &lang,
                                     std::vector<docstring> & callers) const;
        /// Returns the value of the counter according to the
        /// numbering scheme numbertype.
index 19997fa51b8d81f7814b3b47e23e24269b70731a..9dc6f4fafad7deec4f486fc3735a9223d8d40c26 100644 (file)
@@ -58,7 +58,6 @@
 #include "support/gettext.h"
 #include "support/lassert.h"
 #include "support/lstrings.h"
-#include "support/Messages.h"
 #include "support/textutils.h"
 
 #include <sstream>
@@ -1609,14 +1608,7 @@ void Paragraph::setLabelWidthString(docstring const & s)
 docstring const Paragraph::translateIfPossible(docstring const & s,
                BufferParams const & bparams) const
 {
-       if (!isAscii(s) || s.empty()) {
-               // This must be a user defined layout. We cannot translate
-               // this, since gettext accepts only ascii keys.
-               return s;
-       }
-       // Probably standard layout, try to translate
-       Messages & m = getMessages(getParLanguage(bparams)->code());
-       return m.get(to_ascii(s));
+       return lyx::translateIfPossible(s, getParLanguage(bparams)->code());
 }
 
 
@@ -1624,17 +1616,18 @@ docstring Paragraph::expandLabel(Layout const & layout,
                BufferParams const & bparams, bool process_appendix) const
 {
        DocumentClass const & tclass = bparams.documentClass();
+       string const & lang = getParLanguage(bparams)->code();
 
        docstring fmt;
        if (process_appendix && d->params_.appendix())
-               fmt = translateIfPossible(layout.labelstring_appendix(),
-                       bparams);
+               fmt = lyx::translateIfPossible(layout.labelstring_appendix(),
+                       lang);
        else
-               fmt = translateIfPossible(layout.labelstring(), bparams);
+               fmt = lyx::translateIfPossible(layout.labelstring(), lang);
 
        if (fmt.empty() && layout.labeltype == LABEL_COUNTER 
            && !layout.counter.empty())
-               return tclass.counters().theCounter(layout.counter);
+               return tclass.counters().theCounter(layout.counter, lang);
 
        // handle 'inherited level parts' in 'fmt',
        // i.e. the stuff between '@' in   '@Section@.\arabic{subsection}'
@@ -1652,7 +1645,7 @@ docstring Paragraph::expandLabel(Layout const & layout,
                }
        }
 
-       return tclass.counters().counterLabel(fmt);
+       return tclass.counters().counterLabel(fmt, lang);
 }
 
 
index 953f8e1247991e888185dc5d05c3e93a6b4b7ca4..2fcb79867103e6eab8e9fd30ece273f25e33df25 100644 (file)
@@ -469,14 +469,6 @@ void GuiGraphics::on_angle_textChanged(const QString & filename)
                                 (filename != "0"));
 }
 
-// returns the number of the string s in the vector v
-static int itemNumber(const vector<string> & v, string const & s)
-{
-       vector<string>::const_iterator cit =
-                   find(v.begin(), v.end(), s);
-       return (cit != v.end()) ? int(cit - v.begin()) : 0;
-}
-
 
 void GuiGraphics::paramsToDialog(InsetGraphicsParams const & igp)
 {
index d27f6b301f5c4a5459196b71de1ef1a6e02dee31..59655eb004485b2e3ebc5a833d09425aca538d6e 100644 (file)
@@ -41,7 +41,7 @@ LengthValidator::LengthValidator(QWidget * parent)
 QValidator::State LengthValidator::validate(QString & qtext, int &) const
 {
        bool ok;
-       double d = qtext.trimmed().toDouble(&ok);
+       qtext.trimmed().toDouble(&ok);
        if (qtext.isEmpty() || ok)
                return QValidator::Acceptable;
 
index a679dd6dbdd8539b6dae42e4613d2e0524d33887..008bf9aebeede8f3e787929ddec5d676f728ace8 100644 (file)
 #include "FuncRequest.h"
 #include "InsetIterator.h"
 #include "InsetList.h"
+#include "Language.h" 
 #include "Lexer.h"
 #include "output_xhtml.h"
 #include "Paragraph.h"
 #include "ParagraphList.h"
+#include "ParIterator.h"
 #include "TextClass.h"
 
 #include "frontends/alert.h"
@@ -253,13 +255,15 @@ void InsetBibitem::fillWithBibKeys(BiblioInfo & keys, InsetIterator const & it)
 
 
 // Update the counters of this inset and of its contents
-void InsetBibitem::updateLabels(ParIterator const &) 
+void InsetBibitem::updateLabels(ParIterator const & it
 {
-       Counters & counters = buffer().masterBuffer()->params().documentClass().counters();
+       BufferParams const & bp = buffer().masterBuffer()->params();
+       Counters & counters = bp.documentClass().counters();
        docstring const bibitem = from_ascii("bibitem");
        if (counters.hasCounter(bibitem) && getParam("label").empty()) {
                counters.step(bibitem);
-               autolabel_ = counters.theCounter(bibitem);
+               string const & lang = it.paragraph().getParLanguage(bp)->code();
+               autolabel_ = counters.theCounter(bibitem, lang);
        } else {
                autolabel_ = from_ascii("??");
        }
index 09254d133f9351ca368cc6565c3265e50ac8fa03..f3dbc5808a9ac55b0a1f53c6fb357313860ce689 100644 (file)
@@ -25,6 +25,7 @@
 #include "FuncRequest.h"
 #include "FuncStatus.h"
 #include "InsetList.h"
+#include "Language.h"
 #include "MetricsInfo.h"
 #include "output_latex.h"
 #include "OutputParams.h"
@@ -301,6 +302,7 @@ void InsetCaption::updateLabels(ParIterator const & it)
 {
        Buffer const & master = *buffer().masterBuffer();
        DocumentClass const & tclass = master.params().documentClass();
+       string const & lang = it.paragraph().getParLanguage(master.params())->code();
        Counters & cnts = tclass.counters();
        string const & type = cnts.current_float();
        // Memorize type for addToToc().
@@ -325,7 +327,7 @@ void InsetCaption::updateLabels(ParIterator const & it)
                        cnts.step(counter);
                        full_label_ = bformat(from_ascii("%1$s %2$s:"), 
                                              name,
-                                             cnts.theCounter(counter));
+                                             cnts.theCounter(counter, lang));
                } else
                        full_label_ = bformat(from_ascii("%1$s #:"), name);     
        }
index 8590cc5c7b1c2a7bddd74121f34e35426f79d514..2abe8a7f752df2c516d76969208d264bdd681938 100644 (file)
@@ -970,11 +970,12 @@ docstring InsetCollapsable::xhtml(odocstream & os, OutputParams const & runparam
 
        bool const opened = html::openTag(os, il.htmltag(), il.htmlattr());
        if (!il.counter().empty()) {
-               // FIXME Master buffer?
-               Counters & cntrs = buffer().params().documentClass().counters();
+               BufferParams const & bp = buffer().masterBuffer()->params();
+               Counters & cntrs = bp.documentClass().counters();
                cntrs.step(il.counter());
+               // FIXME: translate to paragraph language
                if (!il.htmllabel().empty())
-                       os << cntrs.counterLabel(translateIfPossible(from_ascii(il.htmllabel())));
+                       os << cntrs.counterLabel(from_utf8(il.htmllabel()), bp.language->code());
        }
        bool innertag_opened = false;
        if (!il.htmlinnertag().empty())
index 2b64cc3640e28eb2d52e00b174d44b53c5356af0..6c0d9b79245fba635b6ec2e78bf9599496607876 100644 (file)
@@ -16,9 +16,8 @@
 #include "Buffer.h"
 #include "BufferParams.h"
 #include "Counters.h"
+#include "Language.h"
 #include "Layout.h"
-// FIXME: the following is needed just to get the layout of the enclosing
-// paragraph. This seems a bit too much to me (JMarc)
 #include "OutputParams.h"
 #include "ParIterator.h"
 #include "TextClass.h"
@@ -33,6 +32,7 @@ using namespace std;
 
 namespace lyx {
 
+using support::bformat;
 
 InsetFoot::InsetFoot(Buffer const & buf)
        : InsetFootlike(buf)
@@ -47,16 +47,16 @@ docstring InsetFoot::editMessage() const
 
 void InsetFoot::updateLabels(ParIterator const & it)
 {
-       DocumentClass const & tclass = buffer().masterBuffer()->params().documentClass();
-       Counters & cnts = tclass.counters();
+       BufferParams const & bp = buffer().masterBuffer()->params();
+       Counters & cnts = bp.documentClass().counters();
        docstring const foot = from_ascii("footnote");
        Paragraph const & outer =  it.paragraph();
        if (!outer.layout().intitle && cnts.hasCounter(foot)) {
                cnts.step(foot);
                // FIXME: the counter should format itself.
-               custom_label_= support::bformat(from_utf8("%1$s %2$s"),
-                                         translateIfPossible(getLayout(buffer().params()).labelstring()),
-                                         cnts.theCounter(foot));
+               custom_label_= bformat(from_utf8("%1$s %2$s"),
+                                      translateIfPossible(getLayout(bp).labelstring()),
+                                      cnts.theCounter(foot, outer.getParLanguage(bp)->code()));
                setLabel(custom_label_);
        
        }