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

#ifndef _SFX_HRC
#include <sfx2/sfx.hrc>
#endif
#include "fmtui.hrc"
#include "globals.hrc"
#include "svx/dialogs.hrc"
TabDialog DLG_TEMPLATE_1
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Text [ en-US ] = "Character Style" ;
	Moveable = TRUE ;
	TabControl 1
	{
		OutputSize = TRUE ;
		PageList =
		{
			PageItem
			{
				Identifier = TP_CHAR_STD ;
				Text [ en-US ] = "Font" ;
				PageResID = TP_CHAR_STD ;
			};
			PageItem
			{
				Identifier = TP_CHAR_EXT ;
				Text [ en-US ] = "Font Effects" ;
				PageResID = TP_CHAR_EXT ;
			};
			PageItem
			{
				Identifier = TP_CHAR_POS ;
				PageResID = TP_CHAR_POS ;
				Text [ en-US ] = "Position" ;
			};
			PageItem
			{
				Identifier = TP_CHAR_TWOLN ;
				PageResID = TP_CHAR_TWOLN ;
				Text [ en-US ] = "Asian Layout" ;
			};
			PageItem
			{
				Identifier = TP_BACKGROUND ;
				Text [ en-US ] = "Background" ;
				PageResID = TP_BACKGROUND ;
			};
		};
	};
};
TabDialog DLG_TEMPLATE_2
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Text [ en-US ] = "Paragraph Style" ;
	Moveable = TRUE ;
	TabControl 1
	{
		OutputSize = TRUE ;
		PageList =
		{
			PageItem
			{
				Identifier = TP_PARA_STD ;
				Text [ en-US ] = "Indents & Spacing" ;
				PageResID = TP_PARA_STD ;
			};
			PageItem
			{
				Identifier = TP_PARA_ALIGN ;
				PageResID = TP_PARA_ALIGN ;
				Text [ en-US ] = "Alignment" ;
			};
			PageItem
			{
				Identifier = TP_PARA_EXT ;
				Text [ en-US ] = "Text Flow" ;
				PageResID = TP_PARA_EXT ;
			};
			PageItem
			{
				Identifier = TP_PARA_ASIAN ;
				Text [ en-US ] = "Asian Typography" ;
			};
			PageItem
			{
				Identifier = TP_CHAR_STD ;
				Text [ en-US ] = "Font" ;
				PageResID = TP_CHAR_STD ;
			};
			PageItem
			{
				Identifier = TP_CHAR_EXT ;
				Text [ en-US ] = "Font Effects" ;
				PageResID = TP_CHAR_EXT ;
			};
			PageItem
			{
				Identifier = TP_CHAR_POS ;
				PageResID = TP_CHAR_POS ;
				Text [ en-US ] = "Position" ;
			};
			PageItem
			{
				Identifier = TP_CHAR_TWOLN ;
				PageResID = TP_CHAR_TWOLN ;
				Text [ en-US ] = "Asian Layout" ;
			};
			PageItem
			{
				Identifier = TP_NUMPARA ;
				Text [ en-US ] = "Outline & Numbering" ;
			};
			PageItem
			{
				Identifier = TP_TABULATOR ;
				Text [ en-US ] = "Tabs" ;
				PageResID = TP_TABULATOR ;
			};
			PageItem
			{
				Identifier = TP_DROPCAPS ;
				Text [ en-US ] = "Drop Caps" ;
				PageResID = TP_DROPCAPS ;
			};

			//UUUU new Area and Transparence TabPages
			PageItem
			{
				Identifier = RID_SVXPAGE_AREA ;
				PageResID = RID_SVXPAGE_AREA ;
				Text [ en-US ] = "Area" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_TRANSPARENCE ;
				PageResID = RID_SVXPAGE_TRANSPARENCE ;
				Text [ en-US ] = "Transparency" ;
			};

			//UUUU remove?
			//PageItem
			//{
			//	Identifier = TP_BACKGROUND ;
			//	Text [ en-US ] = "Background" ;
			//	PageResID = TP_BACKGROUND ;
			//};

			PageItem
			{
				Identifier = TP_BORDER ;
				Text [ en-US ] = "Borders" ;
				PageResID = TP_BORDER ;
			};
			PageItem
			{
				Identifier = TP_CONDCOLL ;
				PageResID = TP_CONDCOLL ;
				Text [ en-US ] = "Condition" ;
			};
		};
	};
};
TabDialog DLG_TEMPLATE_4
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Text [ en-US ] = "Page Style" ;
	Moveable = TRUE ;
	TabControl 1
	{
		OutputSize = TRUE ;
		PageList =
		{
			/*			PageItem
			{
				Identifier = TP_PAGE_STD ;
				Text [ en-US ] = "Page" ;
				PageResID = TP_PAGE_STD ;
			};*/

			//UUUU new Area and Transparence TabPages
			PageItem
			{
				Identifier = RID_SVXPAGE_AREA ;
				PageResID = RID_SVXPAGE_AREA ;
				Text [ en-US ] = "Area" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_TRANSPARENCE ;
				PageResID = RID_SVXPAGE_TRANSPARENCE ;
				Text [ en-US ] = "Transparency" ;
			};

			//UUUU remove?
			//PageItem
			//{
			//	Identifier = TP_BACKGROUND ;
			//	Text [ en-US ] = "Background" ;
			//	PageResID = TP_BACKGROUND ;
			//};
			/*			PageItem
			{
				Identifier = TP_BORDER ;
				Text [ en-US ] = "Borders" ;
				PageResID = TP_BORDER ;
			};
			PageItem
			{
				Identifier = TP_HEADER_PAGE ;
				Text [ en-US ] = "Header" ;
				PageResID = TP_HEADER_PAGE ;
			};
			PageItem
			{
				Identifier = TP_FOOTER_PAGE ;
				Text [ en-US ] = "Footer" ;
				PageResID = TP_FOOTER_PAGE ;
			};
			PageItem
			{
				Identifier = TP_COLUMN ;
				Text [ en-US ] = "Columns" ;
				PageResID = TP_COLUMN ;
			};
			PageItem
			{
				Identifier = TP_FOOTNOTE_PAGE ;
				Text [ en-US ] = "Footnote" ;
				PageResID = TP_FOOTNOTE_PAGE ;
			};*/
		};
	};
};
String STR_PAGE_STD
{
	Text [ en-US ] = "Page" ;
};
String STR_PAGE_BORDER
{
	Text [ en-US ] = "Borders" ;
};
String STR_PAGE_HEADER
{
	Text [ en-US ] = "Header" ;
};
String STR_PAGE_FOOTER
{
	Text [ en-US ] = "Footer" ;
};
String STR_PAGE_TEXTGRID
{
	Text [ en-US ] = "Text Grid" ;
};
String STR_PAGE_COLUMN
{
	Text [ en-US ] = "Columns" ;
};
String STR_PAGE_FOOTNOTE
{
	Text [ en-US ] = "Footnote" ;
};
TabDialog DLG_TEMPLATE_3
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Text [ en-US ] = "Frame Style" ;
	Moveable = TRUE ;
	TabControl 1
	{
		OutputSize = TRUE ;
		PageList =
		{
			PageItem
			{
				Identifier = TP_FRM_STD ;
				Text [ en-US ] = "Type" ;
				PageResID = TP_FRM_STD ;
			};
			PageItem
			{
				Identifier = TP_FRM_ADD ;
				PageResID = TP_FRM_ADD ;
				Text [ en-US ] = "Options" ;
			};
			PageItem
			{
				Identifier = TP_FRM_WRAP ;
				Text [ en-US ] = "Wrap" ;
				PageResID = TP_FRM_WRAP ;
			};

			//UUUU new Area and Transparence TabPages
			PageItem
			{
				Identifier = RID_SVXPAGE_AREA ;
				PageResID = RID_SVXPAGE_AREA ;
				Text [ en-US ] = "Area" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_TRANSPARENCE ;
				PageResID = RID_SVXPAGE_TRANSPARENCE ;
				Text [ en-US ] = "Transparency" ;
			};

			//UUUU Remove?
			//PageItem
			//{
			//	Identifier = TP_BACKGROUND ;
			//	Text [ en-US ] = "Background" ;
			//	PageResID = TP_BACKGROUND ;
			//};

			PageItem
			{
				Identifier = TP_BORDER ;
				Text [ en-US ] = "Borders" ;
				PageResID = TP_BORDER ;
			};
			PageItem
			{
				Identifier = TP_COLUMN ;
				Text [ en-US ] = "Columns" ;
				PageResID = TP_COLUMN ;
			};
			PageItem
			{
				Identifier = TP_MACRO_ASSIGN ;
				Text [ en-US ] = "Macro" ;
			};
		};
	};
};
TabDialog DLG_TEMPLATE_5
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Moveable = TRUE ;
	TabControl 1
	{
		PageList =
		{
			PageItem
			{
				Identifier = RID_SVXPAGE_PICK_BULLET ;
				Text [ en-US ] = "Bullets" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_PICK_SINGLE_NUM ;
				Text [ en-US ] = "Numbering" ;
			};
			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 ;
				Text [ en-US ] = "Options" ;
			};
		};
	};
	Text [ en-US ] = "List Style" ;
};

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