/**************************************************************
 *
 * 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 "optlingu.hrc"
#include "helpid.hrc"

#include <svtools/controldims.hrc>
#include <sfx2/sfx.hrc>
#include <cuires.hrc>

// RID_SVXDLG_EDIT_MODULES ---------------------------------------------------

ModalDialog RID_SVXDLG_EDIT_MODULES
{
	HelpID = HID_EDIT_MODULES ;
	SVLook = TRUE ;
	Moveable = TRUE ;
	Size = MAP_APPFONT ( 240, 197 ) ;
	Text [ en-US ] = "Edit Modules" ;

	FixedLine FL_EDIT_MODULES_OPTIONS
	{
		Pos = MAP_APPFONT ( RSC_SP_FLGR_INNERBORDER_LEFT, RSC_SP_FLGR_INNERBORDER_TOP ) ;
		Size = MAP_APPFONT ( 240 - 2 * RSC_SP_FLGR_INNERBORDER_LEFT, RSC_CD_FIXEDLINE_HEIGHT ) ;
		Text [ en-US ] = "Options" ;
	};
	FixedText FT_EDIT_MODULES_LANGUAGE
	{
		Left = TRUE ;
		Pos = MAP_APPFONT ( 12, 16 ) ;
		Size = MAP_APPFONT ( 68, RSC_CD_FIXEDTEXT_HEIGHT ) ;
		Text [ en-US ] = "Language" ;
	};
	ListBox LB_EDIT_MODULES_LANGUAGE
	{
		HelpID = "cui:ListBox:RID_SVXDLG_EDIT_MODULES:LB_EDIT_MODULES_LANGUAGE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 83, 14 ) ;
		Size = MAP_APPFONT ( 95, 80 ) ;
		DropDown = TRUE ;
		Sort = TRUE ;
	};
	Control CLB_EDIT_MODULES_MODULES
	{
		Pos = MAP_APPFONT ( 12, 32 ) ;
		Size = MAP_APPFONT ( 166, 120 ) ;
		Border = TRUE ;
		TabStop = TRUE ;
	};
	PushButton PB_EDIT_MODULES_PRIO_UP
	{
		HelpID = "cui:PushButton:RID_SVXDLG_EDIT_MODULES:PB_EDIT_MODULES_PRIO_UP" ;
		Pos = MAP_APPFONT ( 184, 32 ) ;
		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Move Up" ;
	};
	PushButton PB_EDIT_MODULES_PRIO_DOWN
	{
		HelpID = "cui:PushButton:RID_SVXDLG_EDIT_MODULES:PB_EDIT_MODULES_PRIO_DOWN" ;
		Pos = MAP_APPFONT ( 184, 49 ) ;
		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Move Down" ;
	};
	PushButton PB_EDIT_MODULES_PRIO_BACK
	{
		HelpID = "cui:PushButton:RID_SVXDLG_EDIT_MODULES:PB_EDIT_MODULES_PRIO_BACK" ;
		Pos = MAP_APPFONT ( 184, 66 ) ;
		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Back" ;
	};
	FixedText FT_EDIT_MODULES_NEWDICTSLINK
	{
		Left = TRUE ;
		Pos = MAP_APPFONT ( 12, 155 ) ;
		Size = MAP_APPFONT ( 169, RSC_CD_FIXEDTEXT_HEIGHT ) ;
		Text [ en-US ] = "More dictionaries online..." ;
	};
	FixedLine FL_EDIT_MODULES_BUTTONS
	{
		Pos = MAP_APPFONT ( 0, 166 ) ;
		Size = MAP_APPFONT ( 240, RSC_CD_FIXEDLINE_HEIGHT ) ;
	};
	HelpButton PB_HELP
	{
		Pos = MAP_APPFONT ( 12, 177 ) ;
		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
	};
	OKButton PB_OK
	{
		Pos = MAP_APPFONT ( 184, 177 ) ;
		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
		Text [ en-US ] = "Close" ;
	};

	String ST_SPELL
	{
		Text [ en-US ] = "Spelling" ;
	};
	String ST_HYPH
	{
		Text [ en-US ] = "Hyphenation" ;
	};
	String ST_THES
	{
		Text [ en-US ] = "Thesaurus" ;
	};
	String ST_GRAMMAR
	{
		Text [ en-US ] = "Grammar" ;
	};
};

// RID_SVXDLG_LNG_ED_NUM_PREBREAK -------------------------------------------

ModalDialog RID_SVXDLG_LNG_ED_NUM_PREBREAK
{
	HelpID = HID_LNGDLG_NUM_PREBREAK ;
	SVLook = TRUE ;
	Moveable = TRUE ;
	Size = MAP_APPFONT ( 155, 43 ) ;
	Text [ en-US ] = "Hyphenation" ;
		FixedLine FL_NUMVAL_PREBREAK
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 87, 8 ) ;
	};
	OKButton BT_OK_PREBREAK
	{
		Pos = MAP_APPFONT ( 99, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton BT_CANCEL_PREBREAK
	{
		Pos = MAP_APPFONT ( 99, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	NumericField ED_PREBREAK
	{
		HelpID = "cui:NumericField:RID_SVXDLG_LNG_ED_NUM_PREBREAK:ED_PREBREAK" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 56, 14 ) ;
		Size = MAP_APPFONT ( 31, 12 ) ;
		Left = TRUE ;
		Minimum = 2 ;
		Maximum = 9 ;
		Last = 9 ;
		Repeat = TRUE ;
		Spin = TRUE ;
		SpinSize = 1 ;
	};
	String STR_NUM_PRE_BREAK_DLG
	{
		Text [ en-US ] = "Characters before break" ;
	};
	String STR_NUM_POST_BREAK_DLG
	{
		Text [ en-US ] = "Characters after break" ;
	};
	String STR_NUM_MIN_WORDLEN_DLG
	{
		Text [ en-US ] = "Minimal word length" ;
	};
};

// RID_SFXPAGE_LINGU --------------------------------------------------------

TabPage RID_SFXPAGE_LINGU
{
	HelpId = HID_OPTIONS_LINGU ;
	SVLook = TRUE ;
	Hide = TRUE ;
	Size = MAP_APPFONT ( 260, 185 ) ;
	Text [ en-US ] = "Options" ;
	FixedLine FL_LINGUISTIC
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 248, 8 ) ;
		Text [ en-US ] = "Writing aids" ;
	};
	FixedText FT_LINGU_MODULES
	{
		Left = TRUE ;
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 175, 8 ) ;
		Text [ en-US ] = "Available language modules" ;
	};
	Control CLB_LINGU_MODULES
	{
		Pos = MAP_APPFONT ( 12, 25 ) ;
		Size = MAP_APPFONT ( 182, 30 ) ;
		Border = TRUE ;
		TabStop = TRUE ;
	};
	PushButton PB_LINGU_MODULES_EDIT
	{
		HelpID = "cui:PushButton:RID_SFXPAGE_LINGU:PB_LINGU_MODULES_EDIT" ;
		Pos = MAP_APPFONT ( 198, 25 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Edit..." ;
	};
	FixedText FT_LINGU_DICS
	{
		Left = TRUE ;
		Pos = MAP_APPFONT ( 12, 59 ) ;
		Size = MAP_APPFONT ( 175, 8 ) ;
		Text [ en-US ] = "User-defined dictionaries" ;
	};
	Control CLB_LINGU_DICS
	{
		Pos = MAP_APPFONT ( 12, 70 ) ;
		Size = MAP_APPFONT ( 182, 48 ) ;
		Border = TRUE ;
		TabStop = TRUE ;
	};
	PushButton PB_LINGU_DICS_NEW_DIC
	{
		HelpID = "cui:PushButton:RID_SFXPAGE_LINGU:PB_LINGU_DICS_NEW_DIC" ;
		Pos = MAP_APPFONT ( 198, 70 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~New..." ;
	};
	PushButton PB_LINGU_DICS_EDIT_DIC
	{
		HelpID = "cui:PushButton:RID_SFXPAGE_LINGU:PB_LINGU_DICS_EDIT_DIC" ;
		Pos = MAP_APPFONT ( 198, 87 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Ed~it..." ;
	};
	PushButton PB_LINGU_DICS_DEL_DIC
	{
		HelpID = "cui:PushButton:RID_SFXPAGE_LINGU:PB_LINGU_DICS_DEL_DIC" ;
		Pos = MAP_APPFONT ( 198, 104 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Delete" ;
	};
	FixedText FT_LINGU_OPTIONS
	{
		Left = TRUE ;
		Pos = MAP_APPFONT ( 12, 122 ) ;
		Size = MAP_APPFONT ( 175, 8 ) ;
		Text [ en-US ] = "~Options" ;
	};
	Control CLB_LINGU_OPTIONS
	{
		Pos = MAP_APPFONT ( 12, 133 ) ;
		Size = MAP_APPFONT ( 182, 46 ) ;
		Border = TRUE ;
		TabStop = TRUE ;
	};
	PushButton PB_LINGU_OPTIONS_EDIT
	{
		HelpID = "cui:PushButton:RID_SFXPAGE_LINGU:PB_LINGU_OPTIONS_EDIT" ;
		Pos = MAP_APPFONT ( 198, 133 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Edi~t..." ;
	};
	FixedText FT_LINGU_OPTIONS_MOREDICTS
	{
		Left = TRUE ;
		Hide = TRUE ;
		Pos = MAP_APPFONT ( 12, 182 ) ;
		Size = MAP_APPFONT ( 182, RSC_CD_FIXEDTEXT_HEIGHT ) ;
		Text [ en-US ] = "More dictionaries online..." ;
	};

	String STR_CAPITAL_WORDS
	{
		Text [ en-US ] = "Check uppercase words" ;
	};
	String STR_WORDS_WITH_DIGITS
	{
		Text [ en-US ] = "Check words with numbers " ;
	};
	String STR_CAPITALIZATION
	{
		Text [ en-US ] = "Check capitalization" ;
	};
	String STR_SPELL_SPECIAL
	{
		Text [ en-US ] = "Check special regions" ;
	};
	String STR_SPELL_AUTO
	{
		Text [ en-US ] = "Check spelling as you type" ;
	};
	String STR_GRAMMAR_AUTO
	{
		Text [ en-US ] = "Check grammar as you type" ;
	};
	String STR_NUM_MIN_WORDLEN
	{
		Text [ en-US ] = "Minimal number of characters for hyphenation: " ;
	};
	String STR_NUM_PRE_BREAK
	{
		Text [ en-US ] = "Characters before line break: " ;
	};
	String STR_NUM_POST_BREAK
	{
		Text [ en-US ] = "Characters after line break: " ;
	};
	String STR_HYPH_AUTO
	{
		Text [ en-US ] = "Hyphenate without inquiry" ;
	};
	String STR_HYPH_SPECIAL
	{
		Text [ en-US ] = "Hyphenate special regions" ;
	};
	String STR_LINGU_MODULES_EDIT
	{
		Text [ en-US ] = "Edit Available language modules" ;
	};
	String STR_LINGU_DICS_EDIT_DIC
	{
		Text [ en-US ] = "Edit User-defined dictionaries" ;
	};
	String STR_LINGU_OPTIONS_EDIT
	{
		Text [ en-US ] = "Edit Options" ;
	};
};
// end: TabPage RID_SFXPAGE_LINGU

 // RID_SFXQB_DELDICT --------------------------------------------------------
QueryBox RID_SFXQB_DELDICT
{
	Buttons = WB_YES_NO ;
	DefButton = WB_DEF_NO ;
	Message [ en-US ] = "Do you want to delete the dictionary?" ;
};

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