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

#include <svtools/controldims.hrc>

#define FI_IMAGE            10
#define FT_INFO             11
#define FL_BUTTON           12
#define PB_UPDATE           13
#define PB_LATER            14

#define IMAGE_WIDTH         20
#define IMAGE_HEIGHT        IMAGE_WIDTH
#define INFO_WIDTH          180
#define INFO_LINES          7
#define DLG_WIDTH           (RSC_SP_DLG_INNERBORDER_LEFT + IMAGE_WIDTH + RSC_SP_CTRL_X + INFO_WIDTH + RSC_SP_DLG_INNERBORDER_RIGHT)

#define COL_1               RSC_SP_DLG_INNERBORDER_LEFT
#define COL_2               (COL_1 + IMAGE_WIDTH + RSC_SP_CTRL_X)
#define COL_4               (DLG_WIDTH - RSC_SP_DLG_INNERBORDER_LEFT - RSC_CD_PUSHBUTTON_WIDTH)
#define COL_3               (COL_4 - RSC_SP_CTRL_GROUP_X - RSC_CD_PUSHBUTTON_WIDTH)

#define ROW_1               RSC_SP_DLG_INNERBORDER_TOP
#define ROW_2               (ROW_1 + INFO_LINES * RSC_CD_FIXEDTEXT_HEIGHT + RSC_SP_CTRL_GROUP_Y)
#define ROW_3               (ROW_2 + RSC_CD_FIXEDLINE_HEIGHT + RSC_SP_CTRL_GROUP_Y)

#define DLG_HEIGHT          (ROW_3 + RSC_CD_PUSHBUTTON_HEIGHT + RSC_SP_DLG_INNERBORDER_BOTTOM)
#define MAX_BUTTON_WIDTH    (DLG_WIDTH - RSC_SP_DLG_INNERBORDER_LEFT - RSC_SP_DLG_INNERBORDER_RIGHT - RSC_SP_CTRL_GROUP_X) / 2

#endif // #ifndef _NEWERVERSIONWARNING_HRC
