/**************************************************************
 *
 * 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 "../inc/helpid.hrc"			// HID_XXX

hidspecial HID_BASICIDE_PROP_BROWSER_LBOX	{ HelpID = HID_BASICIDE_PROP_BROWSER_LBOX; };
hidspecial HID_BASICIDE_PROP_BROWSER		{ HelpID = HID_BASICIDE_PROP_BROWSER; };
hidspecial HID_BASICIDE_OBJCAT_SHOW			{ HelpID = HID_BASICIDE_OBJCAT_SHOW; };
hidspecial HID_BASICIDE_OBJCAT_PROPS		{ HelpID = HID_BASICIDE_OBJCAT_PROPS; };
hidspecial HID_BASICIDE_OBJCAT_HELP			{ HelpID = HID_BASICIDE_OBJCAT_HELP; };
hidspecial HID_BASICIDE_MODULWINDOW			{ HelpID = HID_BASICIDE_MODULWINDOW; };
hidspecial HID_BASICIDE_DIALOGWINDOW		{ HelpID = HID_BASICIDE_DIALOGWINDOW; };
hidspecial HID_BASICIDE_EDITORWINDOW		{ HelpID = HID_BASICIDE_EDITORWINDOW; };
hidspecial HID_BASICIDE_BREAKPOINTWINDOW	{ HelpID = HID_BASICIDE_BREAKPOINTWINDOW; };
hidspecial HID_BASICIDE_WATCHWINDOW			{ HelpID = HID_BASICIDE_WATCHWINDOW; };
hidspecial HID_BASICIDE_STACKWINDOW			{ HelpID = HID_BASICIDE_STACKWINDOW; };
hidspecial HID_BASICIDE_TABBAR				{ HelpID = HID_BASICIDE_TABBAR; };
hidspecial HID_BASICIDE_WATCHWINDOW_LIST	{ HelpID = HID_BASICIDE_WATCHWINDOW_LIST; };
hidspecial HID_BASICIDE_STACKWINDOW_LIST	{ HelpID = HID_BASICIDE_STACKWINDOW_LIST; };
hidspecial HID_BASICIDE_ADDNEW_LANGUAGE		{ HelpID = HID_BASICIDE_ADDNEW_LANGUAGE; };
