/**************************************************************
 *
 * 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 ---------------------------------------------------------------
#include "helpid.hrc"
#include "dialog.hrc"

// -----------------------------------------------------------------------
#define STD_MASKCOLOR Color { Red = 0xC000 ; Green = 0xC000 ; Blue = 0xC000 ; }
#define STD_HC_MASKCOLOR Color { Red = 0xFFFF ; Green = 0x0000 ; Blue = 0xFFFF ; }

FloatingWindow SID_RECORDING_FLOATWINDOW
{
	HelpID = "sfx2:FloatingWindow:SID_RECORDING_FLOATWINDOW" ;
	Moveable = TRUE ;
	Closeable = TRUE ;
	Hide = TRUE ;
	SVLook = TRUE ;
	Text [ en-US ] = "Record Macro" ;
};

ToolBox SID_RECORDING_FLOATWINDOW
{
	SVLook = TRUE ;
	ButtonType = BUTTON_TEXT ;
	ItemList =
	{
		ToolBoxItem
		{
			Identifier = SID_STOP_RECORDING ;
			Command = ".uno:StopRecording" ;
		};
	};
};

String STR_MACRO_LOSS
{
	Text [ en-US ] = "Do you really want to cancel the recording? Any steps recorded up to this point will be lost." ;
};

String STR_CANCEL_RECORDING
{
	Text [ en-US ] = "Cancel Recording" ;
};

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