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

Menu RID_FMEXPLORER_POPUPMENU
{
	ItemList =
	{
		MenuItem
		{
			Identifier = SID_FM_NEW ;
			HelpId = HID_FM_NEW ;
			Text [ en-US ] = "~New" ;
			SubMenu = Menu
			{
				ItemList =
				{
					MenuItem
					{
						Identifier = SID_FM_NEW_FORM ;
						HelpId = HID_FM_NEW_FORM ;
						Text [ en-US ] = "Form" ;
					};
					MenuItem
					{
						Identifier = SID_FM_NEW_HIDDEN ;
						HelpId = HID_FM_NEW_HIDDEN ;
						Text [ en-US ] = "Hidden Control" ;
					};
				};
			};
		};
		MenuItem
		{
			Identifier = SID_FM_CHANGECONTROLTYPE ;
			HelpId = CMD_SID_FM_CHANGECONTROLTYPE ;
			Text [ en-US ] = "Replace with" ;
		};
		MenuItem { ITEM_EDIT_CUT } ;
		MenuItem { ITEM_EDIT_COPY } ;
		MenuItem { ITEM_EDIT_PASTE } ;
		MenuItem
		{
			Identifier = SID_FM_DELETE ;
			HelpId = HID_FM_DELETE ;
			Text [ en-US ] = "~Delete" ;
		};
		MenuItem
		{
			Identifier = SID_FM_TAB_DIALOG ;
			HelpId = CMD_SID_FM_TAB_DIALOG ;
			Text [ en-US ] = "Tab Order..." ;
		};
		MenuItem
		{
			Identifier = SID_FM_RENAME_OBJECT ;
			HelpId = HID_FM_RENAME_OBJECT ;
			Text [ en-US ] = "~Rename" ;
		};
		MenuItem
		{
			Identifier = SID_FM_SHOW_PROPERTY_BROWSER ;
			HelpId = CMD_SID_FM_SHOW_PROPERTY_BROWSER ;
			Text [ en-US ] = "Propert~ies" ;
		};
		MenuItem
		{
			Identifier = SID_FM_OPEN_READONLY ;
			HelpId = CMD_SID_FM_OPEN_READONLY ;
			Text [ en-US ] = "Open in Design Mode" ;
		};
		MenuItem
		{
			Identifier = SID_FM_AUTOCONTROLFOCUS ;
			HelpId = CMD_SID_FM_AUTOCONTROLFOCUS ;
			Text [ en-US ] = "Automatic Control Focus" ;
		};
	};
};

Menu RID_FMSHELL_CONVERSIONMENU
{
	ItemList =
	{
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_EDIT ;
			HelpId = CMD_SID_FM_CONVERTTO_EDIT ;
			Command = ".uno:ConvertToEdit" ;
			Text [ en-US ] = "~Text Box" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_BUTTON ;
			HelpId = CMD_SID_FM_CONVERTTO_BUTTON ;
			Command = ".uno:ConvertToButton" ;
			Text [ en-US ] = "~Button" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_FIXEDTEXT ;
			HelpId = CMD_SID_FM_CONVERTTO_FIXEDTEXT ;
			Command = ".uno:ConvertToFixed" ;
			Text [ en-US ] = "La~bel field" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_GROUPBOX ;
			HelpId = CMD_SID_FM_CONVERTTO_GROUPBOX ;
			Command = ".uno:ConvertToGroup" ;
			Text [ en-US ] = "G~roup Box" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_LISTBOX ;
			HelpId = CMD_SID_FM_CONVERTTO_LISTBOX ;
			Command = ".uno:ConvertToList" ;
			Text [ en-US ] = "L~ist Box" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_CHECKBOX ;
			HelpId = CMD_SID_FM_CONVERTTO_CHECKBOX ;
			Command = ".uno:ConvertToCheckBox" ;
			Text [ en-US ] = "~Check Box" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_RADIOBUTTON ;
			HelpId = CMD_SID_FM_CONVERTTO_RADIOBUTTON ;
			Command = ".uno:ConvertToRadio" ;
			Text [ en-US ] = "~Radio Button" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_COMBOBOX ;
			HelpId = CMD_SID_FM_CONVERTTO_COMBOBOX ;
			Command = ".uno:ConvertToCombo" ;
			Text [ en-US ] = "Combo Bo~x" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_IMAGEBUTTON ;
			HelpId = CMD_SID_FM_CONVERTTO_IMAGEBUTTON ;
			Command = ".uno:ConvertToImageBtn" ;
			Text [ en-US ] = "I~mage Button" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_FILECONTROL ;
			HelpId = CMD_SID_FM_CONVERTTO_FILECONTROL ;
			Command = ".uno:ConvertToFileControl" ;
			Text [ en-US ] = "~File Selection" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_DATE ;
			HelpId = CMD_SID_FM_CONVERTTO_DATE ;
			Command = ".uno:ConvertToDate" ;
			Text [ en-US ] = "~Date Field" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_TIME ;
			HelpId = CMD_SID_FM_CONVERTTO_TIME ;
			Command = ".uno:ConvertToTime" ;
			Text [ en-US ] = "Tim~e Field" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_NUMERIC ;
			HelpId = CMD_SID_FM_CONVERTTO_NUMERIC ;
			Command = ".uno:ConvertToNumeric" ;
			Text [ en-US ] = "~Numerical Field" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_CURRENCY ;
			HelpId = CMD_SID_FM_CONVERTTO_CURRENCY ;
			Command = ".uno:ConvertToCurrency" ;
			Text [ en-US ] = "C~urrency Field" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_PATTERN ;
			HelpId = CMD_SID_FM_CONVERTTO_PATTERN ;
			Command = ".uno:ConvertToPattern" ;
			Text [ en-US ] = "~Pattern Field" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_IMAGECONTROL ;
			HelpId = CMD_SID_FM_CONVERTTO_IMAGECONTROL ;
			Command = ".uno:ConvertToImageControl" ;
			Text [ en-US ] = "Ima~ge Control" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_FORMATTED ;
			HelpId = CMD_SID_FM_CONVERTTO_FORMATTED ;
			Command = ".uno:ConvertToFormatted" ;
			Text [ en-US ] = "Fo~rmatted Field" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_SCROLLBAR ;
			HelpId = CMD_SID_FM_CONVERTTO_SCROLLBAR ;
			Command = ".uno:ConvertToScrollBar" ;
			Text [ en-US ] = "Scroll bar" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_SPINBUTTON ;
			HelpId = CMD_SID_FM_CONVERTTO_SPINBUTTON ;
			Command = ".uno:ConvertToSpinButton" ;
			Text [ en-US ] = "Spin Button" ;
		};
		MenuItem
		{
			Identifier = SID_FM_CONVERTTO_NAVIGATIONBAR ;
			HelpId = CMD_SID_FM_CONVERTTO_NAVIGATIONBAR ;
			Command = ".uno:ConvertToNavigationBar" ;
			Text [ en-US ] = "Navigation Bar" ;
		};
	};
};

