editor/nsIPlaintextEditor.idl
author Narcis Beleuzu <nbeleuzu@mozilla.com>
Fri, 15 Dec 2017 02:16:50 +0200
changeset 396515 d0d709880f192e88d1601b657cd562a6fe56d4aa
parent 373562 cddc1b05b8760e76c0621c402047adaa553be468
child 404656 690c1b3c488085627fd49d7d77ea27aa90e7f324
permissions -rw-r--r--
Backed out 7 changesets (bug 1377007) for web platform reftests failures on CSS2/borders. r=backout Backed out changeset c30bc5d5adbc (bug 1377007) Backed out changeset 33fdf9e531e2 (bug 1377007) Backed out changeset 267abdb38036 (bug 1377007) Backed out changeset 4a452c3ac115 (bug 1377007) Backed out changeset e9310960c9e6 (bug 1377007) Backed out changeset 8e5e61dfbbaf (bug 1377007) Backed out changeset 9ac83e79e656 (bug 1377007)

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

[scriptable, builtinclass, uuid(b74fb158-1265-4102-91eb-edd0136b49f8)]
interface nsIPlaintextEditor : nsISupports
{

  // XXX Why aren't these in nsIEditor?
  // only plain text entry is allowed via events
  const long eEditorPlaintextMask       = 0x0001;
  // enter key and CR-LF handled specially
  const long eEditorSingleLineMask      = 0x0002;
  // text is not entered into content, only a representative character
  const long eEditorPasswordMask        = 0x0004;
  // editing events are disabled.  Editor may still accept focus.
  const long eEditorReadonlyMask        = 0x0008;
  // all events are disabled (like scrolling).  Editor will not accept focus.
  const long eEditorDisabledMask        = 0x0010;
  // text input is limited to certain character types, use mFilter
  const long eEditorFilterInputMask     = 0x0020;
  // use mail-compose editing rules
  const long eEditorMailMask            = 0x0040;
  // allow the editor to set font: monospace on the root node
  const long eEditorEnableWrapHackMask  = 0x0080;
  // bit for widgets (form elements)
  const long eEditorWidgetMask          = 0x0100;
  // this HTML editor should not create css styles
  const long eEditorNoCSSMask           = 0x0200;
  // whether HTML document specific actions are executed or not.
  // e.g., if this flag is set, the editor doesn't handle Tab key.
  // besides, anchors of HTML are not clickable.
  const long eEditorAllowInteraction    = 0x0400;
  // when this is set, the characters in password editor are always masked.
  // see bug 530367 for the detail.
  const long eEditorDontEchoPassword    = 0x0800;
  // when this flag is set, the internal direction of the editor is RTL.
  // if neither of the direction flags are set, the direction is determined
  // from the text control's content node.
  const long eEditorRightToLeft         = 0x1000;
  // when this flag is set, the internal direction of the editor is LTR.
  const long eEditorLeftToRight         = 0x2000;
  // when this flag is set, the editor's text content is not spell checked.
  const long eEditorSkipSpellCheck      = 0x4000;

  /*
   * The valid values for newlines handling.
   * Can't change the values unless we remove
   * use of the pref.
   */
  const long eNewlinesPasteIntact                = 0;
  const long eNewlinesPasteToFirst               = 1;
  const long eNewlinesReplaceWithSpaces          = 2;
  const long eNewlinesStrip                      = 3;
  const long eNewlinesReplaceWithCommas          = 4;
  const long eNewlinesStripSurroundingWhitespace = 5;

  /**
    * The length of the contents in characters.
    * XXX change this type to 'unsigned long'
    */
  readonly attribute long textLength;

  /**
    * The maximum number of characters allowed.
    *   default: -1 (unlimited).
    */
  attribute long maxTextLength;

  /** Get and set the body wrap width.
    *
    * Special values:
    *    0 = wrap to window width
    *   -1 = no wrap at all
    */
  attribute long wrapWidth;

  /**
   * Similar to the setter for wrapWidth, but just sets the editor
   * internal state without actually changing the content being edited
   * to wrap at that column.  This should only be used by callers who
   * are sure that their content is already set up correctly.
   */
  void setWrapColumn(in long aWrapColumn);

  /** Get and set newline handling.
   *
   *  Values are the constants defined above.
   */
  attribute long newlineHandling;

  /**
   * Inserts a string at the current location,
   * given by the selection.
   * If the selection is not collapsed, the selection is deleted
   * and the insertion takes place at the resulting collapsed selection.
   *
   * @param aString   the string to be inserted
   */
   void insertText(in DOMString aStringToInsert);

  /**
   * Replace existed string with a string.
   * This is fast path to replace all string when using single line control.
   *
   * @ param aString   the string to be set
   */
  [noscript] void setText(in DOMString aString);

  /**
   * Insert a line break into the content model.
   * The interpretation of a break is up to the implementation:
   * it may enter a character, split a node in the tree, etc.
   * This may be more efficient than calling InsertText with a newline.
   */
  void insertLineBreak();
};