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

#ifndef EXTENSIONS_PROPRESID_HRC
#include "formresid.hrc"
#endif
#ifndef _EXTENSIONS_PROPCTRLR_FORMLOCALID_HRC_
#include "formlocalid.hrc"
#endif

String RID_STR_CONFIRM_DELETE_DATA_TYPE
{
	Text [ en-US ] = "Do you want to delete the data type '#type#' from the model?\nPlease note that this will affect all controls which are bound to this data type.";
};

Resource RID_RSC_BUTTON_IMAGES
{
	Image IMG_PLUS
	{
		ImageBitmap = Bitmap{ file = "buttonplus.png"; } ;
	};
	Image IMG_MINUS
	{
		ImageBitmap = Bitmap{ file = "buttonminus.png"; } ;
	};
	Image IMG_PLUS_HC
	{
		ImageBitmap = Bitmap{ file = "buttonplus_hc.png"; } ;
	};
	Image IMG_MINUS_HC
	{
		ImageBitmap = Bitmap{ file = "buttonminus_hc.png"; } ;
	};
};

#define IMAGE_IDS \
	IdList = \
	{ \
		RID_SVXIMG_CONTROL; \
		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_URLBUTTON; \
		RID_SVXIMG_GRID; \
		RID_SVXIMG_IMAGEBUTTON; \
		RID_SVXIMG_FILECONTROL; \
		RID_SVXIMG_DATEFIELD; \
		RID_SVXIMG_TIMEFIELD; \
		RID_SVXIMG_NUMERICFIELD; \
		RID_SVXIMG_CURRENCYFIELD; \
		RID_SVXIMG_PATTERNFIELD; \
		RID_SVXIMG_IMAGECONTROL; \
		RID_SVXIMG_HIDDEN; \
		RID_SVXIMG_FORMATTEDFIELD; \
		RID_SVXIMG_FILTER; \
		RID_SVXIMG_FORMS; \
		RID_SVXIMG_FORM; \
		RID_SVXIMG_COLLAPSEDNODE; \
		RID_SVXIMG_EXPANDEDNODE; \
		RID_SVXIMG_SCROLLBAR; \
		RID_SVXIMG_SPINBUTTON; \
		RID_SVXIMG_NAVIGATIONBAR; \
	}; \
	IdCount = 29

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

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

String RID_STR_PROPTITLE_PUSHBUTTON
{
	Text [ en-US ] = "Button" ;
};
String RID_STR_PROPTITLE_RADIOBUTTON
{
	Text [ en-US ] = "Option Button" ;
};
String RID_STR_PROPTITLE_CHECKBOX
{
	Text [ en-US ] = "Check Box" ;
};
String RID_STR_PROPTITLE_FIXEDTEXT
{
	Text [ en-US ] = "Label Field" ;
};
String RID_STR_PROPTITLE_GROUPBOX
{
	Text [ en-US ] = "Group Box" ;
};
String RID_STR_PROPTITLE_EDIT
{
	Text [ en-US ] = "Text Box" ;
};
String RID_STR_PROPTITLE_FORMATTED
{
	Text [ en-US ] = "Formatted Field" ;
};
String RID_STR_PROPTITLE_LISTBOX
{
	Text [ en-US ] = "List Box" ;
};
String RID_STR_PROPTITLE_COMBOBOX
{
	Text [ en-US ] = "Combo Box" ;
};
String RID_STR_PROPTITLE_IMAGEBUTTON
{
	Text [ en-US ] = "Image Button" ;
};
String RID_STR_PROPTITLE_HIDDENCONTROL
{
	Text [ en-US ] = "Hidden Control" ;
};
String RID_STR_PROPTITLE_UNKNOWNCONTROL
{
	Text [ en-US ] = "Control (unknown type)" ;
};
String RID_STR_PROPTITLE_IMAGECONTROL
{
	Text [ en-US ] = "Image Control" ;
};
String RID_STR_PROPTITLE_FILECONTROL
{
	Text [ en-US ] = "File Selection" ;
};
String RID_STR_PROPTITLE_DATEFIELD
{
	Text [ en-US ] = "Date Field" ;
};
String RID_STR_PROPTITLE_TIMEFIELD
{
	Text [ en-US ] = "Time Field" ;
};
String RID_STR_PROPTITLE_NUMERICFIELD
{
	Text [ en-US ] = "Numeric Field" ;
};
String RID_STR_PROPTITLE_CURRENCYFIELD
{
	Text [ en-US ] = "Currency Field" ;
};
String RID_STR_PROPTITLE_PATTERNFIELD
{
	Text [ en-US ] = "Pattern Field" ;
};
String RID_STR_PROPTITLE_DBGRID
{
	Text [ en-US ] = "Table Control" ;
};

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