/**************************************************************
 *
 * 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 <sfx2/sfx.hrc>
#include "doc.hrc"
#include "doctdlg.hrc"
#include <sfx2/sfxcommands.h>

ModalDialog DLG_DOC_TEMPLATE
{
	HelpId = CMD_SID_DOCTEMPLATE ;
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 280, 128 ) ;
	Text [ en-US ] = "Templates" ;
	Moveable = TRUE ;
	FixedLine FL_EDIT
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 212, 8 ) ;
		Text [ en-US ] = "New template" ;
	};
	Edit ED_NAME
	{
		HelpID = "sfx2:Edit:DLG_DOC_TEMPLATE:ED_NAME" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 200, 12 ) ;
	};
	FixedLine FL_STYLESHEETS
	{
		Pos = MAP_APPFONT ( 6, 32 ) ;
		Size = MAP_APPFONT ( 212, 8 ) ;
		Text [ en-US ] = "Templates" ;
	};
	FixedText FT_SECTION
	{
		Pos = MAP_APPFONT ( 12, 43 ) ;
		Size = MAP_APPFONT ( 97, 10 ) ;
		Text [ en-US ] = "~Categories" ;
	};
	ListBox LB_SECTION
	{
		HelpID = "sfx2:ListBox:DLG_DOC_TEMPLATE:LB_SECTION" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 12, 56 ) ;
		Size = MAP_APPFONT ( 97, 66 ) ;
	};
	FixedText FT_STYLESHEETS
	{
		Pos = MAP_APPFONT ( 115, 43 ) ;
		Size = MAP_APPFONT ( 97, 10 ) ;
		Text [ en-US ] = "~Templates" ;
	};
	ListBox LB_STYLESHEETS
	{
		HelpID = "sfx2:ListBox:DLG_DOC_TEMPLATE:LB_STYLESHEETS" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 115, 56 ) ;
		Size = MAP_APPFONT ( 97, 66 ) ;
	};
	OKButton BT_OK
	{
		Pos = MAP_APPFONT ( 224, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		DefButton = TRUE ;
		Disable = TRUE ;
	};
	CancelButton BT_CANCEL
	{
		Pos = MAP_APPFONT ( 224, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
	};
	HelpButton BT_HELP
	{
		Pos = MAP_APPFONT ( 224, 43 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
	};
	PushButton BT_EDIT
	{
		HelpID = "sfx2:PushButton:DLG_DOC_TEMPLATE:BT_EDIT" ;
		Pos = MAP_APPFONT ( 224, 62 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "~Edit" ;
	};
	PushButton BT_ORGANIZE
	{
		HelpID = "sfx2:PushButton:DLG_DOC_TEMPLATE:BT_ORGANIZE" ;
		Pos = MAP_APPFONT ( 224, 79 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "~Organizer..." ;
	};
};

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