/**************************************************************
 *
 * 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 "table.hrc"
#include "splittbl.hrc"
#include "cmdid.h"
#include "helpid.h"
ModalDialog DLG_SPLIT_TABLE
{
	HelpID = CMD_FN_TABLE_SPLIT_TABLE ;
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 207, 76 ) ;
	Moveable = TRUE ;
	OKButton PB_OK
	{
		Pos = MAP_APPFONT ( 151, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton PB_CANCEL
	{
		Pos = MAP_APPFONT ( 151, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	HelpButton PB_HELP
	{
		Pos = MAP_APPFONT ( 151, 40 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	FixedLine FL_SPLIT
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 139, 8 ) ;
		Text [ en-US ] = "Mode" ;
	};
	RadioButton RB_CNTNT
	{
		HelpID = "sw:RadioButton:DLG_SPLIT_TABLE:RB_CNTNT" ;
		Pos = MAP_APPFONT ( 12, 15 ) ;
		Size = MAP_APPFONT ( 130, 10 ) ;
		Check = TRUE ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Copy heading" ;
	};
	RadioButton RB_BOX_PARA
	{
		HelpID = "sw:RadioButton:DLG_SPLIT_TABLE:RB_BOX_PARA" ;
		Pos = MAP_APPFONT ( 12, 30 ) ;
		Size = MAP_APPFONT ( 130, 10 ) ;
		Text [ en-US ] = "C~ustom heading (apply Style)" ;
	};
	RadioButton RB_BOX_NOPARA
	{
		HelpID = "sw:RadioButton:DLG_SPLIT_TABLE:RB_BOX_NOPARA" ;
		Pos = MAP_APPFONT ( 12, 45 ) ;
		Size = MAP_APPFONT ( 130, 10 ) ;
		Text [ en-US ] = "Cu~stom heading" ;
	};
	RadioButton RB_BORDER
	{
		HelpID = "sw:RadioButton:DLG_SPLIT_TABLE:RB_BORDER" ;
		Pos = MAP_APPFONT ( 12, 60 ) ;
		Size = MAP_APPFONT ( 130, 10 ) ;
		Text [ en-US ] = "~No heading" ;
	};
	Text [ en-US ] = "Split Table" ;
};

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