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

TabPage TP_POLAROPTIONS
{
    HelpID = "chart2:TabPage:TP_POLAROPTIONS";
	Hide = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 260 , 185 ) ;

    CheckBox CB_CLOCKWISE
    {
        HelpID = "chart2:CheckBox:TP_POLAROPTIONS:CB_CLOCKWISE";
        Pos = MAP_APPFONT ( 12 , 8  );
        Size = MAP_APPFONT ( 248 , 10 );
        TabStop = TRUE;
        Text [ en-US ] = "~Clockwise direction";
    };
    FixedLine FL_STARTING_ANGLE
    {
        Pos = MAP_APPFONT ( 6 , 21  ) ;
        Size = MAP_APPFONT ( 248 , 12 ) ;
        Text [ en-US ] = "Starting angle" ;
    };
    Control CT_ANGLE_DIAL
    {
        HelpId	= HID_SCH_STARTING_ANGLE_DIAL ;
        Pos     = MAP_APPFONT ( 12 , 38  ) ;
        Size    = MAP_APPFONT ( 43 , 43 ) ;
    };
    FixedText FT_ROTATION_DEGREES
    {
        Pos = MAP_APPFONT ( 93 , 55  ) ;
        Size = MAP_APPFONT ( 166 , 8 ) ;
        Text [ en-US ] = "~Degrees" ;
    };
    NumericField NF_STARTING_ANGLE
    {
        HelpID = "chart2:NumericField:TP_POLAROPTIONS:NF_STARTING_ANGLE";
        Pos = MAP_APPFONT ( 61 , 53 ) ;
        Size = MAP_APPFONT ( 28 , 12 ) ;
        Border = TRUE ;
        TabStop = TRUE ;
        Repeat = TRUE ;
        Spin = TRUE ;
        Minimum = 0 ;
        Maximum = 359 ;
        SpinSize = 5 ;
    };
    FixedLine FL_PLOT_OPTIONS_POLAR
    {
        Pos = MAP_APPFONT ( 6 , 90  ) ;
        Size = MAP_APPFONT ( 248 , 8 ) ;
        Text [ en-US ] = "Plot options";
    };
    CheckBox CB_INCLUDE_HIDDEN_CELLS_POLAR
    {
        HelpID = "chart2:CheckBox:TP_POLAROPTIONS:CB_INCLUDE_HIDDEN_CELLS_POLAR";
        Pos = MAP_APPFONT ( 12 , 104 ) ;
        Size = MAP_APPFONT ( 200 , 10 ) ;
        TabStop = TRUE ;
        Text [ en-US ] = "Include ~values from hidden cells";
    };
};
