/**************************************************************
 *
 * 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 "dialog.hrc"
#include "newstyle.hrc"
#include "sfx2/sfxcommands.h"

ModalDialog DLG_NEW_STYLE_BY_EXAMPLE
{
	HelpId = CMD_SID_STYLE_NEW_BY_EXAMPLE ;
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 177, 112 ) ;
	Text [ en-US ] = "Create Style" ;
	Moveable = TRUE ;
	FixedLine FL_COL
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 109, 8 ) ;
		Text [ en-US ] = "Style name" ;
	};
	ComboBox LB_COL
	{
		HelpID = "sfx2:ComboBox:DLG_NEW_STYLE_BY_EXAMPLE:LB_COL" ;
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 94, 92 ) ;
		TabStop = TRUE ;
	};
	OKButton BT_OK
	{
		Disable = TRUE ;
		Pos = MAP_APPFONT ( 121, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton BT_CANCEL
	{
		Pos = MAP_APPFONT ( 121, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	QueryBox MSG_OVERWRITE
	{
		Buttons = WB_YES_NO ;
		DefButton = WB_DEF_NO ;
		Message [ en-US ] = "Style already exists. Overwrite?" ;
	};
};

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