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

#define __RSC

#include "newerverwarn.hrc"
#include "ids.hrc"

ModalDialog RID_DLG_NEWER_VERSION_WARNING
{
	HelpId = HID_DLG_NEWERVERSIONWARNING ;
	OutputSize = TRUE ;
	Size = MAP_APPFONT ( DLG_WIDTH, DLG_HEIGHT ) ;
	SvLook = TRUE ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	Text [ en-US ] = "ODF Version Conflict" ;
	FixedImage FI_IMAGE
	{
		Pos = MAP_APPFONT ( COL_1, ROW_1 ) ;
		Size = MAP_APPFONT ( IMAGE_WIDTH, IMAGE_HEIGHT ) ;
		Hide = FALSE ;
		Fixed = Image
		{
			ImageBitmap = Bitmap {File = "versionwarning.png" ;} ;
		};
	};
	FixedText FT_INFO
	{
		Pos = MAP_APPFONT ( COL_2, ROW_1 ) ;
		Size = MAP_APPFONT ( INFO_WIDTH, INFO_LINES * RSC_CD_FIXEDTEXT_HEIGHT ) ;
		Wordbreak = TRUE ;
		Text [ en-US ] = "This document uses an unsupported version of the Open Document Format. Some features may not be displayed correctly.\n\nClick 'Update Now' to run online update and see if there is a new version of %PRODUCTNAME available." ;
	};
	FixedLine FL_BUTTON
	{
		Pos = MAP_APPFONT ( 0, ROW_2 ) ;
		Size = MAP_APPFONT ( DLG_WIDTH, RSC_CD_FIXEDLINE_HEIGHT ) ;
	};
	PushButton PB_UPDATE
	{
		HelpID = "uui:PushButton:RID_DLG_NEWER_VERSION_WARNING:PB_UPDATE" ;
		Pos = MAP_APPFONT ( COL_3, ROW_3 ) ;
		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Update Now..." ;
	};
	CancelButton PB_LATER
	{
		Pos = MAP_APPFONT ( COL_4, ROW_3 ) ;
		Size = MAP_APPFONT ( RSC_CD_PUSHBUTTON_WIDTH, RSC_CD_PUSHBUTTON_HEIGHT ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Later" ;
	};
};

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