/**************************************************************
 *
 * 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 "svx/fmresids.hrc"
#include <svx/svxids.hrc>
#include "globlmn.hrc"
#include "fmhelp.hrc"
#include <svx/svxcommands.h>

Menu RID_SVXMNU_ROWS
{
	ItemList =
	{
		MenuItem
		{
			Identifier = SID_FM_DELETEROWS ;
			HelpId = HID_FM_DELETEROWS ;
			Text [ en-US ] = "Delete Rows" ;
		};
		MenuItem
		{
			Identifier = SID_FM_RECORD_SAVE ;
			HelpId = CMD_SID_FM_RECORD_SAVE ;
			Text [ en-US ] = "Save Record" ;
		};
		MenuItem
		{
			Identifier = SID_FM_RECORD_UNDO ;
			HelpId = CMD_SID_FM_RECORD_UNDO ;
			Text [ en-US ] = "Undo: Data entry" ;
		};
	};
};
Menu RID_SVXMNU_COLS
{
	ItemList =
	{
		MenuItem
		{
			Identifier = SID_FM_INSERTCOL ;
			HelpId = HID_FM_INSERTCOL ;
			Text [ en-US ] = "Insert ~Column" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_FM_EDIT ;
						HelpId = CMD_SID_FM_EDIT ;
						Text [ en-US ] = "Text Box" ;
					};
					MenuItem
					{
						Identifier = SID_FM_CHECKBOX ;
						HelpId = CMD_SID_FM_CHECKBOX ;
						Text [ en-US ] = "Check Box" ;
					};
					MenuItem
					{
						Identifier = SID_FM_COMBOBOX ;
						HelpId = CMD_SID_FM_COMBOBOX ;
						Text [ en-US ] = "Combo Box" ;
					};
					MenuItem
					{
						Identifier = SID_FM_LISTBOX ;
						HelpId = CMD_SID_FM_LISTBOX ;
						Text [ en-US ] = "List Box" ;
					};
					MenuItem
					{
						Identifier = SID_FM_DATEFIELD ;
						HelpId = CMD_SID_FM_DATEFIELD ;
						Text [ en-US ] = "Date Field" ;
					};
					MenuItem
					{
						Identifier = SID_FM_TIMEFIELD ;
						HelpId = CMD_SID_FM_TIMEFIELD ;
						Text [ en-US ] = "Time Field" ;
					};
					MenuItem
					{
						Identifier = SID_FM_NUMERICFIELD ;
						HelpId = CMD_SID_FM_NUMERICFIELD ;
						Text [ en-US ] = "Numeric Field" ;
					};
					MenuItem
					{
						Identifier = SID_FM_CURRENCYFIELD ;
						HelpId = CMD_SID_FM_CURRENCYFIELD ;
						Text [ en-US ] = "Currency Field" ;
					};
					MenuItem
					{
						Identifier = SID_FM_PATTERNFIELD ;
						HelpId = CMD_SID_FM_PATTERNFIELD ;
						Text [ en-US ] = "Pattern Field" ;
					};
					MenuItem
					{
						Identifier = SID_FM_FORMATTEDFIELD ;
						HelpId = CMD_SID_FM_FORMATTEDFIELD ;
						Text [ en-US ] = "Formatted Field" ;
					};
					MenuItem
					{
						// this is a dummy which is never used herein but for copy to newly built menus
						Identifier = SID_FM_TWOFIELDS_DATE_N_TIME ;
						HelpId = HID_CONTROLS_DATE_N_TIME ;
						Text [ en-US ] = "Date and Time Field" ;
						Disable = True ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = SID_FM_CHANGECOL ;
			HelpId = HID_FM_CHANGECOL ;
			Text [ en-US ] = "~Replace with" ;
		};
		MenuItem
		{
			Identifier = SID_FM_DELETECOL ;
			HelpId = HID_FM_DELETECOL ;
			Text [ en-US ] = "Delete Column" ;
		};
		MenuItem
		{
			Identifier = SID_FM_HIDECOL ;
			HelpId = HID_FM_HIDECOL ;
			Text [ en-US ] = "~Hide Column" ;
		};
		MenuItem
		{
			Identifier = SID_FM_SHOWCOLS ;
			HelpId = HID_FM_SHOWCOLS ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_FM_SHOWCOLS_MORE ;
						HelpId = HID_FM_SHOWCOLS_MORE ;
						Text [ en-US ] = "~More..." ;
					};
					MenuItem
					{
						Separator = TRUE ;
					};
					MenuItem
					{
						Identifier = SID_FM_SHOWALLCOLS ;
						HelpId = HID_FM_SHOWALLCOLS ;
						Text [ en-US ] = "~All" ;
					};
				};
			};
			Text [ en-US ] = "~Show Columns" ;
		};
		MenuItem
		{
			Identifier = SID_FM_SHOW_PROPERTY_BROWSER ;
			HelpId = CMD_SID_FM_SHOW_PROPERTY_BROWSER ;
			Text [ en-US ] = "Column..." ;
		};
	};
};

Menu RID_SVXMNU_CELL
{
	ItemList =
	{
		MenuItem
		{
			ITEM_EDIT_COPY
		};
	};
};

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