/**************************************************************
 *
 * 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 _SD_ANNOTATIONPANE_HRC
#define _SD_ANNOTATIONPANE_HRC

#include "glob.hrc"

// strings
#define STR_ANNOTATION_TODAY				(RID_ANNOTATIONS_START+1)
#define STR_ANNOTATION_YESTERDAY			(RID_ANNOTATIONS_START+2)
#define STR_ANNOTATION_NOAUTHOR				(RID_ANNOTATIONS_START+3)
#define STR_ANNOTATION_WRAP_FORWARD			(RID_ANNOTATIONS_START+4)
#define STR_ANNOTATION_WRAP_BACKWARD		(RID_ANNOTATIONS_START+5)
#define STR_ANNOTATION_WRAP_FORWARD_DRAW	(RID_ANNOTATIONS_START+6)
#define STR_ANNOTATION_WRAP_BACKWARD_DRAW	(RID_ANNOTATIONS_START+7)
#define STR_ANNOTATION_UNDO_INSERT			(RID_ANNOTATIONS_START+8)
#define STR_ANNOTATION_UNDO_DELETE			(RID_ANNOTATIONS_START+9)
#define STR_ANNOTATION_UNDO_MOVE			(RID_ANNOTATIONS_START+10)
#define STR_ANNOTATION_UNDO_EDIT			(RID_ANNOTATIONS_START+11)
#define STR_ANNOTATION_UNDO_REPLY			(RID_ANNOTATIONS_START+12)
#define	STR_ANNOTATION_REPLY				(RID_ANNOTATIONS_START+13)

// menus
#define RID_ANNOTATION_CONTEXTMENU			(RID_ANNOTATIONS_START+0)
#define RID_ANNOTATION_TAG_CONTEXTMENU		(RID_ANNOTATIONS_START+1)

#define BTN_NEW		1
#define BTN_DELETE	2
#define BTN_NEXT	3
#define BTN_PREV	4

#define TBX_TOOLBAR	1
#define FT_AUTHOR	1
#define ED_AUTHOR	2
#define FT_DATE		3
#define ED_DATE		4

#define CT_TEXT		5

#endif // _SD_ANNOTATIONPANE_HRC
