/**************************************************************
 *
 * 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 "sc.hrc" // -> #include <sfx.hrc>
#include <svx/globlmn.hrc>
#include "tbinsert.hrc" // Sub-IDs

// ToolBoxen: ----------------------------------------------------------------

/*
 * ToolBox mit Eingabezeile: HelpStrings für Knöpfe und Fenster:
 */

#define ITEM_TOOLBAR_SORT_ASCENDING \
	Identifier = SID_SORT_ASCENDING ; \
	HelpId = SID_SORT_ASCENDING ;

#define ITEM_TOOLBAR_SORT_DESCENDING \
	Identifier = SID_SORT_DESCENDING ; \
	HelpId = SID_SORT_DESCENDING ;

#define ITEM_TOOLBAR_INSERT_FRAME \
	Identifier = SID_INSERT_FRAME ; \
	HelpId = SID_INSERT_FRAME ;


#define ITEM_TOOLBAR_INSERT_GRAPHIC \
	Identifier = SID_INSERT_GRAPHIC ; \
	HelpId = SID_INSERT_GRAPHIC ;

#define ITEM_TOOLBAR_AUTO_FILTER \
	Identifier = SID_AUTO_FILTER ; \
	HelpId = SID_AUTO_FILTER ;


#define ITEM_TOOLBAR_OUTLINE_MAKE \
	Identifier = SID_OUTLINE_MAKE ; \
	HelpId = SID_OUTLINE_MAKE ;


#define ITEM_TOOLBAR_OUTLINE_REMOVE \
	Identifier = SID_OUTLINE_REMOVE ; \
	HelpId = SID_OUTLINE_REMOVE ;

#define ITEM_TOOLBAR_DRAW_CHART \
	Identifier = SID_INSERT_DIAGRAM ; \
	HelpId = SID_DRAW_CHART ;

#define ITEM_TOOLBAR_SPELLING \
	Identifier = SID_SPELL_DIALOG ; \
	HelpId = SID_SPELL_DIALOG ;

#define ITEM_TOOLBAR_THESAURUS \
	Identifier = SID_THESAURUS ; \
	HelpId = SID_THESAURUS ;

#define ITEM_TOOLBAR_FILTER \
	Identifier = SID_FILTER ; \
	HelpId = SID_FILTER ;

#define ITEM_TOOLBAR_SPECIAL_FILTER \
	Identifier = SID_SPECIAL_FILTER ;\
	HelpId = SID_SPECIAL_FILTER ;

String SCSTR_QHELP_POSWND
{
	Text [ en-US ] = "Name Box" ;
};

String SCSTR_QHELP_INPUTWND
{
	Text [ en-US ] = "Input line" ;
};

String SCSTR_QHELP_BTNCALC
{
	Text [ en-US ] = "Function Wizard" ;
};

String SCSTR_QHELP_BTNOK
{
	Text [ en-US ] = "Accept" ;
};

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

String SCSTR_QHELP_BTNSUM
{
	Text [ en-US ] = "Sum" ;
};

String SCSTR_QHELP_BTNEQUAL
{
	Text [ en-US ] = "Function" ;
};

// Don't use this image list for normal toolbar images. We have now our commandimagelist
// folder in default_images. This list is now only used for special toolboxes that are
// used in floating windows.

#define DEFAULT_IDLIST \
	IdList = {										\
		/* Eingabezeile */							\
		SID_INPUT_FUNCTION;			/* 20047 */		\
		SID_INPUT_SUM;				/* 20048 */		\
		SID_INPUT_EQUAL;			/* 20049 */		\
		SID_INPUT_CANCEL;							\
		SID_INPUT_OK;								\
	};												\
	IdCount = {										\
		5;											\
	};

ImageList RID_DEFAULTIMAGELIST_SC
{
	Prefix = "sc" ;
	MaskColor = STD_MASKCOLOR ;
	DEFAULT_IDLIST
};

ImageList RID_DEFAULTIMAGELIST_LC
{
	Prefix = "lc" ;
	MaskColor = STD_MASKCOLOR ;
	DEFAULT_IDLIST
};

ImageList RID_DEFAULTIMAGELIST_SCH
{
	Prefix = "sch" ;
	MaskColor = SC_HC_MASKCOLOR ;
	DEFAULT_IDLIST
};

ImageList RID_DEFAULTIMAGELIST_LCH
{
	Prefix = "lch" ;
	MaskColor = SC_HC_MASKCOLOR ;
	DEFAULT_IDLIST
};

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