/**************************************************************
 * 
 * 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 "dde.hrc"

ModalDialog MD_DDE_LINKEDIT
{
    HelpID = "sfx2:ModalDialog:MD_DDE_LINKEDIT";
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 223 , 74 ) ;
	Text [ en-US ] = "Modify Link" ;
	Moveable = TRUE ;
	FixedText FT_DDE_APP
	{
		Pos = MAP_APPFONT ( 12 , 16 ) ;
		Size = MAP_APPFONT ( 40 , 8 ) ;
		Text [ en-US ] = "~Application:" ;
	};
	Edit ED_DDE_APP
	{
	    HelpID = "sfx2:Edit:MD_DDE_LINKEDIT:ED_DDE_APP";
		Border = TRUE ;
		Pos = MAP_APPFONT ( 55 , 14 ) ;
		Size = MAP_APPFONT ( 100 , 12 ) ;
	};
	FixedText FT_DDE_TOPIC
	{
		Pos = MAP_APPFONT ( 12 , 34 ) ;
		Size = MAP_APPFONT ( 40 , 8 ) ;
		Text [ en-US ] = "~File:" ;
	};
	Edit ED_DDE_TOPIC
	{
	    HelpID = "sfx2:Edit:MD_DDE_LINKEDIT:ED_DDE_TOPIC";
		Border = TRUE ;
		Pos = MAP_APPFONT ( 55 , 32 ) ;
		Size = MAP_APPFONT ( 100 , 12 ) ;
	};
	FixedText FT_DDE_ITEM
	{
		Pos = MAP_APPFONT ( 12 , 52 ) ;
		Size = MAP_APPFONT ( 40 , 8 ) ;
		Text [ en-US ] = "~Category:" ;
	};
	Edit ED_DDE_ITEM
	{
	    HelpID = "sfx2:Edit:MD_DDE_LINKEDIT:ED_DDE_ITEM";
		Border = TRUE ;
		Pos = MAP_APPFONT ( 55 , 50 ) ;
		Size = MAP_APPFONT ( 100 , 12 ) ;
	};
	FixedLine GROUP_DDE_CHG
	{
		Pos = MAP_APPFONT ( 6 , 3 ) ;
		Size = MAP_APPFONT ( 155 , 8 ) ;
		Text [ en-US ] = "Modify link" ;
	};
	OKButton 1
	{
		Pos = MAP_APPFONT ( 167 , 6 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
		DefButton = TRUE ;
	};
	CancelButton 1
	{
		Pos = MAP_APPFONT ( 167 , 23 ) ;
		Size = MAP_APPFONT ( 50 , 14 ) ;
	};
};

