]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
even example code should follow the style conventions
[lyx.git] / src / Text3.cpp
index 5f2abc8847b562b08cf56af7319b30c2575ed222..80f782d8057101f000534312a2ac6f9c3c7deb9b 100644 (file)
@@ -156,7 +156,7 @@ static void mathDispatch(Cursor & cur, FuncRequest const & cmd, bool display)
                        istringstream is(to_utf8(sel));
                        Lexer lex(0, 0);
                        lex.setStream(is);
-                       formula->read(cur.buffer(), lex);
+                       formula->read(lex);
                        if (formula->getType() == hullNone)
                                // Don't create pseudo formulas if
                                // delimiters are left out
@@ -220,7 +220,7 @@ static bool doInsertInset(Cursor & cur, Text * text,
        if (insetText && !insetText->allowMultiPar() || cur.lastpit() == 0) {
                // reset first par to default
                cur.text()->paragraphs().begin()
-                       ->setEmptyOrDefaultLayout(bparams.getTextClass());
+                       ->setEmptyOrDefaultLayout(bparams.documentClass());
                cur.pos() = 0;
                cur.pit() = 0;
                // Merge multiple paragraphs -- hack
@@ -229,8 +229,8 @@ static bool doInsertInset(Cursor & cur, Text * text,
        } else {
                // reset surrounding par to default
                docstring const layoutname = insetText->useEmptyLayout()
-                       ? bparams.getTextClass().emptyLayoutName()
-                       : bparams.getTextClass().defaultLayoutName();
+                       ? bparams.documentClass().emptyLayoutName()
+                       : bparams.documentClass().defaultLayoutName();
                cur.leaveInset(*inset);
                text->setLayout(cur, layoutname);
        }
@@ -266,37 +266,38 @@ static void outline(OutlineOp mode, Cursor & cur)
        ParagraphList::iterator finish = start;
        ParagraphList::iterator end = pars.end();
 
-       TextClass const & tc = buf.params().getTextClass();
+       DocumentClass const & tc = buf.params().documentClass();
 
-       int const thistoclevel = start->layout()->toclevel;
+       int const thistoclevel = start->layout().toclevel;
        int toclevel;
+
+       // Move out (down) from this section header
+       if (finish != end)
+               ++finish;
+       // Seek the one (on same level) below
+       for (; finish != end; ++finish) {
+               toclevel = finish->layout().toclevel;
+               if (toclevel != Layout::NOT_IN_TOC && toclevel <= thistoclevel) {
+                       break;
+               }
+       }
+
        switch (mode) {
                case OutlineUp: {
-                       // Move out (down) from this section header
-                       if (finish != end)
-                               ++finish;
-                       // Seek the one (on same level) below
-                       for (; finish != end; ++finish) {
-                               toclevel = finish->layout()->toclevel;
-                               if (toclevel != Layout::NOT_IN_TOC
-                                   && toclevel <= thistoclevel) {
-                                       break;
-                               }
-                       }
                        ParagraphList::iterator dest = start;
                        // Move out (up) from this header
                        if (dest == bgn)
-                               break;
+                               return;
                        // Search previous same-level header above
                        do {
                                --dest;
-                               toclevel = dest->layout()->toclevel;
+                               toclevel = dest->layout().toclevel;
                        } while(dest != bgn
                                && (toclevel == Layout::NOT_IN_TOC
                                    || toclevel > thistoclevel));
                        // Not found; do nothing
                        if (toclevel == Layout::NOT_IN_TOC || toclevel > thistoclevel)
-                               break;
+                               return;
                        pit_type const newpit = distance(bgn, dest);
                        pit_type const len = distance(start, finish);
                        pit_type const deletepit = pit + len;
@@ -305,30 +306,10 @@ static void outline(OutlineOp mode, Cursor & cur)
                        start = boost::next(pars.begin(), deletepit);
                        pit = newpit;
                        pars.erase(start, finish);
-                       break;
+                       return;
                }
                case OutlineDown: {
-                       // Go down out of current header:
-                       if (finish != end)
-                               ++finish;
-                       // Find next same-level header:
-                       for (; finish != end; ++finish) {
-                               toclevel = finish->layout()->toclevel;
-                               if (toclevel != Layout::NOT_IN_TOC && toclevel <= thistoclevel)
-                                       break;
-                       }
                        ParagraphList::iterator dest = finish;
-                       // Go one down from *this* header:
-                       if (dest != end)
-                               ++dest;
-                       else
-                               break;
-                       // Go further down to find header to insert in front of:
-                       for (; dest != end; ++dest) {
-                               toclevel = dest->layout()->toclevel;
-                               if (toclevel != Layout::NOT_IN_TOC && toclevel <= thistoclevel)
-                                       break;
-                       }
                        // One such was found:
                        pit_type newpit = distance(bgn, dest);
                        pit_type const len = distance(start, finish);
@@ -337,32 +318,46 @@ static void outline(OutlineOp mode, Cursor & cur)
                        start = boost::next(bgn, pit);
                        pit = newpit - len;
                        pars.erase(start, finish);
-                       break;
+                       return;
                }
-               case OutlineIn:
-                       buf.undo().recordUndo(cur);
-                       for (size_t i = 0; i != tc.layoutCount(); ++i) {
-                               LayoutPtr const & lt = tc.layout(i);
-                               if (lt->toclevel == thistoclevel + 1 &&
-                                   start->layout()->labeltype == lt->labeltype) {
-                                       start->setLayout(lt);
-                                       break;
+               case OutlineIn: {
+                       pit_type const len = distance(start, finish);
+                       buf.undo().recordUndo(cur, ATOMIC_UNDO, pit, pit + len - 1);
+                       for (; start != finish; ++start) {
+                               toclevel = start->layout().toclevel;
+                               if (toclevel == Layout::NOT_IN_TOC)
+                                       continue;
+                               DocumentClass::const_iterator lit = tc.begin();
+                               DocumentClass::const_iterator len = tc.end();
+                               for (; lit != len; ++lit) {
+                                       if (lit->toclevel == toclevel + 1 &&
+                                           start->layout().labeltype == lit->labeltype) {
+                                               start->setLayout(*lit);
+                                               break;
+                                       }
                                }
                        }
-                       break;
-               case OutlineOut:
-                       buf.undo().recordUndo(cur);
-                       for (size_t i = 0; i != tc.layoutCount(); ++i) {
-                               LayoutPtr const & lt = tc.layout(i);
-                               if (lt->toclevel == thistoclevel - 1 &&
-                                   start->layout()->labeltype == lt->labeltype) {
-                                       start->setLayout(lt);
-                                       break;
+                       return;
+               }
+               case OutlineOut: {
+                       pit_type const len = distance(start, finish);
+                       buf.undo().recordUndo(cur, ATOMIC_UNDO, pit, pit + len - 1);
+                       for (; start != finish; ++start) {
+                               toclevel = start->layout().toclevel;
+                               if (toclevel == Layout::NOT_IN_TOC)
+                                       continue;
+                               DocumentClass::const_iterator lit = tc.begin();
+                               DocumentClass::const_iterator len = tc.end();
+                               for (; lit != len; ++lit) {
+                                       if (lit->toclevel == toclevel - 1 &&
+                                               start->layout().labeltype == lit->labeltype) {
+                                                       start->setLayout(*lit);
+                                                       break;
+                                       }
                                }
                        }
-                       break;
-               default:
-                       break;
+                       return;
+               }
        }
 }
 
@@ -387,7 +382,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 
        BufferView * bv = &cur.bv();
        TextMetrics & tm = bv->textMetrics(this);
-       if (!tm.has(cur.pit()))
+       if (!tm.contains(cur.pit()))
                lyx::dispatch(FuncRequest(LFUN_SCREEN_RECENTER));
 
        // FIXME: We use the update flag to indicates wether a singlePar or a
@@ -607,25 +602,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                needsUpdate |= cursorDownParagraph(cur);
                break;
 
-       case LFUN_SCREEN_UP_SELECT:
-               needsUpdate |= cur.selHandle(true);
-               if (cur.pit() == 0 && cur.textRow().pos() == 0)
-                       cur.undispatched();
-               else {
-                       tm.cursorPrevious(cur);
-               }
-               break;
-
-       case LFUN_SCREEN_DOWN_SELECT:
-               needsUpdate |= cur.selHandle(true);
-               if (cur.pit() == cur.lastpit()
-                         && cur.textRow().endpos() == cur.lastpos())
-                       cur.undispatched();
-               else {
-                       tm.cursorNext(cur);
-               }
-               break;
-
        case LFUN_LINE_BEGIN:
        case LFUN_LINE_BEGIN_SELECT:
                needsUpdate |= cur.selHandle(cmd.action == LFUN_LINE_BEGIN_SELECT);
@@ -849,7 +825,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        /*
                        Paragraph & par = pars_[cur.pit()];
                        if (inset->lyxCode() == LABEL_CODE
-                               && par.layout()->labeltype == LABEL_COUNTER) {
+                               && par.layout().labeltype == LABEL_COUNTER) {
                                // Go to the end of the paragraph
                                // Warning: Because of Change-Tracking, the last
                                // position is 'size()' and not 'size()-1':
@@ -861,7 +837,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        */
                        if (cur.selection())
                                cutSelection(cur, true, false);
-                       insertInset(cur, inset);
+                       cur.insert(inset);
                        cur.posForward();
                }
                break;
@@ -876,7 +852,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
 
        case LFUN_SPACE_INSERT:
-               if (cur.paragraph().layout()->free_spacing)
+               if (cur.paragraph().layout().free_spacing)
                        insertChar(cur, ' ');
                else {
                        doInsertInset(cur, this, cmd, false, false);
@@ -942,7 +918,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        pasteFromStack(cur, bv->buffer().errorList("Paste"),
                                       convert<unsigned int>(arg));
                } else {
-                       Clipboard::GraphicsType type;
+                       Clipboard::GraphicsType type = Clipboard::AnyGraphicsType;
                        if (arg == "pdf")
                                type = Clipboard::PdfGraphicsType;
                        else if (arg == "png")
@@ -1002,7 +978,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
 
        case LFUN_SERVER_GET_LAYOUT:
-               cur.message(cur.paragraph().layout()->name());
+               cur.message(cur.paragraph().layout().name());
                break;
 
        case LFUN_LAYOUT: {
@@ -1010,8 +986,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                LYXERR(Debug::INFO, "LFUN_LAYOUT: (arg) " << to_utf8(layout));
 
                Paragraph const & para = cur.paragraph();
-               docstring const old_layout = para.layout()->name();
-               TextClass const & tclass = bv->buffer().params().getTextClass();
+               docstring const old_layout = para.layout().name();
+               DocumentClass const & tclass = bv->buffer().params().documentClass();
 
                if (layout.empty())
                        layout = tclass.defaultLayoutName();
@@ -1033,7 +1009,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 
                // If the entry is obsolete, use the new one instead.
                if (hasLayout) {
-                       docstring const & obs = tclass[layout]->obsoleted_by();
+                       docstring const & obs = tclass[layout].obsoleted_by();
                        if (!obs.empty())
                                layout = obs;
                }
@@ -1052,7 +1028,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        pit_type spit = cur.selBegin().pit();
                        pit_type epit = cur.selEnd().pit() + 1;
                        while (spit != epit) {
-                               if (pars_[spit].layout()->name() != old_layout) {
+                               if (pars_[spit].layout().name() != old_layout) {
                                        change_layout = true;
                                        break;
                                }
@@ -1097,8 +1073,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                Paragraph & par = cur.paragraph();
                pos_type pos = cur.pos();
                BufferParams const & bufparams = bv->buffer().params();
-               LayoutPtr const & style = par.layout();
-               if (!style->pass_thru
+               Layout const & style = par.layout();
+               if (!style.pass_thru
                    && par.getFontSettings(bufparams, pos).language()->lang() != "hebrew") {
                        // this avoids a double undo
                        // FIXME: should not be needed, ideally
@@ -1114,14 +1090,9 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        else
                                c = par.getChar(pos - 1);
                        string arg = to_utf8(cmd.argument());
-                       if (arg == "single")
-                               cur.insert(new InsetQuotes(c,
-                                   bufparams.quotes_language,
-                                   InsetQuotes::SingleQ));
-                       else
-                               cur.insert(new InsetQuotes(c,
-                                   bufparams.quotes_language,
-                                   InsetQuotes::DoubleQ));
+                       cur.insert(new InsetQuotes(c, bufparams.quotes_language,
+                               (arg == "single") ? InsetQuotes::SingleQuotes
+                                       : InsetQuotes::DoubleQuotes));
                        cur.posForward();
                }
                else
@@ -1334,7 +1305,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        docstring ds = cur.selectionAsString(false);
                        cutSelection(cur, true, false);
                        static_cast<InsetInfo *>(inset)->setInfo(to_utf8(ds));
-                       static_cast<InsetInfo *>(inset)->updateInfo(cur.bv().buffer());
+                       static_cast<InsetInfo *>(inset)->updateInfo();
                }
                insertInset(cur, inset);
                cur.posForward();
@@ -1342,7 +1313,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        }
 #if 0
        case LFUN_LIST_INSERT:
-       case LFUN_THEOREM_INSERT:
 #endif
        case LFUN_CAPTION_INSERT:
        case LFUN_FOOTNOTE_INSERT:
@@ -1384,7 +1354,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                cur.posForward();
                ParagraphList & pars = cur.text()->paragraphs();
 
-               TextClass const & tclass = bv->buffer().params().getTextClass();
+               DocumentClass const & tclass = bv->buffer().params().documentClass();
 
                // add a separate paragraph for the caption inset
                pars.push_back(Paragraph());
@@ -1438,7 +1408,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_INDEX_PRINT:
        case LFUN_NOMENCL_PRINT:
        case LFUN_TOC_INSERT:
-       case LFUN_HFILL_INSERT:
        case LFUN_LINE_INSERT:
        case LFUN_NEWPAGE_INSERT:
        case LFUN_PAGEBREAK_INSERT:
@@ -1675,7 +1644,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
 
        case LFUN_FLOAT_LIST: {
-               TextClass const & tclass = bv->buffer().params().getTextClass();
+               DocumentClass const & tclass = bv->buffer().params().documentClass();
                if (tclass.floats().typeExist(to_utf8(cmd.argument()))) {
                        cur.recordUndo();
                        if (cur.selection())
@@ -1857,7 +1826,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                return true;
 
        case LFUN_BIBITEM_INSERT:
-               enable = (cur.paragraph().layout()->labeltype == LABEL_BIBLIO
+               enable = (cur.paragraph().layout().labeltype == LABEL_BIBLIO
                          && cur.pos() == 0);
                break;
 
@@ -1894,6 +1863,8 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                        code = NOTE_CODE;
                else if (cmd.argument() == "ref")
                        code = REF_CODE;
+               else if (cmd.argument() == "space")
+                       code = SPACE_CODE;
                else if (cmd.argument() == "toc")
                        code = TOC_CODE;
                else if (cmd.argument() == "vspace")
@@ -1933,9 +1904,6 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_LIST_INSERT:
                code = LIST_CODE;
                break;
-       case LFUN_THEOREM_INSERT:
-               code = THEOREM_CODE;
-               break;
 #endif
        case LFUN_CAPTION_INSERT:
                code = CAPTION_CODE;
@@ -1946,7 +1914,8 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_FLEX_INSERT: {
                code = FLEX_CODE;
                string s = cmd.getArg(0);
-               InsetLayout il =  cur.buffer().params().getTextClass().insetLayout(from_utf8(s));
+               InsetLayout il = 
+                       cur.buffer().params().documentClass().insetLayout(from_utf8(s));
                if (il.lyxtype() != "charstyle" &&
                    il.lyxtype() != "custom" &&
                    il.lyxtype() != "element" &&
@@ -1971,7 +1940,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_OPTIONAL_INSERT:
                code = OPTARG_CODE;
                enable = cur.paragraph().insetList().count(OPTARG_CODE)
-                       < cur.paragraph().layout()->optionalargs;
+                       < cur.paragraph().layout().optionalargs;
                break;
        case LFUN_ENVIRONMENT_INSERT:
                code = BOX_CODE;
@@ -1998,7 +1967,6 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                // always allow this, since we will inset a raw quote
                // if an inset is not allowed.
                break;
-       case LFUN_HFILL_INSERT:
        case LFUN_SPECIALCHAR_INSERT:
                code = SPECIALCHAR_CODE;
                break;
@@ -2119,7 +2087,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_OUTLINE_DOWN:
        case LFUN_OUTLINE_IN:
        case LFUN_OUTLINE_OUT:
-               enable = (cur.paragraph().layout()->toclevel != Layout::NOT_IN_TOC);
+               enable = (cur.paragraph().layout().toclevel != Layout::NOT_IN_TOC);
                break;
 
        case LFUN_WORD_DELETE_FORWARD:
@@ -2143,8 +2111,6 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_DOWN_SELECT:
        case LFUN_PARAGRAPH_UP_SELECT:
        case LFUN_PARAGRAPH_DOWN_SELECT:
-       case LFUN_SCREEN_UP_SELECT:
-       case LFUN_SCREEN_DOWN_SELECT:
        case LFUN_LINE_BEGIN_SELECT:
        case LFUN_LINE_END_SELECT:
        case LFUN_WORD_FORWARD_SELECT: