/**************************************************************
 *
 * 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 "colwd.hrc"
#include "cmdid.h"
#include "helpid.h"
// #define DLG_COL_WIDTH 256

ModalDialog DLG_COL_WIDTH
{
	HelpID = CMD_FN_TABLE_SET_COL_WIDTH ;
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 159, 60 ) ;
	Text [ en-US ] = "Column Width" ;
	Moveable = TRUE ;
	OKButton BT_OK
	{
		Pos = MAP_APPFONT ( 104, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton BT_CANCEL
	{
		Pos = MAP_APPFONT ( 104, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	HelpButton BT_HELP
	{
		Pos = MAP_APPFONT ( 104, 43 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	FixedText FT_WIDTH
	{
		Pos = MAP_APPFONT ( 12, 31 ) ;
		Size = MAP_APPFONT ( 35, 8 ) ;
		Text [ en-US ] = "~Width" ;
		Left = TRUE ;
	};
	MetricField ED_WIDTH
	{
		HelpID = "sw:MetricField:DLG_COL_WIDTH:ED_WIDTH" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 51, 30 ) ;
		Size = MAP_APPFONT ( 38, 12 ) ;
		TabStop = TRUE ;
		Left = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 50 ;
		Maximum = 9999 ;
		DecimalDigits = 2 ;
		SpinSize = 10 ;
		Value = 10 ;
		Unit = FUNIT_CM ;
		First = 100 ;
		Last = 9999 ;
	};
	FixedLine FL_WIDTH
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 91, 8 ) ;
		Text [ en-US ] = "Width" ;
	};
	FixedText FT_COL
	{
		Pos = MAP_APPFONT ( 12, 16 ) ;
		Size = MAP_APPFONT ( 35, 8 ) ;
		Text [ en-US ] = "~Column" ;
		Left = TRUE ;
	};
	NumericField ED_COL
	{
		HelpID = "sw:NumericField:DLG_COL_WIDTH:ED_COL" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 51, 14 ) ;
		Size = MAP_APPFONT ( 38, 12 ) ;
		TabStop = TRUE ;
		Left = TRUE ;
		Spin = TRUE ;
		Minimum = 1 ;
		Maximum = 99 ;
		Repeat = TRUE ;
	};
};

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