/*
 * This file is part of the LibreOffice project.
 *
 * 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/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */

interface TextDrawText
{
    SID_SELECTALL  // api:
    [
        ExecMethod = ExecDraw ;
        StateMethod = NoState ;
    ]

    SID_CUT  // api:
    [
        ExecMethod = ExecClpbrd ;
        StateMethod = StateClpbrd ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_COPY // api:
    [
        ExecMethod = ExecClpbrd ;
        StateMethod = StateClpbrd ;
    ]

    SID_PASTE   // api:
    [
        ExecMethod = ExecClpbrd ;
        StateMethod = StateClpbrd ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_PASTE_UNFORMATTED  // api:
    [
        ExecMethod = ExecClpbrd ;
        StateMethod = StateClpbrd ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_PASTE_SPECIAL  // api:
    [
        ExecMethod = ExecClpbrd ;
        StateMethod = StateClpbrd ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_CLIPBOARD_FORMAT_ITEMS  // api:
    [
        ExecMethod = ExecClpbrd ;
        StateMethod = StateClpbrd ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    FN_ESCAPE // api:
    [
        ExecMethod = ExecDraw ;
    ]

    SID_UNDO // api:
    [
        ExecMethod = ExecUndo ;
        StateMethod = StateUndo ;

                ToolBoxConfig , MenuConfig , AccelConfig;
    ]

    SID_REDO // api:
    [
        ExecMethod = ExecUndo ;
        StateMethod = StateUndo ;
    ]

    SID_REPEAT // api:
    [
        ExecMethod = ExecUndo ;
        StateMethod = StateUndo ;
    ]
    SID_GETUNDOSTRINGS
    [
        StateMethod = StateUndo ;
    ]

    SID_GETREDOSTRINGS
    [
        StateMethod = StateUndo ;
    ]

    FN_FORMAT_RESET  // api:
    [
        ExecMethod = ExecDraw ;
        StateMethod = NoState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_CHARMAP // api:
    [
        ExecMethod = ExecDraw ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_EMOJI_CONTROL
    [
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_CHARMAP_CONTROL
    [
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    FN_INSERT_STRING
    [
            ExecMethod = ExecDraw ;
            StateMethod = NoState ;
            DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    FN_INSERT_SOFT_HYPHEN // status(final|play)
        [
                ExecMethod = ExecDraw ;
                StateMethod = NoState ;
                DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
        ]
        FN_INSERT_HARDHYPHEN // status()
        [
                ExecMethod = ExecDraw ;
                StateMethod = NoState ;
                DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
        ]
        FN_INSERT_HARD_SPACE // status(final|play)
        [
                ExecMethod = ExecDraw ;
                StateMethod = NoState ;
                DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
        ]
        FN_INSERT_NNBSP // status(final|play)
        [
                ExecMethod = ExecDraw ;
                StateMethod = NoState ;
                DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
        ]
    SID_INSERT_RLM
    [
                ExecMethod = ExecDraw ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_INSERT_LRM
    [
        ExecMethod = ExecDraw ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_INSERT_ZWSP
    [
        ExecMethod = ExecDraw ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_INSERT_ZWNBSP
    [
        ExecMethod = ExecDraw ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_WEIGHT // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_POSTURE // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_UNDERLINE // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_OVERLINE // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_CONTOUR
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_SHADOWED
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_STRIKEOUT
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_HANGING_INDENT
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
    ]

    SID_ATTR_PARA_LRSPACE  //for indent
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
    ]

    SID_ATTR_PARA_LEFTSPACE
    [
        StateMethod = GetState ;
    ]

    SID_ATTR_PARA_RIGHTSPACE
    [
        StateMethod = GetState ;
    ]

    SID_ATTR_PARA_FIRSTLINESPACE
    [
        StateMethod = GetState ;
    ]

    SID_PARASPACE_INCREASE
    [
        ExecMethod = Execute;
        StateMethod = GetState;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_PARASPACE_DECREASE
    [
        ExecMethod = Execute;
        StateMethod = GetState;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_PARA_LINESPACE // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
    ]

    SID_ATTR_PARA_ULSPACE
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
    ]

    SID_ATTR_PARA_BELOWSPACE
    [
        StateMethod = GetState ;
    ]

    SID_ATTR_PARA_ABOVESPACE
    [
        StateMethod = GetState ;
    ]

    SID_ATTR_PARA_ADJUST_LEFT // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_PARA_ADJUST_CENTER // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_PARA_ADJUST_RIGHT // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_PARA_ADJUST_BLOCK // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_PARA_LINESPACE_10 // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_PARA_LINESPACE_15 // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_PARA_LINESPACE_20 // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_ATTR_PARA_LEFT_TO_RIGHT
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_ATTR_PARA_RIGHT_TO_LEFT
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

        SID_TEXTDIRECTION_LEFT_TO_RIGHT
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TEXTDIRECTION_TOP_TO_BOTTOM
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_VERTICALTEXT_STATE
    [
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_CTLFONT_STATE
    [
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_CHAR_DLG  // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_CHAR_DLG_EFFECT
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_CHAR_DLG_FOR_PARAGRAPH
    [
        ExecMethod = Execute ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_PARA_DLG // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    FN_SET_SUPER_SCRIPT
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    FN_SET_SUB_SCRIPT
    [
        ExecMethod = Execute ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FONTWORK  // api:
    [
        ExecMethod = ExecFontWork ;
        StateMethod = StateFontWork ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_STYLE // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_ADJUST  // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_DISTANCE // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_START  // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_MIRROR // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_HIDEFORM   // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_OUTLINE // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_SHADOW  // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_SHDWCOLOR // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_SHDWXVAL  // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_FORMTEXT_SHDWYVAL  // api:
    [
        ExecMethod = ExecFormText ;
        StateMethod = GetFormTextState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_THESAURUS // api:
    [
        ExecMethod = ExecDrawLingu ;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

        SID_HANGUL_HANJA_CONVERSION  // api:
        [
                ExecMethod = ExecDrawLingu ;
                StateMethod = GetState ;
                DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
        ]

        SID_CHINESE_CONVERSION  // api:
        [
                ExecMethod = ExecDrawLingu ;
                StateMethod = GetState ;
                DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
        ]

    FN_DRAWTEXT_ATTR_DLG
    [
        ExecMethod = ExecDraw ;
        StateMethod = NoState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_AUTOSPELL_CHECK
    [
        ExecMethod = Execute;
        StateMethod = GetDrawTextCtrlState
    ]

    SID_SEARCH_DLG
    [
        StateMethod = StateDisableItems
    ]

    SID_HYPERLINK_SETLINK  // status()
    [
        ExecMethod = Execute ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_HYPERLINK_GETLINK // status()
    [
        StateMethod = StateInsert ;
    ]
    SID_OPEN_HYPERLINK
    [
        ExecMethod = Execute ;
        StateMethod = GetState;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_EDIT_HYPERLINK
    [
        ExecMethod = Execute ;
        StateMethod = GetState;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_REMOVE_HYPERLINK
    [
        ExecMethod = Execute ;
        StateMethod = GetState;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_COPY_HYPERLINK_LOCATION
    [
        ExecMethod = Execute ;
        StateMethod = GetState;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_SENTENCE_CASE
    [
        ExecMethod = ExecTransliteration;
        StateMethod = NoState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_TITLE_CASE
    [
        ExecMethod = ExecTransliteration;
        StateMethod = NoState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_TOGGLE_CASE
    [
        ExecMethod = ExecTransliteration;
        StateMethod = NoState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_ROTATE_CASE
    [
        ExecMethod = ExecRotateTransliteration;
        StateMethod = NoState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_UPPER
    [
        ExecMethod = ExecTransliteration;
        StateMethod = NoState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_LOWER
    [
        ExecMethod = ExecTransliteration;
        StateMethod = NoState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_HALFWIDTH
    [
        ExecMethod = ExecTransliteration;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_FULLWIDTH
    [
        ExecMethod = ExecTransliteration;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_HIRAGANA
    [
        ExecMethod = ExecTransliteration;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TRANSLITERATE_KATAKANA
    [
        ExecMethod = ExecTransliteration;
        StateMethod = GetState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_LANGUAGE_STATUS
    [
        ExecMethod = Execute;
        StateMethod = GetState;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";  // e.g. disable for read-only documents
    ]

    SID_THES
    [
        ExecMethod = Execute;
        StateMethod = GetState;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";  // e.g. disable for read-only documents
    ]

       FN_FORMAT_FOOTNOTE_DLG // status()
    [
        ExecMethod = Execute ;
    ]

    SID_OPEN_XML_FILTERSETTINGS // ole : no, status : ?
    [
        ExecMethod = Execute ;
    ]

    FN_WORDCOUNT_DIALOG
    [
        ExecMethod = Execute;
    ]

       FN_NUMBERING_OUTLINE_DLG   // status(final|play)
    [
        ExecMethod = Execute ;
    ]

    SID_INSERT_GRAPHIC
    [
        StateMethod = StateDisableItems ;
    ]
    SID_TWAIN_SELECT
    [
        StateMethod = StateDisableItems ;
    ]

    SID_TWAIN_TRANSFER
    [
        StateMethod = StateDisableItems ;
    ]

    SID_TABLE_VERT_NONE
    [
        ExecMethod = ExecDraw ;
        StateMethod = GetStatePropPanelAttr ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TABLE_VERT_CENTER
    [
        ExecMethod = ExecDraw ;
        StateMethod = GetStatePropPanelAttr ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_TABLE_VERT_BOTTOM
    [
        ExecMethod = ExecDraw ;
        StateMethod = GetStatePropPanelAttr ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    FN_GROW_FONT_SIZE
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    FN_SHRINK_FONT_SIZE
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
}

interface TextDrawFont
{
    SID_ATTR_CHAR_FONT // status()
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_FONTHEIGHT // status()
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_COLOR // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_BACK_COLOR // api:
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_WORDLINEMODE // status(final|play)
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_ATTR_CHAR_RELIEF
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_ATTR_CHAR_LANGUAGE // status(final|play)
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_ATTR_CHAR_KERNING // status(final|play)
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_ATTR_CHAR_AUTOKERN // status(final|play)
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
    SID_ATTR_CHAR_ESCAPEMENT // status(final|play)
    [
        ExecMethod = Execute ;
        StateMethod = GetDrawTextCtrlState ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]

    SID_ATTR_CHAR_SCALEWIDTH // status()
    [
        ExecMethod = Execute ;
        DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
    ]
}

shell SwDrawTextShell
{
        import TextDrawText;
        import TextDrawFont ".DrawFont";
}