/**************************************************************
 * 
 * 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 "versdlg.hrc"
ModalDialog DLG_VERSIONS
{
    HelpID = "sfx2:ModalDialog:DLG_VERSIONS";
	OutputSize = TRUE ;
	Size = MAP_APPFONT ( 340 , 184 ) ;
	SvLook = TRUE ;
	Moveable = TRUE ;
//!	Closeable = TRUE ;
    FixedLine GB_NEWVERSIONS
	{
		Pos = MAP_APPFONT ( 6 , 3 ) ;
        Size = MAP_APPFONT ( 272 , 8 ) ;
		Text [ en-US ] = "New versions" ;
	};
	PushButton PB_SAVE
	{
	    HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_SAVE";
		Pos = MAP_APPFONT ( 12 , 14 ) ;
		Size = MAP_APPFONT ( 90 , 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Save ~New Version" ;
	};
	CheckBox CB_SAVEONCLOSE
	{
	    HelpID = "sfx2:CheckBox:DLG_VERSIONS:CB_SAVEONCLOSE";
		Pos = MAP_APPFONT ( 108 , 16 ) ;
		Size = MAP_APPFONT ( 164 , 10 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Always save a version on closing" ;
	};
    FixedLine GB_OLDVERSIONS
	{
        Pos = MAP_APPFONT ( 6 , 34 ) ;
        Size = MAP_APPFONT ( 272 , 8 ) ;
		Text [ en-US ] = "Existing versions" ;
	};
	FixedText FT_DATETIME
	{
        Pos = MAP_APPFONT ( 15 , 45 ) ;
		Size = MAP_APPFONT ( 60 , 10 ) ;
		Text [ en-US ] = "Date and time" ;
	};
	FixedText FT_SAVEDBY
	{
        Pos = MAP_APPFONT ( 76 , 45 ) ;
		Size = MAP_APPFONT ( 60 , 10 ) ;
		Text [ en-US ] = "Saved by" ;
	};
	FixedText FT_COMMENTS
	{
        Pos = MAP_APPFONT ( 138 , 45 ) ;
		Size = MAP_APPFONT ( 60 , 10 ) ;
		Text [ en-US ] = "Comments" ;
	};
	Control TLB_VERSIONS
	{
		Border = TRUE ;
        Pos = MAP_APPFONT ( 12 , 58 ) ;
        Size = MAP_APPFONT ( 260 , 114 ) ;
		TabStop = TRUE ;
	};
	CancelButton PB_CLOSE
	{
		Pos = MAP_APPFONT ( 284 , 6 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Close" ;
	};
	PushButton PB_OPEN
	{
	    HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_OPEN";
		Pos = MAP_APPFONT ( 284 , 26 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Open" ;
	};
	PushButton PB_VIEW
	{
	    HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_VIEW";
		Pos = MAP_APPFONT ( 284 , 43 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
		Text [ en-US ] = "~Show..." ;
	};
	PushButton PB_DELETE
	{
	    HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_DELETE";
		Pos = MAP_APPFONT ( 284 , 60 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Delete" ;
	};
	PushButton PB_COMPARE
	{
	    HelpID = "sfx2:PushButton:DLG_VERSIONS:PB_COMPARE";
		Pos = MAP_APPFONT ( 284 , 77 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Compare" ;
	};
	HelpButton PB_HELP
	{
		Pos = MAP_APPFONT ( 284 , 97 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
	};
	Text [ en-US ] = "Versions of" ;
};
ModalDialog DLG_COMMENTS
{
    HelpID = "sfx2:ModalDialog:DLG_COMMENTS";
	OutputSize = TRUE ;
	Size = MAP_APPFONT ( 180 , 118 ) ;
	SvLook = TRUE ;
	Moveable = TRUE ;
	FixedText FT_DATETIME
	{
		Pos = MAP_APPFONT ( 6 , 6 ) ;
		Size = MAP_APPFONT ( 168 , 10 ) ;
		Text [ en-US ] = "Date and time : " ;
	};
	FixedText FT_SAVEDBY
	{
		Pos = MAP_APPFONT ( 6 , 19 ) ;
		Size = MAP_APPFONT ( 168 , 10 ) ;
		Text [ en-US ] = "Saved by " ;
	};
	MultiLineEdit ME_VERSIONS
	{
	    HelpID = "sfx2:MultiLineEdit:DLG_COMMENTS:ME_VERSIONS";
		Border = TRUE ;
		Pos = MAP_APPFONT ( 6 , 32 ) ;
		Size = MAP_APPFONT ( 168 , 60 ) ;
		TabStop = TRUE ;
	};
	OKButton PB_OK
	{
		Pos = MAP_APPFONT ( 15 , 98 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton PB_CANCEL
	{
		Pos = MAP_APPFONT ( 68 , 98 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
	};
	PushButton PB_CLOSE
	{
	    HelpID = "sfx2:PushButton:DLG_COMMENTS:PB_CLOSE";
		Pos = MAP_APPFONT ( 68 , 98 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Close" ;
	};
	HelpButton PB_HELP
	{
		Pos = MAP_APPFONT ( 124 , 98 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		TabStop = TRUE ;
	};
	Text [ en-US ] = "Insert Version Comment" ;
};
String DLG_COMMENTS
{
	Text [ en-US ] = "Version comment" ;
};

























