/**************************************************************
 *
 * 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 <cuires.hrc>
#include <svx/dialogs.hrc>

TabDialog RID_SVX_FORMAT_CELLS_DLG
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 289, 176 ) ;
	Text [ en-US ] = "Format Cells" ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	TabControl 1
	{
		OutputSize = TRUE ;
		Pos = MAP_APPFONT ( 3, 3 ) ;
		Size = MAP_APPFONT ( 260, 135 ) ;
		PageList =
		{
			PageItem
			{
				Identifier = RID_SVXPAGE_CHAR_NAME ;
				PageResID = RID_SVXPAGE_CHAR_NAME ;
				Text [ en-US ] = "Font" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_CHAR_EFFECTS ;
				PageResID = RID_SVXPAGE_CHAR_EFFECTS ;
				Text [ en-US ] = "Font Effects" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_BORDER ;
				PageResID = RID_SVXPAGE_BORDER ;
				Text [ en-US ] = "Borders" ;
			};
			PageItem
			{
				Identifier = RID_SVXPAGE_AREA ;
				PageResID = RID_SVXPAGE_AREA ;
				Text [ en-US ] = "Background" ;
			};
		};
	};
	OKButton 1
	{
		Pos = MAP_APPFONT ( 6, 151 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	CancelButton 1
	{
		Pos = MAP_APPFONT ( 60, 151 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	HelpButton 1
	{
		Pos = MAP_APPFONT ( 114, 151 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	PushButton 1
	{
		Pos = MAP_APPFONT ( 169, 151 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "Return" ;
		TabStop = TRUE ;
	};
};

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