/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/


/* StarView ressource file */


#include "globals.hrc"
#include "misc.hrc"
#include "num.hrc"
#include "cmdid.h"
#include "helpid.h"
#include "svx/dialogs.hrc"

/**************************************************************************/
/*                                                                        */
/* 	TabPage Positionen                                                    */
/*                                                                        */
/**************************************************************************/
TabPage TP_NUM_POSITION
{
	HelpID = HID_NUM_POSITION ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 260 , 185 ) ;
	Hide = TRUE;
    FixedLine FL_LEVEL
	{
		Pos = MAP_APPFONT ( 6 , 3 ) ;
        Size = MAP_APPFONT ( 35 , 8 ) ;
		Text [ en-US ] = "Level" ;
	};
	MultiListBox LB_LEVEL
	{
	    HelpID = "sw:MultiListBox:TP_NUM_POSITION:LB_LEVEL";
		Pos = MAP_APPFONT ( 12 , 14 ) ;
		Size = MAP_APPFONT ( 26 , 163 ) ;
		TabStop = TRUE ;
		DropDown = FALSE ;
		Border = TRUE ;
		SimpleMode = TRUE ;
	};
    FixedLine FL_POSITION
	{
		Pos = MAP_APPFONT ( 47 , 3 ) ;
        Size = MAP_APPFONT ( 207 , 8 ) ;
		Group = TRUE ;
		Text [ en-US ] = "Position and spacing" ;
	};
    FixedText FT_BORDERDIST
    {
        Pos = MAP_APPFONT ( 50 , 27 ) ;
        Size = MAP_APPFONT ( 105 , 10 ) ;
        Text [ en-US ] = "Indent" ;
    };
    MetricField MF_BORDERDIST
    {
        HelpID = "sw:MetricField:TP_NUM_POSITION:MF_BORDERDIST";
        Pos = MAP_APPFONT ( 198 , 25 ) ;
        Size = MAP_APPFONT ( 40 , 12 ) ;
        Border = TRUE ;
        TabStop = TRUE ;
        Left = TRUE ;
        Repeat = TRUE ;
        Spin = TRUE ;
        Minimum = -1999 ;
        Maximum = 1999 ;
        DecimalDigits = 2 ;
        Value = 0 ;
        Unit = FUNIT_CM ;
        First = 0 ;
        Last = 1999 ;
        SpinSize = 5 ;
    };
    CheckBox CB_RELATIVE
    {
        HelpID = "sw:CheckBox:TP_NUM_POSITION:CB_RELATIVE";
        Pos = MAP_APPFONT ( 198 , 41 ) ;
        Size = MAP_APPFONT ( 52 , 10 ) ;
        Text [ en-US ] = "Relati~ve" ;
    };
    FixedText FT_INDENT
    {
        Pos = MAP_APPFONT ( 50 , 59 ) ;
        Size = MAP_APPFONT ( 105 , 8 ) ;
        Text [ en-US ] = "Width of numbering" ;
    };
    MetricField MF_INDENT
    {
        HelpID = "sw:MetricField:TP_NUM_POSITION:MF_INDENT";
        Pos = MAP_APPFONT ( 198 , 57 ) ;
        Size = MAP_APPFONT ( 40 , 12 ) ;
        Border = TRUE ;
        TabStop = TRUE ;
        Left = TRUE ;
        Repeat = TRUE ;
        Spin = TRUE ;
        Minimum = 0 ;
        Maximum = 1999 ;
        DecimalDigits = 2 ;
        Value = 0 ;
        Unit = FUNIT_CM ;
        First = 0 ;
        Last = 1999 ;
        SpinSize = 5 ;
    };
    FixedText FT_NUMDIST
    {
        Pos = MAP_APPFONT ( 50 , 75 ) ;
        Size = MAP_APPFONT ( 105 , 8 ) ;
        Text [ en-US ] = "Minimum space numbering <-> text" ;
    };
    MetricField MF_NUMDIST
    {
        HelpID = "sw:MetricField:TP_NUM_POSITION:MF_NUMDIST";
        Pos = MAP_APPFONT ( 198 , 73 ) ;
        Size = MAP_APPFONT ( 40 , 12 ) ;
        Left = TRUE ;
        Repeat = TRUE ;
        Spin = TRUE ;
        Minimum = 0 ;
        Maximum = 1999 ;
        DecimalDigits = 2 ;
        Value = 0 ;
        Unit = FUNIT_CM ;
        First = 0 ;
        Last = 1999 ;
        SpinSize = 5 ;
        Border = TRUE ;
        TabStop = TRUE ;
    };
    FixedText FT_ALIGN
    {
        Pos = MAP_APPFONT ( 50 , 91 ) ;
        Size = MAP_APPFONT ( 105 , 8 ) ;
        Text [ en-US ] = "N~umbering alignment" ;
    };
    ListBox LB_ALIGN
    {
        HelpID = "sw:ListBox:TP_NUM_POSITION:LB_ALIGN";
        Pos = MAP_APPFONT ( 198 , 89 ) ;
        Size = MAP_APPFONT ( 40 , 40 ) ;
        TabStop = TRUE ;
        DropDown = TRUE ;
        StringList [ en-US ] =
        {
            < "Left" ; > ;
            < "Centered" ; > ;
            < "Right" ; > ;
        };
    };
    FixedText FT_LABEL_FOLLOWED_BY
    {
        Pos = MAP_APPFONT ( 50 , 27 ) ;
        Size = MAP_APPFONT ( 105 , 10 ) ;
        Text [ en-US ] = "Numbering followed by" ;
    };
    ListBox LB_LABEL_FOLLOWED_BY
    {
        HelpID = "sw:ListBox:TP_NUM_POSITION:LB_LABEL_FOLLOWED_BY";
        Pos = MAP_APPFONT ( 198 , 25 ) ;
        Size = MAP_APPFONT ( 40 , 12 ) ;
        TabStop = TRUE ;
        DropDown = TRUE ;
        StringList [ en-US ] =
        {
            < "Tab stop" ; > ;
            < "Space" ; > ;
            < "Nothing" ; > ;
        };
    };
    FixedText FT_LISTTAB
    {
        Pos = MAP_APPFONT ( 50 , 43 ) ;
        Size = MAP_APPFONT ( 143 , 10 ) ;
        Right = TRUE ;
        Text [ en-US ] = "at" ;
    };
    MetricField MF_LISTTAB
    {
        HelpID = "sw:MetricField:TP_NUM_POSITION:MF_LISTTAB";
        Pos = MAP_APPFONT ( 198 , 41 ) ;
        Size = MAP_APPFONT ( 40 , 12 ) ;
        Border = TRUE ;
        TabStop = TRUE ;
        Left = TRUE ;
        Repeat = TRUE ;
        Spin = TRUE ;
        Minimum = 0 ;
        Maximum = 1999 ;
        DecimalDigits = 2 ;
        Value = 0 ;
        Unit = FUNIT_CM ;
        First = 0 ;
        Last = 1999 ;
        SpinSize = 5 ;
    };
    FixedText FT_ALIGN_2
    {
        Pos = MAP_APPFONT ( 50 , 59 ) ;
        Size = MAP_APPFONT ( 105 , 8 ) ;
    };
    ListBox LB_ALIGN_2
    {
        HelpID = "sw:ListBox:TP_NUM_POSITION:LB_ALIGN_2";
        Pos = MAP_APPFONT ( 198 , 57 ) ;
        Size = MAP_APPFONT ( 40 , 12 ) ;
        TabStop = TRUE ;
        DropDown = TRUE ;
    };
    FixedText FT_ALIGNED_AT
    {
        Pos = MAP_APPFONT ( 50 , 75 ) ;
        Size = MAP_APPFONT ( 105 , 8 ) ;
        Text [ en-US ] = "Aligned at" ;
    };
    MetricField MF_ALIGNED_AT
    {
        HelpID = "sw:MetricField:TP_NUM_POSITION:MF_ALIGNED_AT";
        Pos = MAP_APPFONT ( 198 , 73 ) ;
        Size = MAP_APPFONT ( 40 , 12 ) ;
        Left = TRUE ;
        Repeat = TRUE ;
        Spin = TRUE ;
        Minimum = -1999 ;
        Maximum = 1999 ;
        DecimalDigits = 2 ;
        Value = 0 ;
        Unit = FUNIT_CM ;
        First = 0 ;
        Last = 1999 ;
        SpinSize = 5 ;
        Border = TRUE ;
        TabStop = TRUE ;
    };
    FixedText FT_INDENT_AT
    {
        Pos = MAP_APPFONT ( 50 , 91 ) ;
        Size = MAP_APPFONT ( 105 , 8 ) ;
        Text [ en-US ] = "Indent at" ;
    };
    MetricField MF_INDENT_AT
    {
        HelpID = "sw:MetricField:TP_NUM_POSITION:MF_INDENT_AT";
        Pos = MAP_APPFONT ( 198 , 89 ) ;
        Size = MAP_APPFONT ( 40 , 12 ) ;
        Left = TRUE ;
        Repeat = TRUE ;
        Spin = TRUE ;
        Minimum = -1999 ;
        Maximum = 1999 ;
        DecimalDigits = 2 ;
        Value = 0 ;
        Unit = FUNIT_CM ;
        First = 0 ;
        Last = 1999 ;
        SpinSize = 5 ;
        Border = TRUE ;
        TabStop = TRUE ;
    };
    PushButton PB_STANDARD
    {
        HelpID = "sw:PushButton:TP_NUM_POSITION:PB_STANDARD";
        Pos = MAP_APPFONT ( 198 , 165 ) ;
        Size = MAP_APPFONT ( 50 , 14 ) ;
        Text [ en-US ] = "Default" ;
    };
    Window WIN_PREVIEW
    {
        Pos = MAP_APPFONT ( 50 , 113 ) ;
        Size = MAP_APPFONT ( 143 , 67 ) ;
        Border = TRUE ;
    };
};

/**************************************************************************/
/*                                                                        */
/*  Dialog fuer Test der Svx-Implementation                               */
/*                                                                        */
/**************************************************************************/
TabDialog DLG_SVXTEST_NUM_BULLET
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
    Text [ en-US ] = "Bullets and Numbering";
	Moveable = TRUE ;
	TabControl 1
	{
		SVLook = TRUE ;
		PageList =
		{
			PageItem
			{
				Identifier = RID_SVXPAGE_PICK_BULLET ;
				Text [ en-US ] = "Bullets" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_PICK_SINGLE_NUM ;
				Text [ en-US ] = "Numbering type" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_PICK_NUM ;
				Text [ en-US ] = "Outline" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_PICK_BMP ;
				Text [ en-US ] = "Graphics" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_NUM_POSITION ;
				Text [ en-US ] = "Position" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_NUM_OPTIONS ;
				/* ### ACHTUNG: Neuer Text in Resource? Optionen : ~Optionen */
				Text [ en-US ] = "Options" ;
			};
		};
    };
	String ST_RESET
	{
		Text [ en-US ] = "~Remove" ;
	};
};
























