/**************************************************************
 *
 * 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.
 *
 *************************************************************/



#include "dbregister.hrc"
#include <cuires.hrc>
#include <cuires.hrc>
#include <svx/dialogs.hrc>

// RID_SFXPAGE_PATH -----------------------------------------------------
TabPage RID_SFXPAGE_DBREGISTER
{
	HelpId = "cui:TabPage:RID_SFXPAGE_DBREGISTER" ;
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Hide = TRUE ;
	Size = MAP_APPFONT ( 260, 185 ) ;
	Text [ en-US ] = "Registered databases" ;

	FixedText FT_TYPE
	{
		Hide = TRUE ;
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 40, 10 ) ;
		Text [ en-US ] = "Registered name" ;
	};
	FixedText FT_PATH
	{
		Hide = TRUE ;
		Pos = MAP_APPFONT ( 110, 14 ) ;
		Size = MAP_APPFONT ( 40, 10 ) ;
		Text [ en-US ] = "Database file" ;
	};
	Control LB_PATH
	{
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 236, 147 ) ;
		Border = TRUE ;
		TabStop = TRUE ;
	};
	PushButton BTN_NEW
	{
		HelpID = "cui:PushButton:RID_SFXPAGE_DBREGISTER:BTN_NEW" ;
		Pos = MAP_APPFONT ( 47, 165 ) ;
		Size = MAP_APPFONT ( 65, 14 ) ;
		Text [ en-US ] = "~New..." ;
	};
	PushButton BTN_EDIT
	{
		HelpID = "cui:PushButton:RID_SFXPAGE_DBREGISTER:BTN_EDIT" ;
		Pos = MAP_APPFONT ( 183, 165 ) ;
		Size = MAP_APPFONT ( 65, 14 ) ;
		Text [ en-US ] = "~Edit..." ;
	};
	PushButton BTN_DELETE
	{
		HelpID = "cui:PushButton:RID_SFXPAGE_DBREGISTER:BTN_DELETE" ;
		Pos = MAP_APPFONT ( 115, 165 ) ;
		Size = MAP_APPFONT ( 65, 14 ) ;
		Text [ en-US ] = "~Delete" ;
	};
	FixedLine GB_STD
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 248, 8 ) ;
		Text [ en-US ] = "Registered databases" ;
	};
};

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