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

ModalDialog SV_DLG_PRINT
{
	HelpID = ".HelpID:vcl:PrintDialog:Dialog" ;
	Text [en-US] = "Print" ;
	Closeable = TRUE ;
	Sizeable = TRUE ;
	Moveable = TRUE ;
	Maxable = TRUE ;
	SVLook = TRUE ;

	Size = MAP_APPFONT ( 350, 215 ) ;

	OKButton SV_PRINT_OK
	{
		DefButton = TRUE ;
		Pos = MAP_APPFONT ( 240, 195 ) ;
		Size = MAP_APPFONT ( 50, 15 ) ;
		Text [en-US] = "~Print" ;
		HelpID = ".HelpID:vcl:PrintDialog:OK" ;
	};
	CancelButton SV_PRINT_CANCEL
	{
		Pos = MAP_APPFONT ( 295, 195 ) ;
		Size = MAP_APPFONT ( 50, 15 ) ;
		HelpID = ".HelpID:vcl:PrintDialog:Cancel" ;
	};
	HelpButton SV_PRINT_HELP
	{
		Pos = MAP_APPFONT ( 5, 5 ) ;
		Size = MAP_APPFONT ( 50, 15 ) ;
		HelpID = ".HelpID:vcl:PrintDialog:Help" ;
	};

	Window SV_PRINT_PAGE_PREVIEW
	{
		Pos = MAP_APPFONT ( 5, 5 ) ;
		Size = MAP_APPFONT ( 130, 130 ) ;
		Border = FALSE ;
		HelpID = ".HelpID:vcl:PrintDialog:Preview" ;
	};
	NumericField SV_PRINT_PAGE_EDIT
	{
		Pos = MAP_APPFONT ( 5, 140 ) ;
		Size = MAP_APPFONT ( 30, 12 ) ;
		SVLook = TRUE ;
		Spin = FALSE ;
		Border = TRUE ;
		HelpID = ".HelpID:vcl:PrintDialog:PageEdit" ;
	};
	FixedText SV_PRINT_PAGE_TXT
	{
		Pos = MAP_APPFONT ( 40,142 ) ;
		Size = MAP_APPFONT ( 30, 12 ) ;
		Text [ en-US ] = "/ %n" ;
		VCenter = TRUE ;
		HelpID = ".HelpID:vcl:PrintDialog:NumPagesText" ;
	};
	PushButton SV_PRINT_PAGE_FORWARD
	{
		Pos = MAP_APPFONT ( 95, 140 ) ;
		Size = MAP_APPFONT ( 15, 12 ) ;
		HelpID = ".HelpID:vcl:PrintDialog:ForwardBtn" ;
	};
	PushButton SV_PRINT_PAGE_BACKWARD
	{
		Pos = MAP_APPFONT ( 80, 140 ) ;
		Size = MAP_APPFONT ( 15, 12 ) ;
		HelpID = ".HelpID:vcl:PrintDialog:BackwardBtn" ;
	};
	TabControl SV_PRINT_TABCTRL
	{
		Pos = MAP_APPFONT ( 140, 5 ) ;
		Size = MAP_APPFONT ( 205, 175 ) ;
		HelpID = ".HelpID:vcl:PrintDialog:TabPages" ;
	};
	FixedLine SV_PRINT_BUTTONLINE
	{
		Pos = MAP_APPFONT ( 0, 185 ) ;
		Size = MAP_APPFONT ( 350, 8 ) ;
	};
	String SV_PRINT_NOPAGES
	{
		Text [en-US] = "No pages" ;
	};

	String SV_PRINT_TOFILE_TXT
	{
		Text [en-US] = "Print to File..." ;
	};

	String SV_PRINT_DEFPRT_TXT
	{
		Text [en-US] = "Default printer" ;
	};


	String SV_PRINT_PRINTPREVIEW_TXT
	{
		Text [en-US] = "Print preview" ;
	};

	TabPage SV_PRINT_TAB_NUP
	{
		HelpID = ".HelpID:vcl:PrintDialog:NUpPage" ;
		Text [en-US] = "Page Layout" ;
		Hide = TRUE ;

		FixedLine SV_PRINT_PRT_NUP_LAYOUT_FL
		{
			Pos = MAP_APPFONT ( 5, 5 ) ;
			Size = MAP_APPFONT ( 150, 10 ) ;
			Text [en-US] = "Layout" ;
		};
		RadioButton SV_PRINT_PRT_NUP_BROCHURE_BTN
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:Brochure" ;
			Pos = MAP_APPFONT ( 0, 0 ) ;
			Size = MAP_APPFONT ( 10, 10 ) ;
			Text = "" ;
		};
		RadioButton SV_PRINT_PRT_NUP_PAGES_BTN
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:PagesPerSheet" ;
			Pos = MAP_APPFONT ( 0, 0 ) ;
			Size = MAP_APPFONT ( 10, 10 ) ;
			Text [en-US] = "Pa~ges per sheet" ;
		};
		ListBox SV_PRINT_PRT_NUP_PAGES_BOX
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:PagesPerSheetBox" ;
			Pos = MAP_APPFONT ( 0, 0 ) ;
			Size = MAP_APPFONT ( 10, 80 ) ;
			Border = TRUE ;
			DropDown = TRUE ;
			CurPos = 0 ;
			StringList [en-US] =
			{
				< "1" ; 1;				> ;
				< "2" ; 2;				> ;
				< "4" ; 4;				> ;
				< "6" ; 6;				> ;
				< "9" ; 9;				> ;
				< "16" ; 16;			> ;
				< "Custom" ; 0xffff;	> ;
			};
		};
		FixedText SV_PRINT_PRT_NUP_NUM_PAGES_TXT
		{
			Pos = MAP_APPFONT ( 0, 0 ) ;
			Size = MAP_APPFONT ( 10, 10 ) ;
			Text [en-US] = "P~ages" ;
			VCenter = TRUE ;
		};
		NumericField SV_PRINT_PRT_NUP_COLS_EDT
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:ColumnsBox" ;
			Pos = MAP_APPFONT ( 55, 20 ) ;
			Size = MAP_APPFONT ( 40, 12 ) ;
			Border = TRUE ;
			Spin = TRUE ;
			Minimum = 1 ;
			Maximum = 32 ;
			Value = 1 ;
		};
		FixedText SV_PRINT_PRT_NUP_TIMES_TXT
		{
			Pos = MAP_APPFONT ( 10, 35 ) ;
			Size = MAP_APPFONT ( 40, 10 ) ;
			Text [en-US] = "b~y" ;
			VCenter = TRUE ;
		};
		NumericField SV_PRINT_PRT_NUP_ROWS_EDT
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:RowsBox" ;
			Pos = MAP_APPFONT ( 55, 35 ) ;
			Size = MAP_APPFONT ( 40, 12 ) ;
			Border = TRUE ;
			Spin = TRUE ;
			Minimum = 1 ;
			Maximum = 32 ;
			Value = 1 ;
		};
		FixedText SV_PRINT_PRT_NUP_MARGINS_PAGES_1_TXT
		{
			Pos = MAP_APPFONT ( 10, 95 ) ;
			Size = MAP_APPFONT ( 40, 10 ) ;
			Text [en-US] = "~Distance" ;
		};
		MetricField SV_PRINT_PRT_NUP_MARGINS_PAGES_EDT
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:PageMarginBox" ;
			Pos = MAP_APPFONT ( 55, 95 ) ;
			Size = MAP_APPFONT ( 40, 12 ) ;
			Spin = TRUE ;
			Border = TRUE ;
			Value = 0 ;
			Unit = FUNIT_MM ;
		};
		FixedText SV_PRINT_PRT_NUP_MARGINS_PAGES_2_TXT
		{
			Pos = MAP_APPFONT ( 10, 95 ) ;
			Size = MAP_APPFONT ( 40, 10 ) ;
			Text [en-US] = "between pages" ;
		};
		FixedText SV_PRINT_PRT_NUP_MARGINS_SHEET_1_TXT
		{
			Pos = MAP_APPFONT ( 110, 95 ) ;
			Size = MAP_APPFONT ( 40, 10 ) ;
			Text [en-US] = "~Margin" ;
		};
		MetricField SV_PRINT_PRT_NUP_MARGINS_SHEET_EDT
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:SheetMarginBox" ;
			Pos = MAP_APPFONT ( 155, 95 ) ;
			Size = MAP_APPFONT ( 40, 12 ) ;
			Spin = TRUE ;
			Border = TRUE ;
			Value = 0 ;
			Unit = FUNIT_MM ;
		};
		FixedText SV_PRINT_PRT_NUP_MARGINS_SHEET_2_TXT
		{
			Pos = MAP_APPFONT ( 110, 95 ) ;
			Size = MAP_APPFONT ( 40, 10 ) ;
			Text [en-US] = "to sheet border" ;
		};
		FixedText SV_PRINT_PRT_NUP_ORIENTATION_TXT
		{
			Pos = MAP_APPFONT ( 0, 0 ) ;
			Size = MAP_APPFONT ( 10, 10 ) ;
			Text [en-US] = "~Orientation" ;
		};
		ListBox SV_PRINT_PRT_NUP_ORIENTATION_BOX
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:OrientationBox" ;
			Pos = MAP_APPFONT ( 0, 0 ) ;
			Size = MAP_APPFONT ( 10, 40 ) ;
			Border = TRUE ;
			DropDown = TRUE ;
			CurPos = 0 ;
			StringList [en-US] =
			{
				< "Automatic" ; SV_PRINT_PRT_NUP_ORIENTATION_AUTOMATIC;	> ;
				< "Portrait" ; SV_PRINT_PRT_NUP_ORIENTATION_PORTRAIT;	> ;
				< "Landscape" ; SV_PRINT_PRT_NUP_ORIENTATION_LANDSCAPE;	> ;
			};
		};
		FixedText SV_PRINT_PRT_NUP_ORDER_TXT
		{
			Pos = MAP_APPFONT ( 0, 0 ) ;
			Size = MAP_APPFONT ( 10, 10 ) ;
			Text [en-US] = "Order" ;
		};
		ListBox SV_PRINT_PRT_NUP_ORDER_BOX
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:OrderBox" ;
			Pos = MAP_APPFONT ( 0, 0 ) ;
			Size = MAP_APPFONT ( 10, 50 ) ;
			DropDown = TRUE ;
			Border = TRUE ;
			CurPos = 0 ;
			StringList [en-US] =
			{
				< "left to right, then down" ; SV_PRINT_PRT_NUP_ORDER_LRTB;		> ;
				< "top to bottom, then right" ; SV_PRINT_PRT_NUP_ORDER_TBLR;	> ;
				< "top to bottom, then left" ; SV_PRINT_PRT_NUP_ORDER_TBRL;		> ;
				< "right to left, then down" ; SV_PRINT_PRT_NUP_ORDER_RLTB;		> ;
			};
		};
		CheckBox SV_PRINT_PRT_NUP_BORDER_CB
		{
			HelpID = ".HelpID:vcl:PrintDialog:NUpPage:BorderBox" ;
			Pos = MAP_APPFONT ( 10, 65 ) ;
			Size = MAP_APPFONT ( 150, 12 ) ;
			Text [en-US] = "Draw a border around each page" ;
		};
	};

	TabPage SV_PRINT_TAB_JOB
	{
		HelpID = ".HelpID:vcl:PrintDialog:JobPage" ;
		Text [en-US] = "General" ;
		Hide = TRUE ;

		FixedLine SV_PRINT_PRINTERS_FL
		{
			Pos = MAP_APPFONT ( 5, 5 ) ;
			Size = MAP_APPFONT ( 100, 10 ) ;
			Text [ en-US ] = "Prin~ter" ;
		};
		ListBox SV_PRINT_PRINTERS
		{
			HelpID = ".HelpID:vcl:PrintDialog:JobPage:PrinterList" ;
			Pos = MAP_APPFONT ( 5, 5 ) ;
			Size = MAP_APPFONT ( 100, 80 ) ;
			Border = TRUE ;
			Sort = TRUE ;
		};
		CheckBox SV_PRINT_DETAILS_BTN
		{
			HelpID = ".HelpID:vcl:PrintDialog:JobPage:DetailsBtn" ;
			Pos = MAP_APPFONT ( 5, 5 ) ;
			Size = MAP_APPFONT ( 5, 5 ) ;
			Text [en-US] = "Details" ;
		};
		FixedText SV_PRINT_STATUS_TXT
		{
			Pos = MAP_APPFONT ( 5, 5 ) ;
			Size = MAP_APPFONT ( 100, 10 ) ;
			Text [en-US] = "Status:" ;
		};
		FixedText SV_PRINT_LOCATION_TXT
		{
			Pos = MAP_APPFONT ( 5, 5 ) ;
			Size = MAP_APPFONT ( 100, 10 ) ;
			Text [en-US] = "Location:" ;
		};
		FixedText SV_PRINT_COMMENT_TXT
		{
			Pos = MAP_APPFONT ( 5, 5 ) ;
			Size = MAP_APPFONT ( 100, 10 ) ;
			Text [en-US] = "Comment:" ;
		};
		PushButton SV_PRINT_PRT_SETUP
		{
			HelpID = ".HelpID:vcl:PrintDialog:JobPage:Properties" ;
			Pos = MAP_APPFONT ( 115, 5 ) ;
			Size = MAP_APPFONT ( 50, 15 ) ;
			Text [en-US] = "Properties..." ;
		};
		FixedLine SV_PRINT_COPIES
		{
			Pos = MAP_APPFONT ( 5, 35 ) ;
			Size = MAP_APPFONT ( 150, 10 ) ;
			Text [en-US] = "Range and copies" ;
		};
		FixedText SV_PRINT_COPYCOUNT
		{
			Pos = MAP_APPFONT ( 10, 45 ) ;
			Size = MAP_APPFONT ( 80, 10 ) ;
			Text [en-US] = "Number of copies" ;
		};
		NumericField SV_PRINT_COPYCOUNT_FIELD
		{
			HelpID = ".HelpID:vcl:PrintDialog:JobPage:Copies" ;
			Pos = MAP_APPFONT ( 10, 56 ) ;
			Size = MAP_APPFONT ( 40, 12 ) ;
			Border = TRUE ;
			Spin = TRUE ;
			Minimum = 1 ;
			Maximum = 16384 ;
			Value = 1 ;
		};
		FixedImage SV_PRINT_COLLATE_IMAGE
		{
			Pos = MAP_APPFONT ( 95, 60 ) ;
			Size = MAP_PIXEL ( 80, 30 ) ;
		};
		CheckBox SV_PRINT_COLLATE
		{
			HelpID = ".HelpID:vcl:PrintDialog:JobPage:Collate" ;
			Pos = MAP_APPFONT ( 95, 45 ) ;
			Size = MAP_APPFONT ( 70, 10 ) ;
			Text [en-US] = "Collate" ;
		};

		Image SV_PRINT_COLLATE_IMG
		{
			ImageBitmap = Bitmap { File = "collate.png" ; } ;
		};

		Image SV_PRINT_NOCOLLATE_IMG
		{
			ImageBitmap = Bitmap { File = "ncollate.png" ; } ;
		};

		Image SV_PRINT_COLLATE_HC_IMG
		{
			ImageBitmap = Bitmap { File = "collate_h.png" ; } ;
		};

		Image SV_PRINT_NOCOLLATE_HC_IMG
		{
			ImageBitmap = Bitmap { File = "ncollate_h.png" ; } ;
		};

		CheckBox SV_PRINT_OPT_REVERSE
		{
			HelpID = ".HelpID:vcl:PrintDialog:OptPage:ToReverse" ;
			Pos = MAP_APPFONT ( 10, 50 ) ;
			Size = MAP_APPFONT ( 200, 12 ) ;
			Text [en-US] = "Print in ~reverse page order" ;
		};
	};

	TabPage SV_PRINT_TAB_OPT
	{
		Text [en-US] = "Options" ;
		Hide = TRUE ;
		HelpID = ".HelpID:vcl:PrintDialog:OptPage" ;

		FixedLine SV_PRINT_OPT_PRINT_FL
		{
			Pos = MAP_APPFONT ( 5, 5 ) ;
			Size = MAP_APPFONT ( 150, 10 ) ;
			Text [en-US] = "Options" ;
		};
		CheckBox SV_PRINT_OPT_TOFILE
		{
			HelpID = ".HelpID:vcl:PrintDialog:OptPage:ToFile" ;
			Pos = MAP_APPFONT ( 10, 20 ) ;
			Size = MAP_APPFONT ( 200, 12 ) ;
			Text [en-US] = "Print to ~file" ;
		};
		CheckBox SV_PRINT_OPT_SINGLEJOBS
		{
			HelpID = ".HelpID:vcl:PrintDialog:OptPage:SingleJobs" ;
			Pos = MAP_APPFONT ( 10, 35 ) ;
			Size = MAP_APPFONT ( 200, 12 ) ;
			Text [en-US] = "~Create single print jobs for collated output" ;
		};
	};
};

