/**************************************************************
 *
 * 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 "condfrmt.hrc"
ModelessDialog RID_SCDLG_CONDFORMAT
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 316, 161 ) ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	HelpId = HID_SCDLG_CONDFORMAT ;
	Hide = TRUE ;
	CheckBox CBX_COND1
	{
		HelpID = "sc:CheckBox:RID_SCDLG_CONDFORMAT:CBX_COND1" ;
		Pos = MAP_APPFONT ( 6, 6 ) ;
		Size = MAP_APPFONT ( 248, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Condition ~1" ;
	};
	ListBox LB_COND1_1
	{
		HelpID = "sc:ListBox:RID_SCDLG_CONDFORMAT:LB_COND1_1" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 6, 19 ) ;
		Size = MAP_APPFONT ( 48, 40 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		StringList [ en-US ] =
		{
			< "Cell value is" ; Default ;	> ;
			< "Formula is" ; Default ;		> ;
		};
	};
	ListBox LB_COND1_2
	{
		HelpID = "sc:ListBox:RID_SCDLG_CONDFORMAT:LB_COND1_2" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 58, 19 ) ;
		Size = MAP_APPFONT ( 62, 88 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		StringList [ en-US ] =
		{
			< "equal to" ; Default ;					> ;
			< "less than" ; Default ;					> ;
			< "greater than" ; Default ;				> ;
			< "less than or equal to" ; Default ;		> ;
			< "greater than or equal to" ; Default ;	> ;
			< "not equal to" ; Default ;				> ;
			< "between" ; Default ;						> ;
			< "not between" ; Default ;					> ;
		};
	};
	Edit EDT_COND1_1
	{
		HelpID = "sc:Edit:RID_SCDLG_CONDFORMAT:EDT_COND1_1" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 124, 19 ) ;
		Size = MAP_APPFONT ( 41, 12 ) ;
		TabStop = TRUE ;
	};
	ImageButton RB_COND1_1
	{
		HelpID = "sc:ImageButton:RID_SCDLG_CONDFORMAT:RB_COND1_1" ;
		Pos = MAP_APPFONT ( 167, 18 ) ;
		Size = MAP_APPFONT ( 13, 15 ) ;
		TabStop = FALSE ;
		QuickHelpText [ en-US ] = "Shrink" ;
	};
	FixedText FT_COND1_AND
	{
		Pos = MAP_APPFONT ( 181, 21 ) ;
		Size = MAP_APPFONT ( 16, 8 ) ;
		Center = TRUE ;
		Text [ en-US ] = "and" ;
	};
	Edit EDT_COND1_2
	{
		HelpID = "sc:Edit:RID_SCDLG_CONDFORMAT:EDT_COND1_2" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 199, 19 ) ;
		Size = MAP_APPFONT ( 41, 12 ) ;
		TabStop = TRUE ;
	};
	ImageButton RB_COND1_2
	{
		HelpID = "sc:ImageButton:RID_SCDLG_CONDFORMAT:RB_COND1_2" ;
		Pos = MAP_APPFONT ( 242, 18 ) ;
		Size = MAP_APPFONT ( 13, 15 ) ;
		TabStop = FALSE ;
		QuickHelpText [ en-US ] = "Shrink" ;
	};
	FixedText FT_COND1_TEMPLATE
	{
		Pos = MAP_APPFONT ( 6, 37 ) ;
		Size = MAP_APPFONT ( 46, 8 ) ;
		Right = TRUE ;
		Text [ en-US ] = "~Cell Style" ;
	};
	ListBox LB_COND1_TEMPLATE
	{
		HelpID = "sc:ListBox:RID_SCDLG_CONDFORMAT:LB_COND1_TEMPLATE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 58, 35 ) ;
		Size = MAP_APPFONT ( 62, 80 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		Sort = TRUE ;
	};
	PushButton BTN_COND1_NEW
	{
		HelpID = "sc:PushButton:RID_SCDLG_CONDFORMAT:BTN_COND1_NEW" ;
		Pos = MAP_APPFONT ( 124, 34 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~New Style..." ;
	};
	FixedLine FL_SEP1
	{
		Pos = MAP_APPFONT ( 6, 51 ) ;
		Size = MAP_APPFONT ( 248, 8 ) ;
	};
	CheckBox CBX_COND2
	{
		HelpID = "sc:CheckBox:RID_SCDLG_CONDFORMAT:CBX_COND2" ;
		Pos = MAP_APPFONT ( 6, 60 ) ;
		Size = MAP_APPFONT ( 248, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Condition ~2" ;
	};
	ListBox LB_COND2_1
	{
		HelpID = "sc:ListBox:RID_SCDLG_CONDFORMAT:LB_COND2_1" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 6, 73 ) ;
		Size = MAP_APPFONT ( 48, 40 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		StringList [ en-US ] =
		{
			< "Cell value is" ; Default ;	> ;
			< "Formula is" ; Default ;		> ;
		};
	};
	ListBox LB_COND2_2
	{
		HelpID = "sc:ListBox:RID_SCDLG_CONDFORMAT:LB_COND2_2" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 58, 73 ) ;
		Size = MAP_APPFONT ( 62, 88 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		StringList [ en-US ] =
		{
			< "equal to" ; Default ;					> ;
			< "less than" ; Default ;					> ;
			< "greater than" ; Default ;				> ;
			< "less than or equal to" ; Default ;		> ;
			< "greater than or equal to" ; Default ;	> ;
			< "not equal to" ; Default ;				> ;
			< "between" ; Default ;						> ;
			< "not between" ; Default ;					> ;
		};
	};
	Edit EDT_COND2_1
	{
		HelpID = "sc:Edit:RID_SCDLG_CONDFORMAT:EDT_COND2_1" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 124, 73 ) ;
		Size = MAP_APPFONT ( 41, 12 ) ;
		TabStop = TRUE ;
	};
	ImageButton RB_COND2_1
	{
		HelpID = "sc:ImageButton:RID_SCDLG_CONDFORMAT:RB_COND2_1" ;
		Pos = MAP_APPFONT ( 167, 72 ) ;
		Size = MAP_APPFONT ( 13, 15 ) ;
		TabStop = FALSE ;
		QuickHelpText [ en-US ] = "Shrink" ;
	};
	FixedText FT_COND2_AND
	{
		Pos = MAP_APPFONT ( 181, 75 ) ;
		Size = MAP_APPFONT ( 16, 8 ) ;
		Center = TRUE ;
		Text [ en-US ] = "and" ;
	};
	Edit EDT_COND2_2
	{
		HelpID = "sc:Edit:RID_SCDLG_CONDFORMAT:EDT_COND2_2" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 199, 73 ) ;
		Size = MAP_APPFONT ( 41, 12 ) ;
		TabStop = TRUE ;
	};
	ImageButton RB_COND2_2
	{
		HelpID = "sc:ImageButton:RID_SCDLG_CONDFORMAT:RB_COND2_2" ;
		Pos = MAP_APPFONT ( 242, 72 ) ;
		Size = MAP_APPFONT ( 13, 15 ) ;
		TabStop = FALSE ;
		QuickHelpText [ en-US ] = "Shrink" ;
	};
	FixedText FT_COND2_TEMPLATE
	{
		Pos = MAP_APPFONT ( 6, 91 ) ;
		Size = MAP_APPFONT ( 46, 8 ) ;
		Right = TRUE ;
		Text [ en-US ] = "C~ell Style" ;
	};
	ListBox LB_COND2_TEMPLATE
	{
		HelpID = "sc:ListBox:RID_SCDLG_CONDFORMAT:LB_COND2_TEMPLATE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 58, 89 ) ;
		Size = MAP_APPFONT ( 62, 80 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		Sort = TRUE ;
	};
	PushButton BTN_COND2_NEW
	{
		HelpID = "sc:PushButton:RID_SCDLG_CONDFORMAT:BTN_COND2_NEW" ;
		Pos = MAP_APPFONT ( 124, 88 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Ne~w Style..." ;
	};
	FixedLine FL_SEP2
	{
		Pos = MAP_APPFONT ( 6, 105 ) ;
		Size = MAP_APPFONT ( 248, 8 ) ;
	};
	CheckBox CBX_COND3
	{
		HelpID = "sc:CheckBox:RID_SCDLG_CONDFORMAT:CBX_COND3" ;
		Pos = MAP_APPFONT ( 6, 114 ) ;
		Size = MAP_APPFONT ( 248, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Condition ~3" ;
	};
	ListBox LB_COND3_1
	{
		HelpID = "sc:ListBox:RID_SCDLG_CONDFORMAT:LB_COND3_1" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 6, 127 ) ;
		Size = MAP_APPFONT ( 48, 40 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		StringList [ en-US ] =
		{
			< "Cell value is" ; Default ;	> ;
			< "Formula is" ; Default ;		> ;
		};
	};
	ListBox LB_COND3_2
	{
		HelpID = "sc:ListBox:RID_SCDLG_CONDFORMAT:LB_COND3_2" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 58, 127 ) ;
		Size = MAP_APPFONT ( 62, 88 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		StringList [ en-US ] =
		{
			< "equal to" ; Default ;					> ;
			< "less than" ; Default ;					> ;
			< "greater than" ; Default ;				> ;
			< "less than or equal to" ; Default ;		> ;
			< "greater than or equal to" ; Default ;	> ;
			< "not equal to" ; Default ;				> ;
			< "between" ; Default ;						> ;
			< "not between" ; Default ;					> ;
		};
	};
	Edit EDT_COND3_1
	{
		HelpID = "sc:Edit:RID_SCDLG_CONDFORMAT:EDT_COND3_1" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 124, 127 ) ;
		Size = MAP_APPFONT ( 41, 12 ) ;
		TabStop = TRUE ;
	};
	ImageButton RB_COND3_1
	{
		HelpID = "sc:ImageButton:RID_SCDLG_CONDFORMAT:RB_COND3_1" ;
		Pos = MAP_APPFONT ( 167, 126 ) ;
		Size = MAP_APPFONT ( 13, 15 ) ;
		TabStop = FALSE ;
		QuickHelpText [ en-US ] = "Shrink" ;
	};
	FixedText FT_COND3_AND
	{
		Pos = MAP_APPFONT ( 181, 129 ) ;
		Size = MAP_APPFONT ( 16, 8 ) ;
		Center = TRUE ;
		Text [ en-US ] = "and" ;
	};
	Edit EDT_COND3_2
	{
		HelpID = "sc:Edit:RID_SCDLG_CONDFORMAT:EDT_COND3_2" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 199, 127 ) ;
		Size = MAP_APPFONT ( 41, 12 ) ;
		TabStop = TRUE ;
	};
	ImageButton RB_COND3_2
	{
		HelpID = "sc:ImageButton:RID_SCDLG_CONDFORMAT:RB_COND3_2" ;
		Pos = MAP_APPFONT ( 242, 126 ) ;
		Size = MAP_APPFONT ( 13, 15 ) ;
		TabStop = FALSE ;
		QuickHelpText [ en-US ] = "Shrink" ;
	};
	FixedText FT_COND3_TEMPLATE
	{
		Pos = MAP_APPFONT ( 6, 145 ) ;
		Size = MAP_APPFONT ( 46, 8 ) ;
		Right = TRUE ;
		Text [ en-US ] = "Ce~ll Style" ;
	};
	ListBox LB_COND3_TEMPLATE
	{
		HelpID = "sc:ListBox:RID_SCDLG_CONDFORMAT:LB_COND3_TEMPLATE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 58, 143 ) ;
		Size = MAP_APPFONT ( 62, 80 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		Sort = TRUE ;
	};
	PushButton BTN_COND3_NEW
	{
		HelpID = "sc:PushButton:RID_SCDLG_CONDFORMAT:BTN_COND3_NEW" ;
		Pos = MAP_APPFONT ( 124, 142 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "New ~Style..." ;
	};
	OKButton BTN_OK
	{
		Pos = MAP_APPFONT ( 260, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton BTN_CANCEL
	{
		Pos = MAP_APPFONT ( 260, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	HelpButton BTN_HELP
	{
		Pos = MAP_APPFONT ( 260, 43 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	Text [ en-US ] = "Conditional Formatting" ;
};

String LABEL_FORMARTTING_CONDITIONS
{
	Text [ en-US ] = "Formatting Conditions" ;
};
String LABEL_CONDITIONS
{
	Text [ en-US ] = "Conditions" ;
};
String LABEL_CONDITION_VALUE
{
	Text [ en-US ] = "Condition Value" ;
};

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