]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetert.C
* src/LyXAction.C: mark goto-clear-bookmark as working without buffer
[lyx.git] / src / insets / insetert.C
index 9197bf805581b7496c813fc4cdd9bd0392ec8c4a..15e936c5d201310f9aa7f5b120d24ff2615ae09a 100644 (file)
 #include "paragraph.h"
 
 #include "frontends/Alert.h"
-#include "frontends/LyXView.h"
 
 #include <sstream>
 
-using lyx::pos_type;
-using lyx::support::token;
+
+namespace lyx {
+
+using support::token;
 
 using std::endl;
 using std::min;
@@ -61,7 +62,7 @@ void InsetERT::init()
        text_.current_font.setLanguage(latex_language);
        text_.real_current_font.setLanguage(latex_language);
 
-       setInsetName("ERT");
+       setInsetName(from_ascii("ERT"));
 }
 
 
@@ -137,13 +138,13 @@ void InsetERT::read(Buffer const & buf, LyXLex & lex)
 }
 
 
-string const InsetERT::editMessage() const
+docstring const InsetERT::editMessage() const
 {
        return _("Opened ERT Inset");
 }
 
 
-int InsetERT::latex(Buffer const &, ostream & os,
+int InsetERT::latex(Buffer const &, odocstream & os,
                    OutputParams const &) const
 {
        ParagraphList::const_iterator par = paragraphs().begin();
@@ -154,10 +155,10 @@ int InsetERT::latex(Buffer const &, ostream & os,
                pos_type siz = par->size();
                for (pos_type i = 0; i < siz; ++i) {
                        // ignore all struck out text
-                       if (isDeletedText(*par, i))
+                       if (par->isDeleted(i))
                                continue;
 
-                       os << par->getChar(i);
+                       os.put(par->getChar(i));
                }
                ++par;
                if (par != end) {
@@ -170,36 +171,14 @@ int InsetERT::latex(Buffer const &, ostream & os,
 }
 
 
-int InsetERT::plaintext(Buffer const &, ostream &,
+int InsetERT::plaintext(Buffer const &, odocstream &,
                    OutputParams const & /*runparams*/) const
 {
        return 0;
 }
 
 
-int InsetERT::linuxdoc(Buffer const &, ostream & os,
-                      OutputParams const &) const
-{
-       ParagraphList::const_iterator par = paragraphs().begin();
-       ParagraphList::const_iterator end = paragraphs().end();
-
-       int lines = 0;
-       while (par != end) {
-               pos_type siz = par->size();
-               for (pos_type i = 0; i < siz; ++i)
-                       os << par->getChar(i);
-               ++par;
-               if (par != end) {
-                       os << "\n";
-                       lines ++;
-               }
-       }
-
-       return lines;
-}
-
-
-int InsetERT::docbook(Buffer const &, ostream & os,
+int InsetERT::docbook(Buffer const &, odocstream & os,
                      OutputParams const &) const
 {
        ParagraphList::const_iterator par = paragraphs().begin();
@@ -209,7 +188,7 @@ int InsetERT::docbook(Buffer const &, ostream & os,
        while (par != end) {
                pos_type siz = par->size();
                for (pos_type i = 0; i < siz; ++i)
-                       os << par->getChar(i);
+                       os.put(par->getChar(i));
                ++par;
                if (par != end) {
                        os << "\n";
@@ -234,17 +213,17 @@ void InsetERT::doDispatch(LCursor & cur, FuncRequest & cmd)
        }
        case LFUN_INSET_MODIFY: {
                InsetCollapsable::CollapseStatus st;
-               InsetERTMailer::string2params(cmd.argument, st);
+               InsetERTMailer::string2params(to_utf8(cmd.argument()), st);
                setStatus(cur, st);
                break;
        }
        case LFUN_PASTE:
+       case LFUN_CLIPBOARD_PASTE:
        case LFUN_PRIMARY_SELECTION_PASTE: {
                InsetCollapsable::doDispatch(cur, cmd);
 
                // Since we can only store plain text, we must reset all
                // attributes.
-               forceParagraphsToDefault(cur);
                // FIXME: Change only the pasted paragraphs
 
                BufferParams const & bp = cur.buffer().params();
@@ -343,6 +322,8 @@ bool InsetERT::getStatus(LCursor & cur, FuncRequest const & cmd,
                case LFUN_BIBITEM_INSERT:
                case LFUN_LINE_INSERT:
                case LFUN_PAGEBREAK_INSERT:
+               case LFUN_CLEARPAGE_INSERT:
+               case LFUN_CLEARDOUBLEPAGE_INSERT:
                case LFUN_LANGUAGE:
                case LFUN_LAYOUT:
                case LFUN_LAYOUT_PARAGRAPH:
@@ -373,6 +354,8 @@ bool InsetERT::getStatus(LCursor & cur, FuncRequest const & cmd,
                case LFUN_INSET_INSERT:
                case LFUN_PARAGRAPH_PARAMS_APPLY:
                case LFUN_PARAGRAPH_UPDATE:
+               case LFUN_NOMENCL_INSERT:
+               case LFUN_NOMENCL_PRINT:
                case LFUN_NOACTION:
                        status.enabled(false);
                        return true;
@@ -380,6 +363,7 @@ bool InsetERT::getStatus(LCursor & cur, FuncRequest const & cmd,
                case LFUN_QUOTE_INSERT:
                case LFUN_INSET_MODIFY:
                case LFUN_PASTE:
+               case LFUN_CLIPBOARD_PASTE:
                case LFUN_PRIMARY_SELECTION_PASTE:
                        status.enabled(true);
                        return true;
@@ -388,7 +372,7 @@ bool InsetERT::getStatus(LCursor & cur, FuncRequest const & cmd,
                // solution, we consider only the first action of the sequence
                case LFUN_COMMAND_SEQUENCE: {
                        // argument contains ';'-terminated commands
-                       string const firstcmd = token(cmd.argument, ';', 0);
+                       string const firstcmd = token(to_utf8(cmd.argument()), ';', 0);
                        FuncRequest func(lyxaction.lookupFunc(firstcmd));
                        func.origin = cmd.origin;
                        return getStatus(cur, func, status);
@@ -402,6 +386,7 @@ bool InsetERT::getStatus(LCursor & cur, FuncRequest const & cmd,
 
 void InsetERT::setButtonLabel()
 {
+       // FIXME UNICODE
        setLabel(isOpen() ?  _("ERT") : getNewLabel(_("ERT")));
 }
 
@@ -412,14 +397,16 @@ bool InsetERT::insetAllowed(InsetBase::Code /* code */) const
 }
 
 
-void InsetERT::metrics(MetricsInfo & mi, Dimension & dim) const
+bool InsetERT::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        LyXFont tmpfont = mi.base.font;
        getDrawFont(mi.base.font);
        mi.base.font.realize(tmpfont);
        InsetCollapsable::metrics(mi, dim);
        mi.base.font = tmpfont;
+       bool const changed = dim_ != dim;
        dim_ = dim;
+       return changed;
 }
 
 
@@ -491,3 +478,6 @@ InsetERTMailer::params2string(InsetCollapsable::CollapseStatus status)
        data << name_ << ' ' << status;
        return data.str();
 }
+
+
+} // namespace lyx