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

String STR_SVT_PRNDLG_READY
{
	Text [ en-US ] = "Ready" ;
};
String STR_SVT_PRNDLG_PAUSED
{
	Text [ en-US ] = "Paused" ;
};
String STR_SVT_PRNDLG_PENDING
{
	Text [ en-US ] = "Pending deletion" ;
};
String STR_SVT_PRNDLG_BUSY
{
	Text [ en-US ] = "Busy" ;
};
String STR_SVT_PRNDLG_INITIALIZING
{
	Text [ en-US ] = "Initializing" ;
};
String STR_SVT_PRNDLG_WAITING
{
	Text [ en-US ] = "Waiting" ;
};
String STR_SVT_PRNDLG_WARMING_UP
{
	Text [ en-US ] = "Warming up" ;
};
String STR_SVT_PRNDLG_PROCESSING
{
	Text [ en-US ] = "Processing" ;
};
String STR_SVT_PRNDLG_PRINTING
{
	Text [ en-US ] = "Printing" ;
};
String STR_SVT_PRNDLG_OFFLINE
{
	Text [ en-US ] = "Offline" ;
};
String STR_SVT_PRNDLG_ERROR
{
	Text [ en-US ] = "Error" ;
};
String STR_SVT_PRNDLG_SERVER_UNKNOWN
{
	Text [ en-US ] = "Unknown Server" ;
};
String STR_SVT_PRNDLG_PAPER_JAM
{
	Text [ en-US ] = "Paper jam" ;
};
String STR_SVT_PRNDLG_PAPER_OUT
{
	Text [ en-US ] = "Not enough paper" ;
};
String STR_SVT_PRNDLG_MANUAL_FEED
{
	Text [ en-US ] = "Manual feed" ;
};
String STR_SVT_PRNDLG_PAPER_PROBLEM
{
	Text [ en-US ] = "Paper problem" ;
};
String STR_SVT_PRNDLG_IO_ACTIVE
{
	Text [ en-US ] = "I/O active" ;
};
String STR_SVT_PRNDLG_OUTPUT_BIN_FULL
{
	Text [ en-US ] = "Output bin full" ;
};
String STR_SVT_PRNDLG_TONER_LOW
{
	Text [ en-US ] = "Toner low" ;
};
String STR_SVT_PRNDLG_NO_TONER
{
	Text [ en-US ] = "No toner" ;
};
String STR_SVT_PRNDLG_PAGE_PUNT
{
	Text [ en-US ] = "Delete Page" ;
};
String STR_SVT_PRNDLG_USER_INTERVENTION
{
	Text [ en-US ] = "User intervention necessary" ;
};
String STR_SVT_PRNDLG_OUT_OF_MEMORY
{
	Text [ en-US ] = "Insufficient memory" ;
};
String STR_SVT_PRNDLG_DOOR_OPEN
{
	Text [ en-US ] = "Cover open" ;
};
String STR_SVT_PRNDLG_POWER_SAVE
{
	Text [ en-US ] = "Power save mode" ;
};
String STR_SVT_PRNDLG_DEFPRINTER
{
	Text [ en-US ] = "Default printer" ;
};
String STR_SVT_PRNDLG_JOBCOUNT
{
	Text [ en-US ] = "%d documents" ;
};

ModalDialog DLG_SVT_PRNDLG_PRNSETUPDLG
{
	HelpID = "svtools:ModalDialog:DLG_SVT_PRNDLG_PRNSETUPDLG" ;
	OutputSize = TRUE ;
	SVLook = TRUE ;
	Moveable = TRUE ;
	Size = MAP_APPFONT ( 260, 104 ) ;
	Text [ en-US ] = "Printer Setup" ;
	FixedLine FL_PRINTER
	{
		Pos = MAP_APPFONT ( 6, 3 ) ;
		Size = MAP_APPFONT ( 248, 8 ) ;
		Text [ en-US ] = "Printer" ;
	};
	FixedText FT_NAME
	{
		Pos = MAP_APPFONT ( 12, 14 ) ;
		Size = MAP_APPFONT ( 45, 10 ) ;
		Text [ en-US ] = "~Name" ;
	};
	ListBox LB_NAMES
	{
		HelpID = "svtools:ListBox:DLG_SVT_PRNDLG_PRNSETUPDLG:LB_NAMES" ;
		Border = TRUE ;
		Pos = MAP_APPFONT ( 60, 12 ) ;
		Size = MAP_APPFONT ( 125, 80 ) ;
		DropDown = TRUE ;
		Sort = TRUE ;
	};
	PushButton BTN_PROPERTIES
	{
		HelpID = "svtools:PushButton:DLG_SVT_PRNDLG_PRNSETUPDLG:BTN_PROPERTIES" ;
		Pos = MAP_APPFONT ( 188, 12 ) ;
		Size = MAP_APPFONT ( 60, 14 ) ;
		Text [ en-US ] = "Propert~ies..." ;
	};
	FixedText FT_STATUS
	{
		Pos = MAP_APPFONT ( 12, 29 ) ;
		Size = MAP_APPFONT ( 45, 10 ) ;
		Text [ en-US ] = "Status" ;
	};
	FixedText FI_STATUS
	{
		Pos = MAP_APPFONT ( 60, 29 ) ;
		Size = MAP_APPFONT ( 188, 10 ) ;
	};
	FixedText FT_TYPE
	{
		Pos = MAP_APPFONT ( 12, 40 ) ;
		Size = MAP_APPFONT ( 45, 10 ) ;
		Text [ en-US ] = "Type" ;
	};
	FixedText FI_TYPE
	{
		Pos = MAP_APPFONT ( 60, 40 ) ;
		Size = MAP_APPFONT ( 188, 10 ) ;
	};
	FixedText FT_LOCATION
	{
		Pos = MAP_APPFONT ( 12, 51 ) ;
		Size = MAP_APPFONT ( 45, 10 ) ;
		Text [ en-US ] = "Location" ;
	};
	FixedText FI_LOCATION
	{
		Pos = MAP_APPFONT ( 60, 51 ) ;
		Size = MAP_APPFONT ( 188, 10 ) ;
	};
	FixedText FT_COMMENT
	{
		Pos = MAP_APPFONT ( 12, 62 ) ;
		Size = MAP_APPFONT ( 45, 10 ) ;
		Text [ en-US ] = "Comment" ;
	};
	FixedText FI_COMMENT
	{
		Pos = MAP_APPFONT ( 60, 62 ) ;
		Size = MAP_APPFONT ( 188, 10 ) ;
	};
	FixedLine FL_SEPBUTTON
	{
		Pos = MAP_APPFONT ( 0, 78 ) ;
		Size = MAP_APPFONT ( 260, 2 ) ;
	};
	PushButton BTN_OPTIONS
	{
		HelpID = "svtools:PushButton:DLG_SVT_PRNDLG_PRNSETUPDLG:BTN_OPTIONS" ;
		Pos = MAP_APPFONT ( 5, 84 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		Text [ en-US ] = "~Options..." ;
	};
	OKButton BTN_OK
	{
		Pos = MAP_APPFONT ( 95, 84 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
		DefButton = TRUE ;
	};
	CancelButton BTN_CANCEL
	{
		Pos = MAP_APPFONT ( 148, 84 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
	};
	HelpButton BTN_HELP
	{
		Pos = MAP_APPFONT ( 204, 84 ) ;
		Size = MAP_APPFONT ( 50, 14 ) ;
	};
};

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