/**************************************************************
 *
 * 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 <sfx2/sfx.hrc>
#include "helpid.hrc"
#include <svx/dialogs.hrc>
#include "optgrid.hrc"
// pragma ----------------------------------------------------------------

TabPage RID_SVXPAGE_GRID
{
	HelpId = HID_OPTIONS_GRID ;
	SVLook = TRUE ;
	Hide = TRUE ;
	Size = MAP_APPFONT ( 260, 185 ) ;
	FixedLine GRP_DRAWGRID
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 248, 8 ) ;
		Text [ en-US ] = "Grid" ;
	};
	CheckBox CBX_USE_GRIDSNAP
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_USE_GRIDSNAP" ;
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 204, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Sn~ap to grid" ;
	};
	CheckBox CBX_GRID_VISIBLE
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_GRID_VISIBLE" ;
		Pos = MAP_APPFONT ( 12, 27 ) ;
		Size = MAP_APPFONT ( 204, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "V~isible grid" ;
	};
	FixedLine FL_RESOLUTION
	{
		Pos = MAP_APPFONT ( 6, 45 ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Text [ en-US ] = "Resolution" ;
	};
	FixedText FT_DRAW_X
	{
		Pos = MAP_APPFONT ( 12, 56 ) ;
		Size = MAP_APPFONT ( 60, 8 ) ;
		Text [ en-US ] = "H~orizontal" ;
	};
	FixedText FT_DRAW_Y
	{
		Pos = MAP_APPFONT ( 12, 71 ) ;
		Size = MAP_APPFONT ( 60, 8 ) ;
		Text [ en-US ] = "~Vertical" ;
	};
	MetricField MTR_FLD_DRAW_X
	{
		HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_DRAW_X" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 75, 54 ) ;
		Size = MAP_APPFONT ( 45, 12 ) ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 10 ;
		First = 10 ;
		Maximum = 10000 ;
		Last = 10000 ;
		StrictFormat = TRUE ;
		DecimalDigits = 2 ;
		Unit = FUNIT_MM ;
		SpinSize = 50 ;
	};
	MetricField MTR_FLD_DRAW_Y
	{
		HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_DRAW_Y" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 75, 69 ) ;
		Size = MAP_APPFONT ( 45, 12 ) ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 10 ;
		First = 10 ;
		Maximum = 10000 ;
		Last = 10000 ;
		StrictFormat = TRUE ;
		DecimalDigits = 2 ;
		Unit = FUNIT_MM ;
		SpinSize = 50 ;
	};
	FixedLine FL_DIVISION
	{
		Pos = MAP_APPFONT ( 130, 45 ) ;
		Size = MAP_APPFONT ( 124, 8 ) ;
		Text [ en-US ] = "Subdivision" ;
	};
	FixedText FT_DIVISION_X
	{
		Pos = MAP_APPFONT ( 136, 56 ) ;
		Size = MAP_APPFONT ( 50, 8 ) ;
		Text [ en-US ] = "Horizont~al" ;
	};
	FixedText FT_DIVISION_Y
	{
		Pos = MAP_APPFONT ( 136, 71 ) ;
		Size = MAP_APPFONT ( 50, 8 ) ;
		Text [ en-US ] = "V~ertical" ;
	};
	NumericField NUM_FLD_DIVISION_X
	{
		HelpID = "svx:NumericField:RID_SVXPAGE_GRID:NUM_FLD_DIVISION_X" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 195, 54 ) ;
		Size = MAP_APPFONT ( 25, 12 ) ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 1 ;
		Maximum = 99 ;
		Last = 99 ;
		StrictFormat = TRUE ;
		SpinSize = 1 ;
	};
	FixedText FT_HORZ_POINTS
	{
		Pos = MAP_APPFONT ( 223, 56 ) ;
		Size = MAP_APPFONT ( 29, 8 ) ;
		Text [ en-US ] = "space(s)" ;
	};
	NumericField NUM_FLD_DIVISION_Y
	{
		HelpID = "svx:NumericField:RID_SVXPAGE_GRID:NUM_FLD_DIVISION_Y" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 195, 69 ) ;
		Size = MAP_APPFONT ( 25, 12 ) ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 1 ;
		Maximum = 99 ;
		Last = 99 ;
		StrictFormat = TRUE ;
		SpinSize = 1 ;
	};
	FixedText FT_VERT_POINTS
	{
		Pos = MAP_APPFONT ( 223, 71 ) ;
		Size = MAP_APPFONT ( 29, 8 ) ;

	};
	CheckBox CBX_SYNCHRONIZE
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SYNCHRONIZE" ;
		Pos = MAP_APPFONT ( 12, 84 ) ;
		Size = MAP_APPFONT ( 127, 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Synchronize a~xes" ;
	};
	FixedLine GRP_SNAP
	{
		Pos = MAP_APPFONT ( 6, 100 ) ;
		Size = MAP_APPFONT ( 120, 8 ) ;
		Hide = TRUE ;
		Text [ en-US ] = "Snap" ;
	};

	CheckBox CBX_SNAP_HELPLINES
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SNAP_HELPLINES" ;
		Pos = MAP_APPFONT ( 12, 111 ) ;
		Size = MAP_APPFONT ( 106, 10 ) ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Text [ en-US ] = "To snap lines" ;
	};
	CheckBox CBX_SNAP_BORDER
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SNAP_BORDER" ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Pos = MAP_APPFONT ( 12, 125 ) ;
		Size = MAP_APPFONT ( 106, 10 ) ;
		Text [ en-US ] = "To the ~page margins" ;
	};
	CheckBox CBX_SNAP_FRAME
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SNAP_FRAME" ;
		Pos = MAP_APPFONT ( 12, 139 ) ;
		Size = MAP_APPFONT ( 106, 10 ) ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Text [ en-US ] = "To object ~frame" ;
	};
	CheckBox CBX_SNAP_POINTS
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_SNAP_POINTS" ;
		Pos = MAP_APPFONT ( 12, 153 ) ;
		Size = MAP_APPFONT ( 106, 10 ) ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Text [ en-US ] = "To obje~ct points" ;
	};
	FixedText FT_SNAP_AREA
	{
		Pos = MAP_APPFONT ( 12, 169 ) ;
		Size = MAP_APPFONT ( 69, 10 ) ;
		Hide = TRUE ;
		Text [ en-US ] = "~Snap range" ;
	};
	MetricField MTR_FLD_SNAP_AREA
	{
		HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_SNAP_AREA" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 83, 167 ) ;
		Size = MAP_APPFONT ( 35, 12 ) ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 1 ;
		Maximum = 50 ;
		StrictFormat = TRUE ;
		Unit = FUNIT_CUSTOM ;
		First = 1 ;
		Last = 999 ;
		CustomUnitText [ en-US ] = " Pixels" ;
	};
	FixedLine FL_SEPARATOR
	{
		Pos = MAP_APPFONT ( 127, 111 ) ;
		Size = MAP_APPFONT ( 4, 68 ) ;
		Hide = TRUE ;
		Vert = TRUE ;
	};
	FixedLine GRP_ORTHO
	{
		Pos = MAP_APPFONT ( 130, 100 ) ;
		Size = MAP_APPFONT ( 124, 8 ) ;
		Hide = TRUE ;
		Text [ en-US ] = "Snap position" ;
	};
	CheckBox CBX_ORTHO
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_ORTHO" ;
		Pos = MAP_APPFONT ( 136, 111 ) ;
		Size = MAP_APPFONT ( 112, 10 ) ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Text [ en-US ] = "~When creating or moving objects" ;
	};
	CheckBox CBX_BIGORTHO
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_BIGORTHO" ;
		Pos = MAP_APPFONT ( 136, 125 ) ;
		Size = MAP_APPFONT ( 112, 10 ) ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Extend edges" ;
	};
	CheckBox CBX_ROTATE
	{
		HelpID = "svx:CheckBox:RID_SVXPAGE_GRID:CBX_ROTATE" ;
		Pos = MAP_APPFONT ( 136, 139 ) ;
		// 136, 111
		Size = MAP_APPFONT ( 55, 10 ) ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Text [ en-US ] = "When ro~tating" ;
	};
	MetricField MTR_FLD_ANGLE
	{
		HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_ANGLE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 194, 137 ) ;
		// 190, 111
		Size = MAP_APPFONT ( 54, 12 ) ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Maximum = 18000 ;
		Last = 18000 ;
		DecimalDigits = 2 ;
		StrictFormat = TRUE ;
		Unit = FUNIT_CUSTOM ;
		SpinSize = 500 ;
		CustomUnitText [ en-US ] = " degrees" ;
	};
	FixedText FT_BEZ_ANGLE
	{
		Pos = MAP_APPFONT ( 136, 156 ) ;
		Size = MAP_APPFONT ( 55, 10 ) ;
		Hide = TRUE ;
		Text [ en-US ] = "Point reducti~on" ;
	};
	MetricField MTR_FLD_BEZ_ANGLE
	{
		HelpID = "svx:MetricField:RID_SVXPAGE_GRID:MTR_FLD_BEZ_ANGLE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 194, 154 ) ;
		Size = MAP_APPFONT ( 54, 12 ) ;
		Hide = TRUE ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		Maximum = 9000 ;
		Last = 9000 ;
		DecimalDigits = 2 ;
		StrictFormat = TRUE ;
		Unit = FUNIT_CUSTOM ;
		SpinSize = 500 ;
		CustomUnitText [ en-US ] = " degrees" ;
	};
};

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