ModelessDialog SV_DLG_PRINT_PROGRESS
{
	HelpID = "vcl:ModelessDialog:SV_DLG_PRINT_PROGRESS" ;
	Text [en-US] = "Printing" ;
	Closeable = FALSE ;
	Sizeable = FALSE ;
	Moveable = TRUE ;
	SVLook = TRUE ;

	Size = MAP_APPFONT ( 120, 70 ) ;

	CancelButton SV_PRINT_PROGRESS_CANCEL
	{
		Pos = MAP_APPFONT ( 35, 50 ) ;
		Size = MAP_APPFONT ( 50, 15 ) ;
	};
	FixedText SV_PRINT_PROGRESS_TEXT
	{
		Pos = MAP_APPFONT ( 5,10 ) ;
		Size = MAP_APPFONT ( 110, 10 ) ;
		Text [ en-US ] = "Page %p of %n" ;
		Center = TRUE ;
	};
};

ErrorBox SV_PRINT_NOPRINTERWARNING
{
	Title = "%PRODUCTNAME" ;
	Message [en-US] = "No default printer found.\nPlease choose a printer and try again." ;
};

ErrorBox SV_PRINT_NOCONTENT
{
	Title = "%PRODUCTNAME" ;
	Message [en-US] = "There are no pages to be printed. Please check your document for ranges relevant to printing." ;
};

