/**************************************************************
 *
 * 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 <sfx2/sfxsids.hrc>
#include "helpid.hrc"
#include "gallery.hrc"
#include <svx/exthelpid.hrc>

TabDialog RID_SVXTABDLG_GALLERY
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Text [ en-US ] = "Properties of " ;
	Moveable = TRUE ;
	TabControl 1
	{
		OutputSize = TRUE ;
		PageList =
		{
			PageItem
			{
				Identifier = RID_SVXTABPAGE_GALLERY_GENERAL ;
				Text [ en-US ] = "General" ;
			};
		};
	};
};

/******************************************************************************/

TabDialog RID_SVXTABDLG_GALLERYTHEME
{
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Text [ en-US ] = "Properties of " ;
	Moveable = TRUE ;
	TabControl 1
	{
		OutputSize = TRUE ;
		PageList =
		{
			PageItem
			{
				Identifier = RID_SVXTABPAGE_GALLERY_GENERAL ;
				Text [ en-US ] = "General" ;
			};
			PageItem
			{
				Identifier = RID_SVXTABPAGE_GALLERYTHEME_FILES ;
				Text [ en-US ] = "Files" ;
			};
		};
	};
};

/******************************************************************************/

TabPage RID_SVXTABPAGE_GALLERY_GENERAL
{
	HelpId = HID_GALLERY_PROPERTIES_GENERAL ;
	SVLook = TRUE ;
	Hide = TRUE ;
	Size = MAP_APPFONT ( 260, 185 ) ;
	FixedImage FI_MS_IMAGE
	{
		Pos = MAP_APPFONT ( 6, 6 ) ;
		Size = MAP_APPFONT ( 20, 20 ) ;
	};
	Edit EDT_MS_NAME
	{
		HelpID = "cui:Edit:RID_SVXTABPAGE_GALLERY_GENERAL:EDT_MS_NAME" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 60, 10 ) ;
		Size = MAP_APPFONT ( 194, 12 ) ;
	};
	FixedLine FL_MS_GENERAL_FIRST
	{
		Pos = MAP_APPFONT ( 6, 36 ) ;
		Size = MAP_APPFONT ( 248, 1 ) ;
	};
	FixedText FT_MS_TYPE
	{
		Pos = MAP_APPFONT ( 6, 43 ) ;
		Size = MAP_APPFONT ( 51, 10 ) ;
		LeftLabel = TRUE ;
		Text [ en-US ] = "Type:" ;
	};
	FixedText FT_MS_SHOW_TYPE
	{
		Pos = MAP_APPFONT ( 60, 43 ) ;
		Size = MAP_APPFONT ( 194, 10 ) ;
	};
	FixedText FT_MS_PATH
	{
		Pos = MAP_APPFONT ( 6, 57 ) ;
		Size = MAP_APPFONT ( 51, 10 ) ;
		LeftLabel = TRUE ;
		Text [ en-US ] = "Location:" ;
	};
	FixedText FT_MS_SHOW_PATH
	{
		Pos = MAP_APPFONT ( 60, 57 ) ;
		Size = MAP_APPFONT ( 194, 10 ) ;
	};
	FixedText FT_MS_CONTENT
	{
		Pos = MAP_APPFONT ( 6, 71 ) ;
		Size = MAP_APPFONT ( 51, 10 ) ;
		LeftLabel = TRUE ;
		Text [ en-US ] = "Contents:" ;
	};
	FixedText FT_MS_SHOW_CONTENT
	{
		Pos = MAP_APPFONT ( 60, 71 ) ;
		Size = MAP_APPFONT ( 194, 10 ) ;
	};
	FixedLine FL_MS_GENERAL_SECOND
	{
		Pos = MAP_APPFONT ( 6, 91 ) ;
		Size = MAP_APPFONT ( 248, 1 ) ;
	};
	FixedText FT_MS_CHANGEDATE
	{
		Pos = MAP_APPFONT ( 6, 98 ) ;
		Size = MAP_APPFONT ( 51, 10 ) ;
		LeftLabel = TRUE ;
		Text [ en-US ] = "Modified:" ;
	};
	FixedText FT_MS_SHOW_CHANGEDATE
	{
		Pos = MAP_APPFONT ( 60, 98 ) ;
		Size = MAP_APPFONT ( 194, 10 ) ;
	};
};

/******************************************************************************/

