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

// #include *****************************************************************

#include "rcid.hrc"

// Dialoge ******************************************************************

#define DLG_SAVE_REGISTRY_FILE  (RC_DIALOG_BEGIN +  1)

#define DLG_PASSWD              (RC_DIALOG_BEGIN +  3)
#define DLG_PASTESPECIAL        (RC_DIALOG_BEGIN +  5)
#define DLG_LINKS               (RC_DIALOG_BEGIN +  6)
#define DLG_LINKEDIT            (RC_DIALOG_BEGIN +  7)
#define DLG_INSERT_ABSTRACT     (RC_DIALOG_BEGIN +  8)
#define DLG_ASCII_FILTER     	(RC_DIALOG_BEGIN +  9)
#define DLG_WORDCOUNT           (RC_DIALOG_BEGIN + 10)
#define RID_QB_SPELL_CONTINUE   (RC_DIALOG_BEGIN + 11)
#define STR_SPELLING_COMPLETED  (RC_DIALOG_BEGIN + 12)

// Strings ******************************************************************

#define STR_LINKEDIT_TEXT       (RC_DIALOG_BEGIN +  1)

#define STR_CLOSELINKMSG        (RC_DIALOG_BEGIN +  3)
#define STR_PATH_NOT_FOUND      (RC_DIALOG_BEGIN +  4)

#define STR_FLT_SGV             (RC_DIALOG_BEGIN +  8)

#define STR_NEWDLG_NAME         (RC_DIALOG_BEGIN + 10)

// Controls *****************************************************************

#define CB_USE_PASSWD           (RC_DIALOG_BEGIN     )
#define CB_READ_ONLY            (RC_DIALOG_BEGIN +  1)

// Bereiche *****************************************************************


#define RC_REGIONSW_BEGIN 		(RC_DIALOG_BEGIN + 60)
#define RC_REGIONSW_END    		(RC_DIALOG_BEGIN + 79)

#define RC_MACASSGN_BEGIN 		(RC_DIALOG_BEGIN + 80)
#define RC_MACASSGN_END    		(RC_DIALOG_BEGIN + 89)

#define RC_DLG_ADDR			(RC_DIALOG_BEGIN + 90)
#define RC_SWDLG_BACKGROUND		(RC_DIALOG_BEGIN + 91)
#define RC_DLG_SWNUMFMTDLG		(RC_DIALOG_BEGIN + 92)
#define RC_DLG_SWBORDERDLG		(RC_DIALOG_BEGIN + 93)
#define RC_DLG_SWWRAPDLG		(RC_DIALOG_BEGIN + 94)
#define RC_DLG_SWFLDEDITDLG		(RC_DIALOG_BEGIN + 95)
// Ueberlaufpruefung ********************************************************

#define DIALOG_ACT_END  RC_MACASSGN_END

#if DIALOG_ACT_END > RC_DIALOG_END
#error Resource-Ueberlauf in #file, #line
#endif

#endif
