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


#ifndef _COMCORE_HRC
#define _COMCORE_HRC

#include "rcid.hrc"

// ---------------
// die Strings
// ---------------

#define STR_COMCORE_READERROR				(RC_COMCORE_BEGIN + 0)
#define MSG_COMCORE_ASKSEARCH				(RC_COMCORE_BEGIN + 1)
#define STR_TABLE_DEFNAME					(RC_COMCORE_BEGIN + 2)
#define STR_GRAPHIC_DEFNAME					(RC_COMCORE_BEGIN + 3)
#define STR_OBJECT_DEFNAME					(RC_COMCORE_BEGIN + 4)
#define STR_FRAME_DEFNAME					(RC_COMCORE_BEGIN + 5)
#define STR_REGION_DEFNAME					(RC_COMCORE_BEGIN + 6)
#define STR_COMCORE_CANT_SHOW				(RC_COMCORE_BEGIN + 7)
#define RID_GRAPHIC_REPLACEBMP				(RC_COMCORE_BEGIN + 8)
#define RID_GRAPHIC_ERRORBMP				(RC_COMCORE_BEGIN + 9)
#define STR_NUMRULE_DEFNAME					(RC_COMCORE_BEGIN + 10)
#define STR_EMPTYPAGE						(RC_COMCORE_BEGIN + 11)
#define RID_SHELLRES_AUTOFMTSTRS			(RC_COMCORE_BEGIN + 12)
#define STR_MULT_INTERACT_HYPH_WARN			(RC_COMCORE_BEGIN + 13)
#define STR_MULT_INTERACT_SPELL_WARN		(RC_COMCORE_BEGIN + 14)
#define STR_SPELL_TITLE						(RC_COMCORE_BEGIN + 15)
#define STR_HYPH_TITLE						(RC_COMCORE_BEGIN + 16)
#define MSG_DISABLE_UNDO_QUESTION			(RC_COMCORE_BEGIN + 17)
#define MSG_DISABLE_READLINE_QUESTION		(RC_COMCORE_BEGIN + 18)
// -> #111827#
#define STR_REDLINE_INSERT		            (RC_COMCORE_BEGIN + 19)
#define STR_REDLINE_DELETE		            (RC_COMCORE_BEGIN + 20)
#define STR_REDLINE_FORMAT		            (RC_COMCORE_BEGIN + 21)
#define STR_REDLINE_TABLE		            (RC_COMCORE_BEGIN + 22)
#define STR_REDLINE_FMTCOLL		            (RC_COMCORE_BEGIN + 23)
#define STR_CLIPBOARD                       (RC_COMCORE_BEGIN + 24)
#define STR_START_QUOTE 		            (RC_COMCORE_BEGIN + 25)
#define STR_END_QUOTE	    	            (RC_COMCORE_BEGIN + 26)
#define STR_LDOTS   	    	            (RC_COMCORE_BEGIN + 27)
#define STR_YIELDS   	    	            (RC_COMCORE_BEGIN + 28)
#define STR_PARAGRAPHS                      (RC_COMCORE_BEGIN + 29)
#define STR_MULTISEL	                    (RC_COMCORE_BEGIN + 30)
#define STR_REDLINE_MULTIPLE	            (RC_COMCORE_BEGIN + 31)
#define STR_N_REDLINES	                    (RC_COMCORE_BEGIN + 32)
#define STR_FIELD                           (RC_COMCORE_BEGIN + 33)
// <- #111827#
// -> #115575#
#define STR_FRAME                           (RC_COMCORE_BEGIN + 34)
#define STR_OLE                             (RC_COMCORE_BEGIN + 35)
#define STR_MATH_FORMULA                    (RC_COMCORE_BEGIN + 36)
#define STR_CHART                           (RC_COMCORE_BEGIN + 37)
#define STR_NOTE                            (RC_COMCORE_BEGIN + 38)
#define STR_REFERENCE                       (RC_COMCORE_BEGIN + 39)
#define STR_SCRIPT                          (RC_COMCORE_BEGIN + 40)
#define STR_AUTHORITY_ENTRY                 (RC_COMCORE_BEGIN + 41)
#define STR_SPECIALCHAR                     (RC_COMCORE_BEGIN + 42)
#define STR_FOOTNOTE                        (RC_COMCORE_BEGIN + 43)
#define STR_GRAPHIC                         (RC_COMCORE_BEGIN + 44)
#define STR_DRAWING_OBJECTS                 (RC_COMCORE_BEGIN + 45)
#define STR_TABLE_NAME                      (RC_COMCORE_BEGIN + 46)
#define STR_PARAGRAPH_UNDO                  (RC_COMCORE_BEGIN + 47)
// <- #115575#
// -> PB #146850#
#define RID_GRAPHIC_REPLACEBMP_HC           (RC_COMCORE_BEGIN + 48)
#define RID_GRAPHIC_ERRORBMP_HC             (RC_COMCORE_BEGIN + 49)
// <- #146850#

// defines fuer die Autoformat Redline Kommentare
#define STR_AUTOFMTREDL_DEL_EMPTY_PARA			0
#define STR_AUTOFMTREDL_USE_REPLACE             1
#define STR_AUTOFMTREDL_CPTL_STT_WORD           2
#define STR_AUTOFMTREDL_CPTL_STT_SENT           3
#define STR_AUTOFMTREDL_TYPO                    4
#define STR_AUTOFMTREDL_USER_STYLE              5
#define STR_AUTOFMTREDL_BULLET                  6
#define STR_AUTOFMTREDL_UNDER              		7
#define STR_AUTOFMTREDL_BOLD              		8
#define STR_AUTOFMTREDL_FRACTION                9
#define STR_AUTOFMTREDL_DETECT_URL              10
#define STR_AUTOFMTREDL_DASH                    11
#define STR_AUTOFMTREDL_ORDINAL                 12
#define STR_AUTOFMTREDL_RIGHT_MARGIN            13
#define STR_AUTOFMTREDL_SET_TMPL_TEXT			14
#define STR_AUTOFMTREDL_SET_TMPL_INDENT			15
#define STR_AUTOFMTREDL_SET_TMPL_NEG_INDENT		16
#define STR_AUTOFMTREDL_SET_TMPL_TEXT_INDENT	17
#define STR_AUTOFMTREDL_SET_TMPL_HEADLINE		18
#define STR_AUTOFMTREDL_SET_NUMBULET			19
#define STR_AUTOFMTREDL_DEL_MORELINES			20
#define STR_AUTOFMTREDL_NON_BREAK_SPACE         21
// !!!!!!!!!!!!!!!!!!!!!!!!!!  das Ende immer richtig setzen !!!!!!!!!!!!
#define STR_AUTOFMTREDL_END						22


#endif