TabPage RID_SVXTABPAGE_GALLERYTHEME_FILES
{
	HelpId = HID_GALLERY_BROWSER ;
	Hide = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 260, 185 ) ;
	FixedText FT_FILETYPE
	{
		Pos = MAP_APPFONT ( 6, 8 ) ;
		Size = MAP_APPFONT ( 48, 10 ) ;
		Text [ en-US ] = "~File type" ;
	};
	ComboBox CBB_FILETYPE
	{
		HelpID = "cui:ComboBox:RID_SVXTABPAGE_GALLERYTHEME_FILES:CBB_FILETYPE" ;
		Pos = MAP_APPFONT ( 57, 6 ) ;
		Size = MAP_APPFONT ( 121, 69 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		AutoSize = TRUE ;
		AutoHScroll = TRUE ;
	};
	MultiListBox LBX_FOUND
	{
		HelpID = "cui:MultiListBox:RID_SVXTABPAGE_GALLERYTHEME_FILES:LBX_FOUND" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 6, 23 ) ;
		Size = MAP_APPFONT ( 172, 156 ) ;
		TabStop = TRUE ;
		SimpleMode = TRUE ;
	};
	PushButton BTN_SEARCH
	{
		HelpID = "cui:PushButton:RID_SVXTABPAGE_GALLERYTHEME_FILES:BTN_SEARCH" ;
		Pos = MAP_APPFONT ( 184, 6 ) ;
		Size = MAP_APPFONT ( 70, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Find Files..." ;
	};
	PushButton BTN_TAKE
	{
		HelpID = "cui:PushButton:RID_SVXTABPAGE_GALLERYTHEME_FILES:BTN_TAKE" ;
		Pos = MAP_APPFONT ( 184, 24 ) ;
		Size = MAP_APPFONT ( 70, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "~Add" ;
	};
	PushButton BTN_TAKEALL
	{
		HelpID = "cui:PushButton:RID_SVXTABPAGE_GALLERYTHEME_FILES:BTN_TAKEALL" ;
		Pos = MAP_APPFONT ( 184, 42 ) ;
		Size = MAP_APPFONT ( 70, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "A~dd All" ;
	};
	CheckBox CBX_PREVIEW
	{
		HelpID = "cui:CheckBox:RID_SVXTABPAGE_GALLERYTHEME_FILES:CBX_PREVIEW" ;
		Pos = MAP_APPFONT ( 184, 76 ) ;
		Size = MAP_APPFONT ( 70, 12 ) ;
		Text [ en-US ] = "Pr~eview" ;
	};
	Window WND_BRSPRV
	{
		Border = TRUE ;
		Pos = MAP_APPFONT ( 184, 91 ) ;
		Size = MAP_APPFONT ( 70, 88 ) ;
	};
	PushButton BTN_MADDIN1
	{
		HelpID = "cui:PushButton:RID_SVXTABPAGE_GALLERYTHEME_FILES:BTN_MADDIN1" ;
		Pos = MAP_APPFONT ( 220, 63 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Maddin1" ;
	};
	PushButton BTN_MADDIN2
	{
		HelpID = "cui:PushButton:RID_SVXTABPAGE_GALLERYTHEME_FILES:BTN_MADDIN2" ;
		Pos = MAP_APPFONT ( 220, 80 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Maddin2" ;
	};
};

/******************************************************************************/

ModalDialog RID_SVXDLG_GALLERY_TITLE
{
	HelpId = HID_GALLERY_TITLE ;
	OutputSize = TRUE ;
	Border = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 168, 63 ) ;
	Text [ en-US ] = "Enter Title" ;
	Moveable = TRUE ;

	OkButton BTN_OK
	{
		DefButton = TRUE ;
		Pos = MAP_APPFONT ( 112, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	CancelButton BTN_CANCEL
	{
		Pos = MAP_APPFONT ( 112, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	HelpButton BTN_HELP
	{
		Pos = MAP_APPFONT ( 112, 43 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};

	FixedLine FL_TITLE
	{
		Pos = MAP_APPFONT ( 6, 6 ) ;
		Size = MAP_APPFONT ( 100, 8 ) ;
		Text [ en-US ] = "Title" ;
	};
	Edit EDT_TITLE
	{
		HelpId = HID_GALLERY_TITLE_EDIT ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 12, 18 ) ;
		Size = MAP_APPFONT ( 88, 12 ) ;
	};
};

/******************************************************************************/

ModalDialog RID_SVXDLG_GALLERY_SEARCH_PROGRESS
{
	HelpId = HID_GALLERY_SEARCH ;
	OutputSize = TRUE ;
	Border = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 124, 86 ) ;
	Text [ en-US ] = "Find" ;
	Moveable = TRUE ;
	FixedLine FL_SEARCH_DIR
	{
		Pos = MAP_APPFONT ( 6, 33 ) ;
		Size = MAP_APPFONT ( 112, 8 ) ;
		Text [ en-US ] = "Directory" ;
	};
	FixedText FT_SEARCH_DIR
	{
		Pos = MAP_APPFONT ( 12, 44 ) ;
		Size = MAP_APPFONT ( 100, 10 ) ;
	};
	CancelButton BTN_CANCEL
	{
		Pos = MAP_APPFONT ( 37, 66 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	FixedLine FL_SEARCH_TYPE
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 112, 8 ) ;
		Text [ en-US ] = "File type" ;
	};
	FixedText FT_SEARCH_TYPE
	{
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 100, 10 ) ;
	};
};

/******************************************************************************/

ModalDialog RID_SVXDLG_GALLERY_TAKE_PROGRESS
{
	HelpId = HID_GALLERY_APPLY ;
	OutputSize = TRUE ;
	Border = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 124, 56 ) ;
	Text [ en-US ] = "Apply" ;
	Moveable = TRUE ;
	FixedLine FL_TAKE_PROGRESS
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 112, 8 ) ;
		Text [ en-US ] = "File" ;
	};
	FixedText FT_TAKE_FILE
	{
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 100, 10 ) ;
	};
	CancelButton BTN_CANCEL
	{
		Pos = MAP_APPFONT ( 37, 36 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
};

/******************************************************************************/

ModalDialog RID_SVXDLG_GALLERY_ACTUALIZE_PROGRESS
{
	HelpId = HID_GALLERY_ACTUALIZE ;
	OutputSize = TRUE ;
	Border = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 124, 56 ) ;
	Text [ en-US ] = "Update" ;
	Moveable = TRUE ;
	FixedLine FL_ACTUALIZE_PROGRESS
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 112, 8 ) ;
		Text [ en-US ] = "File" ;
	};
	FixedText FT_ACTUALIZE_FILE
	{
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 100, 10 ) ;
	};
	CancelButton BTN_CANCEL
	{
		Pos = MAP_APPFONT ( 37, 36 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
};

ModalDialog RID_SVXDLG_GALLERY_THEMEID
{
	HelpID = "cui:ModalDialog:RID_SVXDLG_GALLERY_THEMEID" ;
	OutputSize = TRUE ;
	Border = TRUE ;
	SVLook = TRUE ;
	Size = MAP_APPFONT ( 180, 63 ) ;
	Text [ en-US ] = "Theme ID" ;
	Moveable = TRUE ;
	OkButton BTN_OK
	{
		Pos = MAP_APPFONT ( 124, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton BTN_CANCEL
	{
		Pos = MAP_APPFONT ( 124, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	FixedLine FL_ID
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 112, 8 ) ;
		Text [ en-US ] = "ID" ;
	};
	ListBox LB_RESNAME
	{
		HelpID = "cui:ListBox:RID_SVXDLG_GALLERY_THEMEID:LB_RESNAME" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 100, 60 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		HScroll = TRUE ;
		VScroll = TRUE ;
	};
};

String RID_SVXSTR_GALLERY_NOFILES
{
	Text [ en-US ] = "<No Files>" ;
};
String RID_SVXSTR_GALLERY_SEARCH
{
	Text [ en-US ] = "Do you want to update the file list?" ;
};
String RID_SVXSTR_GALLERYPROPS_OBJECT
{
	Text [ en-US ] = "Object;Objects" ;
};
String RID_SVXSTR_GALLERY_READONLY
{
	Text [ en-US ] = " (read-only)" ;
};
String RID_SVXSTR_GALLERY_ALLFILES
{
	Text [ en-US ] = "<All Files>" ;
};
String RID_SVXSTR_GALLERY_ID_EXISTS
{
	Text [ en-US ] = "This ID already exists..." ;
};

/******************************************************************************/

Bitmap RID_SVXBMP_THEME_NORMAL_BIG
{
	File = "galnorl.png" ;
};

Bitmap RID_SVXBMP_THEME_IMPORTED_BIG
{
	File = "galimpl.png" ;
};

Bitmap RID_SVXBMP_THEME_READONLY_BIG
{
	File = "galrdol.png" ;
};

Bitmap RID_SVXBMP_THEME_DEFAULT_BIG
{
	File = "galdefl.png" ;
};

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