StringArray SV_PRINT_NATIVE_STRINGS
{
	ItemList [en-US] =
	{
		< "Preview" ;				> ;
		< "Page number" ;			> ;
		< "Number of pages" ;		> ;
		< "More" ;					> ;
		< "Print selection only" ;	> ;
	};
};

StringArray RID_STR_PAPERNAMES
{
	ItemList [en-US] =
	{
		< "A0" ; > ;
		< "A1" ; > ;
		< "A2" ; > ;
		< "A3" ; > ;
		< "A4" ; > ;
		< "A5" ; > ;
		< "B4 (ISO)" ; > ;
		< "B5 (ISO)" ; > ;
		< "Letter" ; > ;
		< "Legal" ; > ;
		< "Tabloid" ; > ;
		< "User Defined" ; > ;
		< "B6 (ISO)" ; > ;
		< "C4 Envelope" ; > ;
		< "C5 Envelope" ; > ;
		< "C6 Envelope" ; > ;
		< "C6/5 Envelope" ; > ;
		< "DL Envelope" ; > ;
		< "Dia Slide" ; > ;
		< "Screen (4:3)" ; > ;
		< "Screen (16:9)" ; > ;
		< "Screen (16:10)" ; > ;
		< "C" ; > ;
		< "D" ; > ;
		< "E" ; > ;
		< "Executive" ; > ;
		< "Long Bond" ; > ;
		< "#8 (Monarch) Envelope" ; > ;
		< "#6 3/4 (Personal) Envelope" ; > ;
		< "#9 Envelope" ; > ;
		< "#10 Envelope" ; > ;
		< "#11 Envelope" ; > ;
		< "#12 Envelope" ; > ;
		< "16 Kai" ; > ;
		< "32 Kai" ; > ;
		< "Big 32 Kai" ; > ;
		< "B4 (JIS)" ; > ;
		< "B5 (JIS)" ; > ;
		< "B6 (JIS)" ; > ;
	};
};

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