/**************************************************************
 *
 * 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 "pivot.hrc"

ModelessDialog RID_SCDLG_PIVOT_LAYOUT
{
	OutputSize = TRUE ;
	HelpId = CMD_SID_OPENDLG_PIVOTTABLE ;
	Size = MAP_APPFONT ( 348, 186 ) ;
	Hide = TRUE ;
	SVLook = TRUE ;
	Moveable = TRUE ;
	Closeable = FALSE ;
	Text [ en-US ] = "Pivot Table" ;

	FixedText FT_PAGE
	{
		Pos = MAP_APPFONT ( 194, 168 ) ;
		Size = MAP_APPFONT ( 37, 8 ) ;
		Text [ en-US ] = "Page Fields" ;
	};
	ScrollBar SCROLL_PAGE
	{
		Pos = MAP_APPFONT ( 198, 14 ) ;
		Size = MAP_APPFONT ( 8, 24 ) ;
		HScroll = FALSE ;
		TabStop = FALSE ;
	};
	Control WND_PAGE
	{
		Pos = MAP_APPFONT ( 18, 14 ) ;
		Size = MAP_APPFONT ( 180, 24 ) ;
		TabStop = TRUE ;
	};
	FixedText FT_COL
	{
		Pos = MAP_APPFONT ( 231, 168 ) ;
		Size = MAP_APPFONT ( 37, 8 ) ;
		Text [ en-US ] = "Column Fields" ;
	};
	ScrollBar SCROLL_COL
	{
		Pos = MAP_APPFONT ( 198, 42 ) ;
		Size = MAP_APPFONT ( 8, 24 ) ;
		HScroll = FALSE ;
		TabStop = FALSE ;
	};
	Control WND_COL
	{
		Pos = MAP_APPFONT ( 54, 42 ) ;
		Size = MAP_APPFONT ( 144, 24 ) ;
		TabStop = TRUE ;
	};
	FixedText FT_ROW
	{
		Pos = MAP_APPFONT ( 194, 176 ) ;
		Size = MAP_APPFONT ( 37, 8 ) ;
		Text [ en-US ] = "Row\nFields" ;
	};
	ScrollBar SCROLL_ROW
	{
		Pos = MAP_APPFONT ( 42, 70 ) ;
		Size = MAP_APPFONT ( 8, 96 ) ;
		HScroll = FALSE ;
		TabStop = FALSE ;
	};
	Control WND_ROW
	{
		Pos = MAP_APPFONT ( 6, 70 ) ;
		Size = MAP_APPFONT ( 36, 96 ) ;
		TabStop = TRUE ;
	};
	FixedText FT_DATA
	{
		Pos = MAP_APPFONT ( 231, 176 ) ;
		Size = MAP_APPFONT ( 37, 8 ) ;
		Text [ en-US ] = "Data Fields" ;
	};
	ScrollBar SCROLL_DATA
	{
		Pos = MAP_APPFONT ( 198, 70 ) ;
		Size = MAP_APPFONT ( 8, 96 ) ;
		HScroll = FALSE ;
		TabStop = FALSE ;
	};
	Control WND_DATA
	{
		Pos = MAP_APPFONT ( 54, 70 ) ;
		Size = MAP_APPFONT ( 144, 96 ) ;
		TabStop = TRUE ;
	};
	Control WND_SELECT
	{
		Pos = MAP_APPFONT ( 212, 14 ) ;
		Size = MAP_APPFONT ( 74, 138 ) ;
		TabStop = TRUE ;
	};
	String STR_SELECT
	{
		Text [ en-US ] = "Selection area" ;
	};
	ScrollBar WND_HSCROLL
	{
		Pos = MAP_APPFONT ( 212, 154 ) ;
		Size = MAP_APPFONT ( 74, 8 ) ;
		HScroll = TRUE ;
		TabStop = FALSE ;
	};
	FixedText FT_INFO
	{
		Pos = MAP_APPFONT ( 6, 172 ) ;
		Size = MAP_APPFONT ( 280, 8 ) ;
		WordBreak = TRUE ;
		Text [ en-US ] = "Drag the fields from the right into the desired position." ;
	};
	FixedLine FL_LAYOUT
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 200, 8 ) ;
		Text [ en-US ] = "Layout" ;
	};
	FixedLine FL_SELECT
	{
		Pos = MAP_APPFONT ( 212, 3 ) ;
		Size = MAP_APPFONT ( 74, 8 ) ;
		Text [ en-US ] = "Fields" ;
	};
	OKButton BTN_OK
	{
		Pos = MAP_APPFONT ( 292, 6 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		DefButton = TRUE ;
	};
	CancelButton BTN_CANCEL
	{
		Pos = MAP_APPFONT ( 292, 23 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	HelpButton BTN_HELP
	{
		Pos = MAP_APPFONT ( 292, 43 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
	};
	PushButton BTN_REMOVE
	{
		HelpID = "sc:PushButton:RID_SCDLG_PIVOT_LAYOUT:BTN_REMOVE" ;
		Pos = MAP_APPFONT ( 292, 63 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Remove" ;
	};
	PushButton BTN_OPTIONS
	{
		HelpID = "sc:PushButton:RID_SCDLG_PIVOT_LAYOUT:BTN_OPTIONS" ;
		Pos = MAP_APPFONT ( 292, 80 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		Text [ en-US ] = "Options..." ;
	};
	MoreButton BTN_MORE
	{
		HelpID = "sc:MoreButton:RID_SCDLG_PIVOT_LAYOUT:BTN_MORE" ;
		Pos = MAP_APPFONT ( 292, 166 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		TabStop = TRUE ;
		MapUnit = MAP_APPFONT ;
		Delta = 90 ;
	};
	FixedLine FL_OUTPUT
	{
		Pos = MAP_APPFONT ( 6, 186 ) ;
		Size = MAP_APPFONT ( 280, 8 ) ;
		Text [ en-US ] = "Result" ;
		Hide = TRUE ;
	};

	FixedText FT_INAREA
	{
		Pos = MAP_APPFONT ( 12, 199 ) ;
		Size = MAP_APPFONT ( 59, 8 ) ;
		Hide = TRUE ;
		Text [ en-US ] = "Selection from" ;
	};
	Edit ED_INAREA
	{
		HelpID = "sc:Edit:RID_SCDLG_PIVOT_LAYOUT:ED_INAREA" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 73, 197 ) ;
		Size = MAP_APPFONT ( 109, 12 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	ImageButton RB_INAREA
	{
		HelpID = "sc:ImageButton:RID_SCDLG_PIVOT_LAYOUT:RB_INAREA" ;
		Pos = MAP_APPFONT ( 186, 196 ) ;
		Size = MAP_APPFONT ( 13, 15 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		QuickHelpText [ en-US ] = "Shrink" ;
	};

	FixedText FT_OUTAREA
	{
		Pos = MAP_APPFONT ( 12, 217 ) ;
		Size = MAP_APPFONT ( 59, 8 ) ;
		Hide = TRUE ;
		Text [ en-US ] = "Results to" ;
	};
	ListBox LB_OUTAREA
	{
		HelpID = "sc:ListBox:RID_SCDLG_PIVOT_LAYOUT:LB_OUTAREA" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 73, 215 ) ;
		Size = MAP_APPFONT ( 75, 90 ) ;
		TabStop = TRUE ;
		DropDown = TRUE ;
		Hide = TRUE ;
	};
	Edit ED_OUTAREA
	{
		HelpID = "sc:Edit:RID_SCDLG_PIVOT_LAYOUT:ED_OUTAREA" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 152, 215 ) ;
		Size = MAP_APPFONT ( 109, 12 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
	};
	ImageButton RB_OUTAREA
	{
		HelpID = "sc:ImageButton:RID_SCDLG_PIVOT_LAYOUT:RB_OUTAREA" ;
		Pos = MAP_APPFONT ( 265, 214 ) ;
		Size = MAP_APPFONT ( 13, 15 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		QuickHelpText [ en-US ] = "Shrink" ;
	};
	CheckBox BTN_IGNEMPTYROWS
	{
		HelpID = "sc:CheckBox:RID_SCDLG_PIVOT_LAYOUT:BTN_IGNEMPTYROWS" ;
		Pos = MAP_APPFONT ( 12, 233 ) ;
		Size = MAP_APPFONT ( 136, 10 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		Text [ en-US ] = "Ignore ~empty rows" ;
	};
	CheckBox BTN_DETECTCAT
	{
		HelpID = "sc:CheckBox:RID_SCDLG_PIVOT_LAYOUT:BTN_DETECTCAT" ;
		Pos = MAP_APPFONT ( 152, 233 ) ;
		Size = MAP_APPFONT ( 128, 10 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		Text [ en-US ] = "~Identify categories" ;
	};
	CheckBox BTN_TOTALCOL
	{
		HelpID = "sc:CheckBox:RID_SCDLG_PIVOT_LAYOUT:BTN_TOTALCOL" ;
		Pos = MAP_APPFONT ( 12, 247 ) ;
		Size = MAP_APPFONT ( 136, 10 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		Text [ en-US ] = "Total columns" ;
	};
	CheckBox BTN_TOTALROW
	{
		HelpID = "sc:CheckBox:RID_SCDLG_PIVOT_LAYOUT:BTN_TOTALROW" ;
		Pos = MAP_APPFONT ( 152, 247 ) ;
		Size = MAP_APPFONT ( 128, 10 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		Text [ en-US ] = "~Total rows" ;
	};
	CheckBox BTN_FILTER
	{
		HelpID = "sc:CheckBox:RID_SCDLG_PIVOT_LAYOUT:BTN_FILTER" ;
		Pos = MAP_APPFONT ( 12, 261 ) ;
		Size = MAP_APPFONT ( 136, 10 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		Text [ en-US ] = "~Add filter" ;
	};
	CheckBox BTN_DRILLDOWN
	{
		HelpID = "sc:CheckBox:RID_SCDLG_PIVOT_LAYOUT:BTN_DRILLDOWN" ;
		Pos = MAP_APPFONT ( 152, 261 ) ;
		Size = MAP_APPFONT ( 128, 10 ) ;
		TabStop = TRUE ;
		Hide = TRUE ;
		Text [ en-US ] = "Ena~ble drill to details" ;
	};
	String PIVOTSTR_SUM
	{
		Text [ en-US ] = "Sum - " ;
	};
	String PIVOTSTR_COUNT
	{
		Text [ en-US ] = "Count - " ;
	};
	String PIVOTSTR_AVG
	{
		Text [ en-US ] = "Mean - " ;
	};
	String PIVOTSTR_MAX
	{
		Text [ en-US ] = "Max - " ;
	};
	String PIVOTSTR_MIN
	{
		Text [ en-US ] = "Min - " ;
	};
	String PIVOTSTR_PROD
	{
		Text [ en-US ] = "Product - " ;
	};
	String PIVOTSTR_COUNT2
	{
		Text [ en-US ] = "Count - " ;
	};
	String PIVOTSTR_DEV
	{
		Text [ en-US ] = "StDev - " ;
	};
	String PIVOTSTR_DEV2
	{
		Text [ en-US ] = "StDevP - " ;
	};
	String PIVOTSTR_VAR
	{
		Text [ en-US ] = "Var - " ;
	};
	String PIVOTSTR_VAR2
	{
		Text [ en-US ] = "VarP - " ;
	};
};

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