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

String RID_SVXSTR_DESC_GRADIENT
{
	Text [ en-US ] = "Please enter a name for the gradient:" ;
};
String RID_SVXSTR_ASK_DEL_GRADIENT
{
	Text [ en-US ] = "Do you want to delete the gradient?" ;
};
String RID_SVXSTR_ASK_CHANGE_GRADIENT
{
	Text [ en-US ] = "The gradient was modified without saving. \nModify the selected gradient or add a new gradient." ;
};
String RID_SVXSTR_DESC_NEW_BITMAP
{
	Text [ en-US ] = "Please enter a name for the bitmap:" ;
};
String RID_SVXSTR_DESC_EXT_BITMAP
{
	Text [ en-US ] = "Please enter a name for the external bitmap:" ;
};
String RID_SVXSTR_ASK_DEL_BITMAP
{
	Text [ en-US ] = "Are you sure you want to delete the bitmap?" ;
};
String RID_SVXSTR_ASK_CHANGE_BITMAP
{
	Text [ en-US ] = "The bitmap was modified without saving. \nModify the selected bitmap or add a new bitmap." ;
};
String RID_SVXSTR_DESC_LINESTYLE
{
	Text [ en-US ] = "Please enter a name for the line style:" ;
};
String RID_SVXSTR_ASK_DEL_LINESTYLE
{
	Text [ en-US ] = "Do you want to delete the line style?" ;
};
String RID_SVXSTR_ASK_CHANGE_LINESTYLE
{
	Text [ en-US ] = "The line style was modified without saving. \nModify the selected line style or add a new line style." ;
};
String RID_SVXSTR_DESC_HATCH
{
	Text [ en-US ] = "Please enter a name for the hatching:" ;
};
String RID_SVXSTR_ASK_DEL_HATCH
{
	Text [ en-US ] = "Do you want to delete the hatching?" ;
};
String RID_SVXSTR_ASK_CHANGE_HATCH
{
	Text [ en-US ] = "The hatching type was modified but not saved. \nModify the selected hatching type or add a new hatching type." ;
};
String RID_SVXSTR_CHANGE
{
	Text [ en-US ] = "Modify" ;
};
String RID_SVXSTR_ADD
{
	Text [ en-US ] = "Add" ;
};
String RID_SVXSTR_DESC_COLOR
{
	Text [ en-US ] = "Please enter a name for the new color:" ;
};
String RID_SVXSTR_ASK_DEL_COLOR
{
	Text [ en-US ] = "Do you want to delete the color?" ;
};
String RID_SVXSTR_ASK_CHANGE_COLOR
{
	Text [ en-US ] = "The color was modified without saving.\nModify the selected color or add a new color." ;
};
String RID_SVXSTR_TABLE
{
	Text [ en-US ] = "Table" ;
};
String RID_SVXSTR_WRITE_DATA_ERROR
{
	Text [ en-US ] = "The file could not be saved!" ;
};
String RID_SVXSTR_READ_DATA_ERROR
{
	Text [ en-US ] = "The file could not be loaded!" ;
};
String RID_SVXSTR_WARN_TABLE_OVERWRITE
{
	Text [ en-US ] = "The list was modified without saving. Would you like to save the list now?" ;
};
String RID_SVXSTR_WARN_NAME_DUPLICATE
{
	Text [ en-US ] = "The name you have entered already exists. \nPlease choose another name." ;
};
String RID_SVXSTR_DESC_LINEEND
{
	Text [ en-US ] = "Please enter a name for the new arrowhead:" ;
};
String RID_SVXSTR_ASK_DEL_LINEEND
{
	Text [ en-US ] = "Do you want to delete the arrowhead?" ;
};
String RID_SVXSTR_ASK_CHANGE_LINEEND
{
	Text [ en-US ] = "The arrowhead was modified without saving.\nWould you like to save the arrowhead now?" ;
};

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