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

// #include -------------------------------------------------------------------

#include "rcid.hrc"

// Dialoge --------------------------------------------------------------------

#define DLG_ENV    (RC_ENVELP_BEGIN    )
#define DLG_LAB    (RC_ENVELP_BEGIN + 1)

#define TP_ENV_ENV (RC_ENVELP_BEGIN + 2)
#define TP_ENV_FMT (RC_ENVELP_BEGIN + 3)
#define TP_ENV_PRT (RC_ENVELP_BEGIN + 4)

#define TP_LAB_LAB (RC_ENVELP_BEGIN + 5)
#define TP_LAB_FMT (RC_ENVELP_BEGIN + 6)
#define TP_LAB_PRT (RC_ENVELP_BEGIN + 7)

#define DLG_MAILMERGE (RC_ENVELP_BEGIN + 8)

#define DLG_SYNC_BTN  (RC_ENVELP_BEGIN + 9)
#define DLG_SAVE_LABEL (RC_ENVELP_BEGIN + 10)

// Bereiche -------------------------------------------------------------------

#define RC_ENVLOP_BEGIN  (RC_ENVELP_BEGIN     )
#define RC_ENVLOP_END    (RC_ENVELP_BEGIN +  9)

#define RC_ENVFMT_BEGIN  (RC_ENVELP_BEGIN + 10)
#define RC_ENVFMT_END    (RC_ENVELP_BEGIN + 19)

#define RC_ENVPRT_BEGIN  (RC_ENVELP_BEGIN + 20)
#define RC_ENVPRT_END    (RC_ENVELP_BEGIN + 39)

#define RC_LABEL_BEGIN   (RC_ENVELP_BEGIN + 40)
#define RC_LABEL_END     (RC_ENVELP_BEGIN + 49)

#define RC_LABFMT_BEGIN  (RC_ENVELP_BEGIN + 50)
#define RC_LABFMT_END    (RC_ENVELP_BEGIN + 59)

#define RC_LABPRT_BEGIN  (RC_ENVELP_BEGIN + 60)
#define RC_LABPRT_END    (RC_ENVELP_BEGIN + 69)

// Strings --------------------------------------------------------------------

#define STR_DATABASE_NOT_OPENED  (RC_ENVLOP_BEGIN + 60)
#define STR_NO_DRIVERS           (RC_ENVLOP_BEGIN + 61)
#define DLG_MERGE_CREATE         (RC_ENVLOP_BEGIN + 62)
#define DLG_MERGE_FIELD_CONNECTIONS (RC_ENVLOP_BEGIN + 63)

#define STR_BTN_NEW_DOC          (RC_ENVLOP_BEGIN + 64)
#define STR_BTN_NEWDOC           (RC_ENVLOP_BEGIN + 65)
#define STR_SENDER_TOKENS        (RC_ENVLOP_BEGIN + 66)

#define RC_ENVPRT_HC_BEGIN		 (RC_ENVLOP_BEGIN + 70)
#define RC_ENVPRT_HC_END		 (RC_ENVLOP_BEGIN + 82)

// Ueberlaufpruefung ----------------------------------------------------------

#define ENVELP_ACT_END  STR_SENDER_TOKENS

#if ENVELP_ACT_END > RC_ENVPRT_HC_END
#error Resource-Ueberlauf in #file, #line
#endif

#endif


