/**************************************************************
 * 
 * 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 "HelpIds.hrc"
#include "TabPages.hrc"

TabPage TP_ALIGNMENT
{
	Hide = TRUE ;
	HelpID = HID_SCH_ALIGNMENT ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 260 , 185 ) ;
	Control CTR_DIAL
	{
		HelpId = HID_SCH_ALIGNMENT_CTR_DIAL ;
        Pos = MAP_APPFONT ( 12 , 14  ) ;
        Size = MAP_APPFONT ( 43 , 43 ) ;
        Text = "ABCD" ;
	};
    TriStateBox BTN_TXTSTACKED
    {
        HelpId = HID_SCH_ALIGNMENT_STACKED ;
        Pos = MAP_APPFONT ( 139 , 14  ) ;
        Size = MAP_APPFONT ( 116 , 10 ) ;
        TabStop = TRUE ;
        Text [ en-US ] = "Ve~rtically stacked";
    };
	FixedText FT_DEGREES
	{
        Pos = MAP_APPFONT ( 93 , 32  ) ;
		Size = MAP_APPFONT ( 162 , 8 ) ;
		Text [ en-US ] = "~Degrees" ;
	};
	NumericField NF_ORIENT
	{
		HelpId = HID_SCH_ALIGNMENT_DEGREES ;
		Border = TRUE ;
        Pos = MAP_APPFONT ( 61 , 30  ) ;
		Size = MAP_APPFONT ( 28 , 12 ) ;
		TabStop = TRUE ;
		Repeat = TRUE ;
		Spin = TRUE ;
		StrictFormat = TRUE ;
        SpinSize = 5 ;
        Minimum = 0 ;
        Maximum = 359 ;
	};
	FixedLine FL_ALIGN
	{
		Pos = MAP_APPFONT ( 6 , 3  ) ;
		Size = MAP_APPFONT ( 248 , 8 ) ;
		Text [ en-US ] = "Text orientation" ;
	};
    FixedText FT_TEXTDIR
    {
        Pos = MAP_APPFONT ( 12 , 65 ) ;
        Size = MAP_APPFONT ( 64 , 8 ) ;
        Text [ en-US ] = "Te~xt direction" ;
    };
    ListBox LB_TEXTDIR
    {
        HelpId = HID_SCH_TEXTDIRECTION_TITLE ;
        Pos = MAP_APPFONT ( 78 , 63 ) ;
        Size = MAP_APPFONT ( 170 , 100 ) ;
        Border = TRUE;
        TabStop = TRUE;
        DropDown = TRUE;
    };
};

