]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetFoot.cpp
Pure HTML output for math macros.
[lyx.git] / src / insets / InsetFoot.cpp
index 122eaecc8a14fdaffd7e3e654fef1db9149fd97e..f311c1d61cfc227e57e46da070ed3975875ca322 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"
 #include "support/debug.h"
 #include "support/docstream.h"
 #include "support/gettext.h"
-#include "support/lstrings.h"
 
 using namespace std;
 
 namespace lyx {
 
-
-InsetFoot::InsetFoot(Buffer const & buf)
+InsetFoot::InsetFoot(Buffer * buf)
        : InsetFootlike(buf)
 {}
 
 
-docstring InsetFoot::editMessage() const
+void InsetFoot::updateBuffer(ParIterator const & it, UpdateType utype)
 {
-       return _("Opened Footnote Inset");
-}
-
-
-void InsetFoot::updateLabels(ParIterator const & it)
-{
-       DocumentClass const & tclass = buffer().masterBuffer()->params().documentClass();
-       Counters & cnts = tclass.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));
-               setLabel(custom_label_);
-       
+       BufferParams const & bp = buffer().masterBuffer()->params();
+       Counters & cnts = bp.documentClass().counters();
+       if (utype == OutputUpdate) {
+               // the footnote counter is local to this inset
+               cnts.saveLastCounter();
+       }
+       Paragraph const & outer = it.paragraph();
+       InsetLayout const & il = getLayout();
+       docstring const & count = il.counter();
+       if (!outer.layout().intitle && cnts.hasCounter(count)) {
+               cnts.step(count, utype);
+               custom_label_= translateIfPossible(il.labelstring()) 
+                       + ' ' + cnts.theCounter(count, outer.getParLanguage(bp)->code());
+               setLabel(custom_label_);        
        }
-       InsetCollapsable::updateLabels(it);
+       InsetCollapsable::updateBuffer(it, utype);
+       if (utype == OutputUpdate)
+               cnts.restoreLastCounter();      
 }
 
 
@@ -127,5 +122,4 @@ int InsetFoot::docbook(odocstream & os, OutputParams const & runparams) const
        return i;
 }
 
-
 } // namespace lyx