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

// height and width of tab pages
#define TAB_PAGE_WIDTH  280
#define TAB_PAGE_HEIGHT 185

// margin between the tab page and its content
#define TAB_PAGE_CONTENT_MARGIN 12

// dimensions of certain control types
#define FIXED_TEXT_HEIGHT       8
#define INPUT_HEIGHT            12
#define PROGRESS_HEIGHT         12
#define BUTTON_WIDTH            50
#define BUTTON_HEIGHT           14

// spacing after the header on each page
#define SPACING_AFTER_HEADER    6
// spacing between related controls
#define SPACING_RELATED         3
// spacing between unrelated controls
#define SPACING_UNRELATED       6

// the position of the first control after the header
#define CONTENT_POS_X           ( TAB_PAGE_CONTENT_MARGIN + FIXED_TEXT_HEIGHT + SPACING_AFTER_HEADER )

//... fixed texts  .......................................................

#define FT_HEADER                   1
#define FT_INTRODUCTION             2
#define FT_EXPLANATION              3
#define FT_SAVE_AS_LABEL            4
#define FT_START_MIGRATION          5
#define FT_CURRENT_OBJECT_LABEL     6
#define FT_CURRENT_OBJECT           7
#define FT_CURRENT_PROGRESS_LABEL     8
#define FT_CURRENT_PROGRESS           9
#define FT_ALL_PROGRESS_LABEL       10
#define FT_CHANGES_LABEL            11
#define FT_OBJECT_COUNT             12
#define FT_OBJECT_COUNT_PROGRESS    13
#define FT_MIGRATION_DONE           14
#define FT_CLOSE_DOC_ERROR          15

//... windows ............................................................

#define WND_CURRENT_PROGRESS    1
#define WND_ALL_PROGRESS        2

//... edits ..............................................................

#define ED_SAVE_AS_LOCATION     1
#define ED_CHANGES              2

//... buttons ............................................................

#define PB_BROWSE_SAVE_AS_LOCATION  1

//... strings ............................................................

#define STR_STATE_CLOSE_SUB_DOCS    1
#define STR_STATE_BACKUP_DBDOC      2
#define STR_STATE_MIGRATE           3
#define STR_STATE_SUMMARY           4
#define STR_SUCCESSFUL              5
#define STR_UNSUCCESSFUL            6

#endif // DBACCESS_MACROMIGRATION_HRC
