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

#include <svx/dialogs.hrc>
#include "srchdlg.hrc"
#include <sfx2/sfxcommands.h>

// Strings ---------------------------------------------------------------

String RID_SVXSTR_SEARCH_STYLES
{
	Text [ en-US ] = "Including Styles" ;
};
String RID_SVXSTR_SEARCH
{
	Text [ en-US ] = " (Search)" ;
};
String RID_SVXSTR_REPLACE
{
	Text [ en-US ] = " (Replace)" ;
};

// RID_SVXDLG_SEARCH -----------------------------------------------------

ModelessDialog RID_SVXDLG_SEARCH
{
	HelpId = CMD_SID_SEARCH_DLG ;
	OutputSize = TRUE ;
	Hide = TRUE ;
	SvLook = TRUE ;
	Size = MAP_APPFONT ( 200, 155 ) ;
	Text [ en-US ] = "Find & Replace" ;
	Moveable = TRUE ;
	FixedText FT_SEARCH
	{
		Pos = MAP_APPFONT ( 6, 7 ) ;
		Size = MAP_APPFONT ( 132, 8 ) ;
		Text [ en-US ] = "~Search for" ;
	};
	ComboBox ED_SEARCH
	{
		HelpID = "svx:ComboBox:RID_SVXDLG_SEARCH:ED_SEARCH" ;
		Pos = MAP_APPFONT ( 6, 18 ) ;
		Size = MAP_APPFONT ( 132, 98 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
	};
	ListBox LB_SEARCH
	{
		HelpID = "svx:ListBox:RID_SVXDLG_SEARCH:LB_SEARCH" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 6, 18 ) ;
		Size = MAP_APPFONT ( 132, 98 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		Hide = TRUE ;
		Sort = TRUE ;
	};
	FixedText FT_SEARCH_ATTR
	{
		Pos = MAP_APPFONT ( 9, 35 ) ;
		Size = MAP_APPFONT ( 129, 16 ) ;
		WordBreak = TRUE ;
		Hide = TRUE ;
	};
	FixedText FT_SEARCH_FORMATS
	{
		Pos = MAP_APPFONT ( 9, 35 ) ;
		Size = MAP_APPFONT ( 129, 16 ) ;
		WordBreak = TRUE ;
		Hide = TRUE ;
	};
	FixedText FT_REPLACE
	{
		Pos = MAP_APPFONT ( 6, 54 ) ;
		Size = MAP_APPFONT ( 132, 8 ) ;
		Text [ en-US ] = "Re~place with" ;
	};
	ComboBox ED_REPLACE
	{
		HelpID = "svx:ComboBox:RID_SVXDLG_SEARCH:ED_REPLACE" ;
		Pos = MAP_APPFONT ( 6, 65 ) ;
		Size = MAP_APPFONT ( 132, 98 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
	};
	ListBox LB_REPLACE
	{
		HelpID = "svx:ListBox:RID_SVXDLG_SEARCH:LB_REPLACE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 6, 65 ) ;
		Size = MAP_APPFONT ( 132, 98 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		Hide = TRUE ;
		Sort = TRUE ;
	};
	FixedText FT_REPLACE_ATTR
	{
		Pos = MAP_APPFONT ( 9, 82 ) ;
		Size = MAP_APPFONT ( 129, 16 ) ;
		WordBreak = TRUE ;
		Hide = TRUE ;
	};
	FixedText FT_REPLACE_FORMATS
	{
		Pos = MAP_APPFONT ( 9, 82 ) ;
		Size = MAP_APPFONT ( 129, 16 ) ;
		WordBreak = TRUE ;
		Hide = TRUE ;
	};
	PushButton BTN_SEARCH
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_SEARCH" ;
		Pos = MAP_APPFONT ( 144, 9 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "~Find" ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	PushButton BTN_SEARCH_ALL
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_SEARCH_ALL" ;
		Pos = MAP_APPFONT ( 144, 26 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "Find ~All" ;
		TabStop = TRUE ;
	};
	FixedLine FL_SEARCH_COMMAND
	{
		Pos = MAP_APPFONT ( 141, 44 ) ;
		Size = MAP_APPFONT ( 56, 8 ) ;
	};
	PushButton BTN_REPLACE
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_REPLACE" ;
		Pos = MAP_APPFONT ( 144, 56 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "~Replace" ;
		TabStop = TRUE ;
	};
	PushButton BTN_REPLACE_ALL
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_REPLACE_ALL" ;
		Pos = MAP_APPFONT ( 144, 73 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "Replace A~ll" ;
		TabStop = TRUE ;
	};
	FixedLine FL_SEARCH_COMPONENT
	{
		Pos = MAP_APPFONT ( 141, 91 ) ;
		Size = MAP_APPFONT ( 56, 8 ) ;
		Hide = TRUE ;
	};
	PushButton BTN_COMPONENT_1
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_COMPONENT_1" ;
		Pos = MAP_APPFONT ( 144, 103 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	PushButton BTN_COMPONENT_2
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_COMPONENT_2" ;
		Pos = MAP_APPFONT ( 144, 120 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	CheckBox CB_MATCH_CASE
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_MATCH_CASE" ;
		Pos = MAP_APPFONT ( 12, 101 ) ;
		Size = MAP_APPFONT ( 126, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Ma~tch case" ;
	};
	CheckBox CB_WHOLE_WORDS
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_WHOLE_WORDS" ;
		Pos = MAP_APPFONT ( 12, 114 ) ;
		Size = MAP_APPFONT ( 126, 10 ) ;
		Text [ en-US ] = "Whole wor~ds only" ;
		TabStop = TRUE ;
	};
	FixedLine FL_BUTTONS
	{
		Pos = MAP_APPFONT ( 0, 124 ) ;
		Size = MAP_APPFONT ( 200, 8 ) ;
	};
	MoreButton BTN_MORE
	{
		HelpID = "svx:MoreButton:RID_SVXDLG_SEARCH:BTN_MORE" ;
		Pos = MAP_APPFONT ( 6, 135 ) ;
		Size = MAP_APPFONT ( 65, 14 ) ;
		TabStop = TRUE ;
		MapUnit = MAP_APPFONT ;
		Delta = 174 ;
		State = FALSE ;
	};
	HelpButton BTN_HELP
	{
		Pos = MAP_APPFONT ( 88, 135 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	CancelButton BTN_CLOSE
	{
		Pos = MAP_APPFONT ( 144, 135 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "~Close" ;
		TabStop = TRUE ;
	};
	FixedLine FL_OPTIONS
	{
		Pos = MAP_APPFONT ( 6, 152 ) ;
		Size = MAP_APPFONT ( 191, 8 ) ;
		Hide = TRUE ;
	};
	CheckBox CB_SELECTIONS
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_SELECTIONS" ;
		Pos = MAP_APPFONT ( 12, 163 ) ;
		Size = MAP_APPFONT ( 126, 10 ) ;
		Text [ en-US ] = "C~urrent selection only" ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	CheckBox CB_BACKWARDS
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_BACKWARDS" ;
		Pos = MAP_APPFONT ( 12, 176 ) ;
		Size = MAP_APPFONT ( 126, 10 ) ;
		Text [ en-US ] = "Bac~kwards" ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	CheckBox CB_REGEXP
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_REGEXP" ;
		Pos = MAP_APPFONT ( 12, 189 ) ;
		Size = MAP_APPFONT ( 126, 10 ) ;
		Text [ en-US ] = "Regular e~xpressions" ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	CheckBox CB_SIMILARITY
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_SIMILARITY" ;
		Pos = MAP_APPFONT ( 12, 204 ) ;
		Size = MAP_APPFONT ( 109, 10 ) ;
		Text [ en-US ] = "S~imilarity search" ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	PushButton PB_SIMILARITY
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:PB_SIMILARITY" ;
		Pos = MAP_APPFONT ( 124, 202 ) ;
		Size = MAP_APPFONT ( 14, 14 ) ;
		Text = "~..." ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	CheckBox CB_LAYOUTS
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_LAYOUTS" ;
		Pos = MAP_APPFONT ( 12, 219 ) ;
		Size = MAP_APPFONT ( 126, 10 ) ;
		Text [ en-US ] = "Search for St~yles" ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	CheckBox CB_NOTES
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_NOTES" ;
		Pos = MAP_APPFONT ( 12, 232 ) ;
		Size = MAP_APPFONT ( 126, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Comments" ;
	};
	CheckBox CB_JAP_MATCH_FULL_HALF_WIDTH
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_JAP_MATCH_FULL_HALF_WIDTH" ;
		Pos = MAP_APPFONT ( 12, 247 ) ;
		Size = MAP_APPFONT ( 126, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Match character width" ;
		Hide = TRUE ;
	};
	CheckBox CB_JAP_SOUNDS_LIKE
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_JAP_SOUNDS_LIKE" ;
		Pos = MAP_APPFONT ( 12, 260 ) ;
		Size = MAP_APPFONT ( 109, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Sounds like (Japanese)" ;
		Hide = TRUE ;
	};
	PushButton PB_JAP_OPTIONS
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:PB_JAP_OPTIONS" ;
		Pos = MAP_APPFONT ( 124, 258 ) ;
		Size = MAP_APPFONT ( 14, 14 ) ;
		Text = "..." ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	PushButton BTN_ATTRIBUTE
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_ATTRIBUTE" ;
		Pos = MAP_APPFONT ( 144, 163 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "Attri~butes..." ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	PushButton BTN_FORMAT
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_FORMAT" ;
		Pos = MAP_APPFONT ( 144, 180 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "For~mat..." ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	PushButton BTN_NOFORMAT
	{
		HelpID = "svx:PushButton:RID_SVXDLG_SEARCH:BTN_NOFORMAT" ;
		Pos = MAP_APPFONT ( 144, 197 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "~No Format" ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	FixedLine FL_CALC
	{
		Pos = MAP_APPFONT ( 6, 272 ) ;
		Size = MAP_APPFONT ( 191, 8 ) ;
		Hide = TRUE ;
	};
	FixedText FT_CALC_SEARCHIN
	{
		Pos = MAP_APPFONT ( 12, 285 ) ;
		Size = MAP_APPFONT ( 60, 8 ) ;
		Text [ en-US ] = "Search i~n" ;
		Hide = TRUE ;
	};
	ListBox LB_CALC_SEARCHIN
	{
		HelpID = "svx:ListBox:RID_SVXDLG_SEARCH:LB_CALC_SEARCHIN" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 75, 283 ) ;
		Size = MAP_APPFONT ( 63, 48 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		Hide = TRUE ;
		StringList [ en-US ] =
		{
			< "Formulas" ; Default ;	> ;
			< "Values" ; Default ;		> ;
			< "Comments" ; Default ;	> ;
		};
	};
	FixedText FT_CALC_SEARCHDIR
	{
		Pos = MAP_APPFONT ( 12, 300 ) ;
		Size = MAP_APPFONT ( 60, 8 ) ;
		Text [ en-US ] = "Search ~direction" ;
		Hide = TRUE ;
	};
	RadioButton RB_CALC_ROWS
	{
		HelpID = "svx:RadioButton:RID_SVXDLG_SEARCH:RB_CALC_ROWS" ;
		Pos = MAP_APPFONT ( 75, 300 ) ;
		Size = MAP_APPFONT ( 63, 10 ) ;
		Text [ en-US ] = "Ro~ws" ;
		Hide = TRUE ;
	};
	RadioButton RB_CALC_COLUMNS
	{
		HelpID = "svx:RadioButton:RID_SVXDLG_SEARCH:RB_CALC_COLUMNS" ;
		Pos = MAP_APPFONT ( 75, 313 ) ;
		Size = MAP_APPFONT ( 63, 10 ) ;
		Text [ en-US ] = "Colu~mns" ;
		Hide = TRUE ;
	};
	CheckBox CB_ALL_SHEETS
	{
		HelpID = "svx:CheckBox:RID_SVXDLG_SEARCH:CB_ALL_SHEETS" ;
		Pos = MAP_APPFONT ( 12, 326 ) ;
		Size = MAP_APPFONT ( 126, 10 ) ;
		Text [ en-US ] = "Search in all sheets" ;
		Hide = TRUE ;
	};

	String STR_WORDCALC
	{
		Text [ en-US ] = "~Entire cells" ;
	};
	String STR_MORE_BTN
	{
		Text [ en-US ] = "More ~Options" ;
	};
	String STR_LESS_BTN
	{
		Text [ en-US ] = "Fewer ~Options" ;
	};
};

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