/**************************************************************
 *
 * 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.
 *
 *************************************************************/

#include "glob.hrc"
#include "slideshow.hrc"

Menu RID_SLIDESHOW_CONTEXTMENU
{
	ItemList =
	{
		MenuItem
		{
			Identifier = CM_NEXT_SLIDE ;
			Text [ en-US ] = "~Next" ;
		};
		MenuItem
		{
			Identifier = CM_PREV_SLIDE ;
			Text [ en-US ] = "~Previous" ;
   		};
		MenuItem
		{
			Identifier = CM_GOTO ;
			Text [ en-US ] = "~Go to Slide" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = CM_FIRST_SLIDE ;
						Text [ en-US ] = "~First Slide" ;
					};
					MenuItem
					{
						Identifier = CM_LAST_SLIDE ;
						Text [ en-US ] = "~Last Slide" ;
					};
					MenuItem
					{
						Separator = TRUE ;
					};
				};
			};
		};
		MenuItem
		{
			Separator = TRUE ;
		};
		MenuItem
		{
			Identifier = CM_PEN_MODE ;
			Text [ en-US ] = "Mouse pointer as ~Pen" ;
		};
		MenuItem
		{
			Identifier = CM_WIDTH_PEN ;
			Text [ en-US ] = "~Pen Width" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = CM_WIDTH_PEN_VERY_THIN ;
						Text [ en-US ] = "~Very thin" ;
					};
					MenuItem
					{
						Identifier = CM_WIDTH_PEN_THIN ;
						Text [ en-US ] = "~Thin" ;
					};
					MenuItem
					{
						Identifier = CM_WIDTH_PEN_NORMAL ;
						Text [ en-US ] = "~Normal" ;
					};
					MenuItem
					{
						Identifier = CM_WIDTH_PEN_THICK ;
						Text [ en-US ] = "~Thick" ;
					};
					MenuItem
					{
						Identifier = CM_WIDTH_PEN_VERY_THICK ;
						Text [ en-US ] = "~Very thick" ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = CM_COLOR_PEN ;
			Text [ en-US ] = "~Change pen Color..." ;
		};
		MenuItem
		{
			Identifier = CM_ERASE_ALLINK ;
			Text [ en-US ] = "~Erase all ink on Slide" ;
		};
		MenuItem
		{
			Separator = TRUE ;
		};
		MenuItem
		{
			Identifier = CM_SCREEN ;
			Text [ en-US ] = "~Screen" ;

			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = CM_SCREEN_BLACK ;
						Text [ en-US ] = "~Black" ;
					};
					MenuItem
					{
						Identifier = CM_SCREEN_WHITE ;
						Text [ en-US ] = "~White" ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = CM_ENDSHOW ;
			Text [ en-US ] = "~End Show" ;
		};
	};
};

// ********************************************************************** EOF
