/**************************************************************
 * 
 * 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 ImpressEditView : DrawView
[
	uuid ( "661B07E0-2FB4-11CF-89CA-008029E4B0B1" ) ;
]
{
	SID_MODIFYPAGE // ole : no, status : play rec
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_ASSIGN_LAYOUT
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_ANIMATION_OBJECTS // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_ANIMATION_EFFECTS // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_CUSTOM_ANIMATION_PANEL // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_SLIDE_TRANSITIONS_PANEL // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_SLIDE_TRANSITIONS_PANEL // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_REHEARSE_TIMINGS // ole : no, status : ?
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_PRESENTATION // ole : no, status : ?
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_PRESENTATION_END // ole : no, status : ?
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
    SID_PRESENTATION_MINIMIZER
    [
        ExecMethod = FuSupport ;
        StateMethod = GetMenuState ;
    ]
	SID_CLEAR_UNDO_STACK // ole : no, status : ?
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_STYLE_FAMILY5 // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetAttrState ;
		Export = FALSE ;
	]
	SID_ANIMATOR_INIT // ole : no, status : ?
	[
		ExecMethod = ExecAnimationWin ;
		StateMethod = GetAnimationWinState ;
	]
	SID_ANIMATOR_ADD // ole : no, status : ?
	[
		ExecMethod = ExecAnimationWin ;
		StateMethod = GetAnimationWinState ;
	]
	SID_ANIMATOR_CREATE // ole : no, status : ?
	[
		ExecMethod = ExecAnimationWin ;
		StateMethod = GetAnimationWinState ;
	]
	SID_ANIMATOR_STATE // ole : no, status : ?
	[
		ExecMethod = ExecAnimationWin ;
		StateMethod = GetAnimationWinState ;
	]
	SID_NAVIGATOR_PEN // ole : no, status : ?
	[
		ExecMethod = ExecNavigatorWin ;
		StateMethod = GetNavigatorWinState ;
	]
	SID_PRESENTATION_DLG
	[
		ExecMethod = FuTemporary ;
	]
	SID_CUSTOMSHOW_DLG
	[
		ExecMethod = FuTemporary ;
	]
	SID_EXPAND_PAGE // ole : no, status : play rec
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
		ReadOnlyDoc = FALSE;
	]
	SID_SUMMARY_PAGE // ole : no, status : play rec
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_SLIDE_MASTERPAGE // ole : no, status : play rec
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_NOTES_MASTERPAGE // ole : no, status : play rec
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_HANDOUT_MASTERPAGE // ole : no, status : play rec
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_TITLE_MASTERPAGE // deprecated, to be removed see issue #i35731#
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]
	SID_STYLE_FAMILY
	[
		ExecMethod = FuSupport ;
		StateMethod = GetMenuState ;
	]

	SID_SEARCH_OPTIONS // ole : ?, status : ?
	[
		ExecMethod = Execute ;
		StateMethod = GetState ;
		GroupId = GID_DOCUMENT ;
		Cachable ;
	]
	SID_SEARCH_ITEM // ole : ?, status : ?
	[
		ExecMethod = Execute ;
		StateMethod = GetState ;
	]
    SID_LAYER_DIALOG_WIN // ole : no, status : ?
	[
		ExecMethod = FuTemporary ;
		StateMethod = GetMenuState ;
	]
	SID_SHOW_POSTIT
	[
		ExecMethod = ExecuteAnnotation;
		StateMethod = GetAnnotationState;
	]
	SID_INSERT_POSTIT
	[
		ExecMethod = ExecuteAnnotation;
		StateMethod = GetAnnotationState;
	]
	SID_REPLYTO_POSTIT
	[
		ExecMethod = ExecuteAnnotation;
		StateMethod = GetAnnotationState;
	]
	SID_DELETE_POSTIT
	[
		ExecMethod = ExecuteAnnotation;
		StateMethod = GetAnnotationState;
	]
	SID_DELETEALL_POSTIT
	[
		ExecMethod = ExecuteAnnotation;
		StateMethod = GetAnnotationState;
	]
	SID_PREVIOUS_POSTIT
	[
		ExecMethod = ExecuteAnnotation;
		StateMethod = GetAnnotationState;
	]
	SID_NEXT_POSTIT
	[
		ExecMethod = ExecuteAnnotation;
		StateMethod = GetAnnotationState;
	]	
	SID_DELETEALLBYAUTHOR_POSTIT
	[
		ExecMethod = ExecuteAnnotation;
		StateMethod = GetAnnotationState;
	]	
}

shell DrawViewShell
{
	import ImpressEditView[Automation];
}


shell PresentationViewShell
{
	import ImpressEditView[Automation];
}


shell PreviewViewShell
{
	import ImpressEditView[Automation];
}
