]> git.lyx.org Git - lyx.git/blobdiff - src/output_xhtml.cpp
add onoff support for "inset-modify changetype xxx" in include inset
[lyx.git] / src / output_xhtml.cpp
index 67ae2cc3029a540f5fd04122ff8d801fddffee53..44d94e3e14b8e7274a8771887a2349d915112b02 100644 (file)
@@ -65,6 +65,11 @@ docstring escapeChar(char_type c)
 }
 
 
+// FIXME do something here.
+docstring htmlize(docstring const & str) {
+       return str;
+}
+
 // FIXME This needs to be protected somehow.
 static vector<string> taglist;
 
@@ -196,27 +201,48 @@ ParagraphList::const_iterator makeParagraphs(Buffer const & buf,
                Layout const & lay = par->layout();
                if (!lay.counter.empty())
                        buf.params().documentClass().counters().step(lay.counter);
+               // FIXME We should see if there's a label to be output and
+               // do something with it.
                if (par != pbegin)
                        os << '\n';
                bool const opened = openTag(os, lay);
-               par->simpleLyXHTMLOnePar(buf, os, runparams, 
+               docstring const deferred = par->simpleLyXHTMLOnePar(buf, os, runparams,
                                outerFont(distance(paragraphs.begin(), par), paragraphs));
                if (opened) {
                        closeTag(os, lay);
                        os << '\n';
                }
+               if (!deferred.empty())
+                       os << deferred << '\n';
        }
        return pend;
 }
 
 
+ParagraphList::const_iterator makeBibliography(Buffer const & buf,
+                               odocstream & os,
+                               OutputParams const & runparams,
+                               ParagraphList const & paragraphs,
+                               ParagraphList::const_iterator const & pbegin,
+                               ParagraphList::const_iterator const & pend) 
+{
+       os << "<h2 class='bibliography'>" 
+          << pbegin->layout().labelstring() 
+          << "</h2>\n"
+          << "<div class='bibliography'>\n";
+                       makeParagraphs(buf, os, runparams, paragraphs, pbegin, pend);
+       os << "</div>";
+       return pend;
+}
+
+
 ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
                                              odocstream & os,
                                              OutputParams const & runparams,
                                              ParagraphList const & paragraphs,
                                              ParagraphList::const_iterator const & pbegin,
-                                             ParagraphList::const_iterator const & pend) {
-       
+                                             ParagraphList::const_iterator const & pend) 
+{
        ParagraphList::const_iterator par = pbegin;
        Layout const & bstyle = par->layout();
        depth_type const origdepth = pbegin->params().depth();
@@ -250,14 +276,19 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
                                        closeItemTag(os, *lastlay);
                                        lastlay = 0;
                                }
-                               bool const item_tag_opened = openItemTag(os, cstyle);
+                               bool const labelfirst = cstyle.htmllabelfirst();
+                               bool item_tag_opened = false;
+                               if (!labelfirst)
+                                       item_tag_opened = openItemTag(os, cstyle);
                                if (cstyle.labeltype == LABEL_MANUAL) {
                                        bool const label_tag_opened = openLabelTag(os, cstyle);
                                        sep = par->firstWordLyXHTML(os, runparams);
                                        if (label_tag_opened)
                                                closeLabelTag(os, cstyle);
                                        os << '\n';
-                               } else if (style.latextype == LATEX_ENVIRONMENT 
+                               }
+                               // FIXME Why did I put that first condition??
+                               else if (style.latextype == LATEX_ENVIRONMENT 
                                           && style.labeltype != LABEL_NO_LABEL) {
                                        bool const label_tag_opened = openLabelTag(os, cstyle);
                                        os << pbegin->expandLabel(style, buf.params(), false);
@@ -265,26 +296,32 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
                                                closeLabelTag(os, cstyle);
                                        os << '\n';
                                }
