/**************************************************************
 *
 * 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 _DBAUI_DSSELECT_HRC_
#include "dsselect.hrc"
#endif
#ifndef _DBU_DLG_HRC_
#include "dbu_dlg.hrc"
#endif


ModalDialog DLG_DATASOURCE_SELECTION
{
	HelpID = "dbaccess:ModalDialog:DLG_DATASOURCE_SELECTION" ;
	OutputSize = TRUE ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 218, 118 ) ;
	Text [ en-US ] = "Data Source" ;

	FixedText FT_DESCRIPTION
	{
		Pos = MAP_APPFONT ( 6, 6 ) ;
		Size = MAP_APPFONT ( 154, 10 ) ;
		Text [ en-US ] = "Choose a data source:" ;
	};
	ListBox LB_DATASOURCE
	{
		HelpID = "dbaccess:ListBox:DLG_DATASOURCE_SELECTION:LB_DATASOURCE" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 6, 19 ) ;
		Size = MAP_APPFONT ( 154, 94 ) ;
		TabStop = TRUE ;
		HScroll = TRUE ;
		Sort = TRUE ;
	};

	OKButton PB_OK
	{
		Pos = MAP_APPFONT ( 166, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton PB_CANCEL
	{
		Pos = MAP_APPFONT ( 166, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	HelpButton PB_HELP
	{
		Pos = MAP_APPFONT ( 166, 43 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	PushButton PB_MANAGE
	{
		HelpID = "dbaccess:PushButton:DLG_DATASOURCE_SELECTION:PB_MANAGE" ;
		Pos = MAP_APPFONT ( 166, 99 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Disable = TRUE ;
		Hide = TRUE ;
		Text [ en-US ] = "Organize..." ;
	};
	PushButton PB_CREATE
	{
		HelpID = "dbaccess:PushButton:DLG_DATASOURCE_SELECTION:PB_CREATE" ;
		Pos = MAP_APPFONT ( 166, 99 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		Text [ en-US ] = "Create..." ;
	};
	String STR_LOCAL_DATASOURCES
	{
		Text [ en-US ] = "Local Databases" ;
	};
	String STR_DESCRIPTION2
	{
		Text [ en-US ] = "Choose a database" ;
	};
};

// ********************************************************************** EOF
