/**************************************************************
 * 
 * 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
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/

 

interface StarCalc
[
	uuid ( "AB3257C0-07D7-11CF-89CB-008029E4B0B1" )
]
{
	FID_AUTOCOMPLETE	[ ExecMethod = Execute; StateMethod = GetState; ]
	SID_DETECTIVE_AUTO	[ ExecMethod = Execute; StateMethod = GetState; ]
	SID_PSZ_FUNCTION	[ ExecMethod = Execute; StateMethod = GetState; ]
	FID_FOCUS_POSWND	[ ExecMethod = Execute; ]

	SID_ATTR_METRIC		[ ExecMethod = Execute; StateMethod = GetState; ]

	SID_AUTOSPELL_CHECK
	[
		ExecMethod = Execute ;
		StateMethod = GetState ;
		Export = FALSE;
	]

	SID_ATTR_LANGUAGE
	[
		ExecMethod = Execute;
		StateMethod = GetState;
		Export = FALSE;
	]
	SID_ATTR_CHAR_CJK_LANGUAGE
	[
		ExecMethod = Execute;
		StateMethod = GetState;
		Export = FALSE;
	]
	SID_ATTR_CHAR_CTL_LANGUAGE
	[
		ExecMethod = Execute;
		StateMethod = GetState;
		Export = FALSE;
	]

	SID_CHOOSE_DESIGN	[ ExecMethod = Execute; ]
	SID_EURO_CONVERTER	[ ExecMethod = Execute; ]


	SID_OPEN_XML_FILTERSETTINGS [ ExecMethod = Execute; ]


    SID_HANGUL_HANJA_CONVERSION [ StateMethod = HideDisabledSlots; Export = FALSE; ]
    SID_CHINESE_CONVERSION      [ StateMethod = HideDisabledSlots; Export = FALSE; ]
    SID_TRANSLITERATE_HALFWIDTH [ StateMethod = HideDisabledSlots; Export = FALSE; ]
    SID_TRANSLITERATE_FULLWIDTH [ StateMethod = HideDisabledSlots; Export = FALSE; ]
    SID_TRANSLITERATE_HIRAGANA  [ StateMethod = HideDisabledSlots; Export = FALSE; ]
    SID_TRANSLITERATE_KATAGANA  [ StateMethod = HideDisabledSlots; Export = FALSE; ]

    SID_INSERT_RLM              [ StateMethod = HideDisabledSlots; Export = FALSE; ]
    SID_INSERT_LRM              [ StateMethod = HideDisabledSlots; Export = FALSE; ]
    SID_INSERT_ZWSP             [ StateMethod = HideDisabledSlots; Export = FALSE; ]
    SID_INSERT_ZWNBSP           [ StateMethod = HideDisabledSlots; Export = FALSE; ]

}


shell ScModule
{
			import StarCalc[Automation];
}