-
+                               if (labelfirst)
+                                       item_tag_opened = openItemTag(os, cstyle);
+                               else
+                                       os << "<span class='item'>";
                                par->simpleLyXHTMLOnePar(buf, os, runparams, 
                                        outerFont(distance(paragraphs.begin(), par), paragraphs), sep);
+                               if (!labelfirst)
+                                       os << "</span>";
                                ++par;
-                               // We may not want to close the tag yet, in particular,
-                               if (item_tag_opened 
-                                               // if we're not at the end...
-                                   && par != pend 
+                               if (item_tag_opened) {
+                                       // We may not want to close the tag yet, in particular,
+                                       // if we're not at the end...
+                                       if (par != pend 
                                    //  and are doing items...
-                                   && style.latextype == LATEX_ITEM_ENVIRONMENT
-                                   // and if the depth has changed...
-                                   && par->params().depth() != origdepth) {
-                                               // then we'll save this layout for later, and close it when
-                                               // we get another item.
+                                    && style.latextype == LATEX_ITEM_ENVIRONMENT
+                                    // and if the depth has changed...
+                                    && par->params().depth() != origdepth) {
+                                    // then we'll save this layout for later, and close it when
+                                    // we get another item.
                                                lastlay = &cstyle;
-                               } else {
-                                               closeItemTag(os, cstyle); // FIXME
+                                       } else {
+                                               closeItemTag(os, cstyle);
+                                       }
                                        os << '\n';
                                }
-                       } 
+                       }
                        // The other possibility is that the depth has increased, in which
                        // case we need to recurse.
                        else {
@@ -297,9 +334,15 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
                        send = searchParagraph(par, pend);
                        par = makeParagraphs(buf, os, runparams, paragraphs, par, send);
                        break;
-               // FIXME
+               // Shouldn't happen
                case LATEX_BIB_ENVIRONMENT:
+                       send = par;
+                       ++send;
+                       par = makeParagraphs(buf, os, runparams, paragraphs, par, send);
+                       break;
+               // Shouldn't happen
                case LATEX_COMMAND:
+                       ++par;
                        break;
                }
        }
@@ -326,6 +369,7 @@ void makeCommand(Buffer const & buf,
        bool const main_tag_opened = openTag(os, style);
 
        // Label around sectioning number:
+       // FIXME Probably need to account for LABEL_MANUAL
        if (style.labeltype != LABEL_NO_LABEL) {
                bool const label_tag_opened = openLabelTag(os, style);
                os << pbegin->expandLabel(style, buf.params(), false);
@@ -354,7 +398,6 @@ void xhtmlParagraphs(ParagraphList const & paragraphs,
        ParagraphList::const_iterator pend = paragraphs.end();
 
        while (par != pend) {
-               LYXERR0(par->id());
                Layout const & style = par->layout();
                ParagraphList::const_iterator lastpar = par;
                ParagraphList::const_iterator send;
@@ -371,16 +414,17 @@ void xhtmlParagraphs(ParagraphList const & paragraphs,
                case LATEX_LIST_ENVIRONMENT:
                case LATEX_ITEM_ENVIRONMENT: {
                        send = searchEnvironment(par, pend);
-                       par = makeEnvironment(buf, os, runparams, paragraphs, par,send);
+                       par = makeEnvironment(buf, os, runparams, paragraphs, par, send);
+                       break;
+               }
+               case LATEX_BIB_ENVIRONMENT: {
+                       send = searchEnvironment(par, pend);
+                       par = makeBibliography(buf, os, runparams, paragraphs, par, send);
                        break;
                }
                case LATEX_PARAGRAPH:
                        send = searchParagraph(par, pend);
-                       par = makeParagraphs(buf, os, runparams, paragraphs, par,send);
-                       break;
-               case LATEX_BIB_ENVIRONMENT:
-                       // FIXME
-                       ++par;
+                       par = makeParagraphs(buf, os, runparams, paragraphs, par, send);
                        break;
                }
                // FIXME??