X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetert.C;h=15e936c5d201310f9aa7f5b120d24ff2615ae09a;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=647760723503eb28db6f5829340b1f9b4839b60a;hpb=90f00ecfa69b2cea5a8b8a9a3b9cf16b7cd6e6ce;p=lyx.git diff --git a/src/insets/insetert.C b/src/insets/insetert.C index 6477607235..15e936c5d2 100644 --- a/src/insets/insetert.C +++ b/src/insets/insetert.C @@ -32,12 +32,13 @@ #include "paragraph.h" #include "frontends/Alert.h" -#include "frontends/LyXView.h" #include -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"; @@ -226,14 +205,21 @@ void InsetERT::doDispatch(LCursor & cur, FuncRequest & cmd) //lyxerr << "\nInsetERT::doDispatch (begin): cmd: " << cmd << endl; switch (cmd.action) { + case LFUN_QUOTE_INSERT: { + // We need to bypass the fancy quotes in LyXText + FuncRequest f(LFUN_SELF_INSERT, "\""); + dispatch(cur, f); + break; + } 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_PASTESELECTION: { + case LFUN_CLIPBOARD_PASTE: + case LFUN_PRIMARY_SELECTION_PASTE: { InsetCollapsable::doDispatch(cur, cmd); // Since we can only store plain text, we must reset all @@ -249,7 +235,6 @@ void InsetERT::doDispatch(LCursor & cur, FuncRequest & cmd) ParagraphList::iterator const end = paragraphs().end(); for (ParagraphList::iterator par = paragraphs().begin(); par != end; ++par) { - par->layout(layout); // in case par had a manual label par->setBeginOfBody(); pos_type const siz = par->size(); @@ -281,108 +266,113 @@ bool InsetERT::getStatus(LCursor & cur, FuncRequest const & cmd, { switch (cmd.action) { // suppress these - case LFUN_ACUTE: - case LFUN_BREVE: - case LFUN_CARON: - case LFUN_CEDILLA: - case LFUN_CIRCLE: - case LFUN_CIRCUMFLEX: - case LFUN_DOT: - case LFUN_GRAVE: - case LFUN_HUNG_UMLAUT: - case LFUN_MACRON: - case LFUN_OGONEK: - case LFUN_SPECIAL_CARON: - case LFUN_TIE: - case LFUN_TILDE: - case LFUN_UMLAUT: - case LFUN_UNDERBAR: - case LFUN_UNDERDOT: + case LFUN_ACCENT_ACUTE: + case LFUN_ACCENT_BREVE: + case LFUN_ACCENT_CARON: + case LFUN_ACCENT_CEDILLA: + case LFUN_ACCENT_CIRCLE: + case LFUN_ACCENT_CIRCUMFLEX: + case LFUN_ACCENT_DOT: + case LFUN_ACCENT_GRAVE: + case LFUN_ACCENT_HUNGARIAN_UMLAUT: + case LFUN_ACCENT_MACRON: + case LFUN_ACCENT_OGONEK: + case LFUN_ACCENT_SPECIAL_CARON: + case LFUN_ACCENT_TIE: + case LFUN_ACCENT_TILDE: + case LFUN_ACCENT_UMLAUT: + case LFUN_ACCENT_UNDERBAR: + case LFUN_ACCENT_UNDERDOT: case LFUN_APPENDIX: - case LFUN_BREAKLINE: - case LFUN_INSET_CAPTION: - case LFUN_DEPTH_MIN: - case LFUN_DEPTH_PLUS: - case LFUN_LDOTS: - case LFUN_END_OF_SENTENCE: + case LFUN_BREAK_LINE: + case LFUN_CAPTION_INSERT: + case LFUN_DEPTH_DECREMENT: + case LFUN_DEPTH_INCREMENT: + case LFUN_DOTS_INSERT: + case LFUN_END_OF_SENTENCE_PERIOD_INSERT: case LFUN_ENVIRONMENT_INSERT: - case LFUN_INSET_ERT: + case LFUN_ERT_INSERT: case LFUN_FILE_INSERT: - case LFUN_INSET_FLOAT: - case LFUN_INSET_WIDE_FLOAT: - case LFUN_INSET_WRAP: - case LFUN_BOLD: - case LFUN_CODE: - case LFUN_DEFAULT: - case LFUN_EMPH: - case LFUN_FREEFONT_APPLY: - case LFUN_FREEFONT_UPDATE: - case LFUN_NOUN: - case LFUN_ROMAN: - case LFUN_SANS: - case LFUN_FRAK: - case LFUN_ITAL: + case LFUN_FLOAT_INSERT: + case LFUN_FLOAT_WIDE_INSERT: + case LFUN_WRAP_INSERT: + case LFUN_FONT_BOLD: + case LFUN_FONT_CODE: + case LFUN_FONT_DEFAULT: + case LFUN_FONT_EMPH: + case LFUN_FONT_FREE_APPLY: + case LFUN_FONT_FREE_UPDATE: + case LFUN_FONT_NOUN: + case LFUN_FONT_ROMAN: + case LFUN_FONT_SANS: + case LFUN_FONT_FRAK: + case LFUN_FONT_ITAL: case LFUN_FONT_SIZE: case LFUN_FONT_STATE: - case LFUN_UNDERLINE: - case LFUN_INSET_FOOTNOTE: - case LFUN_HFILL: - case LFUN_HTMLURL: - case LFUN_HYPHENATION: - case LFUN_LIGATURE_BREAK: + case LFUN_FONT_UNDERLINE: + case LFUN_FOOTNOTE_INSERT: + case LFUN_HFILL_INSERT: + case LFUN_HTML_INSERT: + case LFUN_HYPHENATION_POINT_INSERT: + case LFUN_LIGATURE_BREAK_INSERT: case LFUN_INDEX_INSERT: case LFUN_INDEX_PRINT: - case LFUN_INSERT_LABEL: - case LFUN_INSET_OPTARG: - case LFUN_INSERT_BIBITEM: - case LFUN_INSERT_LINE: - case LFUN_INSERT_PAGEBREAK: + case LFUN_LABEL_INSERT: + case LFUN_OPTIONAL_INSERT: + 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: case LFUN_LAYOUT_TABULAR: - case LFUN_INSET_MARGINAL: + case LFUN_MARGINALNOTE_INSERT: case LFUN_MATH_DISPLAY: - case LFUN_INSERT_MATH: - case LFUN_INSERT_MATRIX: + case LFUN_MATH_INSERT: + case LFUN_MATH_MATRIX: case LFUN_MATH_MODE: - case LFUN_MENU_OPEN_BY_NAME: - case LFUN_MENU_SEPARATOR: - case LFUN_INSERT_BRANCH: - case LFUN_INSERT_CHARSTYLE: - case LFUN_INSERT_NOTE: - case LFUN_INSERT_BOX: - case LFUN_GOTONOTE: + case LFUN_MENU_OPEN: + case LFUN_MENU_SEPARATOR_INSERT: + case LFUN_BRANCH_INSERT: + case LFUN_CHARSTYLE_INSERT: + case LFUN_NOTE_INSERT: + case LFUN_BOX_INSERT: + case LFUN_NOTE_NEXT: case LFUN_PARAGRAPH_SPACING: - case LFUN_QUOTE: case LFUN_LABEL_GOTO: - case LFUN_REFERENCE_GOTO: + case LFUN_REFERENCE_NEXT: case LFUN_SPACE_INSERT: - case LFUN_GOTOFILEROW: - case LFUN_NOTIFY: - case LFUN_SETXY: + case LFUN_SERVER_GOTO_FILE_ROW: + case LFUN_SERVER_NOTIFY: + case LFUN_SERVER_SET_XY: case LFUN_TABULAR_INSERT: case LFUN_TOC_INSERT: - case LFUN_URL: + case LFUN_URL_INSERT: case LFUN_FLOAT_LIST: case LFUN_INSET_INSERT: - case LFUN_PARAGRAPH_APPLY: + 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; + case LFUN_QUOTE_INSERT: case LFUN_INSET_MODIFY: case LFUN_PASTE: - case LFUN_PASTESELECTION: + case LFUN_CLIPBOARD_PASTE: + case LFUN_PRIMARY_SELECTION_PASTE: status.enabled(true); return true; // this one is difficult to get right. As a half-baked // solution, we consider only the first action of the sequence - case LFUN_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); @@ -396,6 +386,7 @@ bool InsetERT::getStatus(LCursor & cur, FuncRequest const & cmd, void InsetERT::setButtonLabel() { + // FIXME UNICODE setLabel(isOpen() ? _("ERT") : getNewLabel(_("ERT"))); } @@ -406,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; } @@ -485,3 +478,6 @@ InsetERTMailer::params2string(InsetCollapsable::CollapseStatus status) data << name_ << ' ' << status; return data.str(); } + + +} // namespace lyx