#define NAVIGATOR_IMAGEIDS \
	IdList = \
	{ \
		RID_SVXIMG_BUTTON ; \
		RID_SVXIMG_RADIOBUTTON ; \
		RID_SVXIMG_CHECKBOX ; \
		RID_SVXIMG_FIXEDTEXT ; \
		RID_SVXIMG_GROUPBOX ; \
		RID_SVXIMG_EDIT ; \
		RID_SVXIMG_LISTBOX ; \
		RID_SVXIMG_COMBOBOX ; \
		RID_SVXIMG_NAVIGATIONBAR ; \
		RID_SVXIMG_CONTROL ; \
		RID_SVXIMG_FORM ; \
		RID_SVXIMG_FORMS ; \
		RID_SVXIMG_COLLAPSEDNODE ; \
		RID_SVXIMG_EXPANDEDNODE ; \
		RID_SVXIMG_IMAGEBUTTON ; \
		RID_SVXIMG_FILECONTROL ; \
		RID_SVXIMG_DATEFIELD ; \
		RID_SVXIMG_TIMEFIELD ; \
		RID_SVXIMG_NUMERICFIELD ; \
		RID_SVXIMG_CURRENCYFIELD ; \
		RID_SVXIMG_PATTERNFIELD ; \
		RID_SVXIMG_HIDDEN ; \
		RID_SVXIMG_IMAGECONTROL ; \
		RID_SVXIMG_GRID ; \
		RID_SVXIMG_FILTER ; \
		RID_SVXIMG_FORMATTEDFIELD ; \
		RID_SVXIMG_DATE_N_TIME_FIELDS ; \
		RID_SVXIMG_FIELD ; \
		RID_SVXIMG_SCROLLBAR; \
		RID_SVXIMG_SPINBUTTON; \
	}; \
	IdCount = 30

ImageList RID_SVXIMGLIST_FMEXPL
{
	Prefix = "sx" ;
	MaskColor = Color { Red = 0xff00 ; Green = 0x0000 ; Blue = 0xff00 ; } ;
	NAVIGATOR_IMAGEIDS ;
};

ImageList RID_SVXIMGLIST_FMEXPL_HC
{
	Prefix = "sxh" ;
	MaskColor = Color { Red = 0xff00 ; Green = 0x0000 ; Blue = 0xff00 ; } ;
	NAVIGATOR_IMAGEIDS ;
};

ModalDialog RID_SVXDLG_SETFORM
{
	HelpID = "svx:ModalDialog:RID_SVXDLG_SETFORM" ;
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 200, 200 ) ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	GroupBox GB_PATH
	{
		Pos = MAP_APPFONT ( 6, 149 ) ;
		Size = MAP_APPFONT ( 188, 25 ) ;
		Text [ en-US ] = "Path" ;
	};
	FixedText FT_PATH
	{
		Pos = MAP_APPFONT ( 12, 155 ) ;
		Size = MAP_APPFONT ( 156, 15 ) ;
	};
	OKButton PB_OK
	{
		Pos = MAP_APPFONT ( 6, 180 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	CancelButton PB_CANCEL
	{
		Pos = MAP_APPFONT ( 59, 180 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	HelpButton PB_HELP
	{
		Pos = MAP_APPFONT ( 123, 180 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	Text [ en-US ] = "Select form" ;
};
DockingWindow RID_SVX_FMEXPLORER
{
	HelpID = "svx:DockingWindow:RID_SVX_FMEXPLORER" ;
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 200, 200 ) ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	Text [ en-US ] = "Form Navigator" ;
};

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