/**************************************************************
 * 
 * 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/helpids.h"

hidspecial HID_SMA_OPTIONSDIALOG		   { HelpId = HID_SMA_OPTIONSDIALOG; };
hidspecial HID_SMA_FONTDIALOG			   { HelpId = HID_SMA_FONTDIALOG; };
hidspecial HID_SMA_FONTSIZEDIALOG		   { HelpId = HID_SMA_FONTSIZEDIALOG; };
hidspecial HID_SMA_FONTTYPEDIALOG		   { HelpId = HID_SMA_FONTTYPEDIALOG; };
hidspecial HID_SMA_DISTANCEDIALOG		   { HelpId = HID_SMA_DISTANCEDIALOG; };
hidspecial HID_SMA_ALIGNDIALOG			   { HelpId = HID_SMA_ALIGNDIALOG; };
hidspecial HID_SMA_PRINTOPTIONPAGE		   { HelpId = HID_SMA_PRINTOPTIONPAGE; };
hidspecial HID_SMA_SYMBOLDIALOG 		   { HelpId = HID_SMA_SYMBOLDIALOG; };
hidspecial HID_SMA_SYMDEFINEDIALOG		   { HelpId = HID_SMA_SYMDEFINEDIALOG; };
hidspecial HID_SMA_EXTRAOPTIONPAGE		   { HelpId = HID_SMA_EXTRAOPTIONPAGE; };
hidspecial HID_SMA_DOCSAVEQUERY 		   { HelpId = HID_SMA_DOCSAVEQUERY; };
hidspecial HID_SMA_OBJECTSAVEQUERY		   { HelpId = HID_SMA_OBJECTSAVEQUERY; };
hidspecial HID_SMA_DEFAULTSAVEQUERY 	   { HelpId = HID_SMA_DEFAULTSAVEQUERY; };
hidspecial HID_SMA_ILLEGALOBJECTERROR	   { HelpId = HID_SMA_ILLEGALOBJECTERROR; };
hidspecial HID_SMA_ILLEGALFILEERROR 	   { HelpId = HID_SMA_ILLEGALFILEERROR; };
hidspecial HID_SMA_WRITESYMBOLERROR 	   { HelpId = HID_SMA_WRITESYMBOLERROR; };
hidspecial HID_SMA_READSYMBOLERROR		   { HelpId = HID_SMA_READSYMBOLERROR; };
hidspecial HID_SMA_NOMATHTYPEFACEWARNING   { HelpId = HID_SMA_NOMATHTYPEFACEWARNING; };
hidspecial HID_SMA_OBJECTNAME			   { HelpId = HID_SMA_OBJECTNAME; };
hidspecial HID_SMA_VIEWNAME 			   { HelpId = HID_SMA_VIEWNAME; };
hidspecial HID_SMA_UNDOEDITNAME 		   { HelpId = HID_SMA_UNDOEDITNAME; };
hidspecial HID_SMA_UNDOFORMATNAME		   { HelpId = HID_SMA_UNDOFORMATNAME; };
hidspecial HID_SMA_APPICO				   { HelpId = HID_SMA_APPICO; };
hidspecial HID_SMA_DOCICO				   { HelpId = HID_SMA_DOCICO; };
hidspecial HID_SMA_TMPICO				   { HelpId = HID_SMA_TMPICO; };
hidspecial HID_SMA_COMMANDMENU			   { HelpId = HID_SMA_COMMANDMENU; };
hidspecial HID_SMA_VIEWMENU 			   { HelpId = HID_SMA_VIEWMENU; };
hidspecial HID_SMA_DISTANCEMENU 		   { HelpId = HID_SMA_DISTANCEMENU; };
hidspecial HID_SMA_FONTMENU 			   { HelpId = HID_SMA_FONTMENU; };
hidspecial HID_SMA_STARTUPWINDOW		   { HelpId = HID_SMA_STARTUPWINDOW; };
hidspecial HID_SMA_TOOLBOXWINDOW		   { HelpId = HID_SMA_TOOLBOXWINDOW; };
hidspecial HID_SMA_CMDBOXWINDOW 		   { HelpId = HID_SMA_CMDBOXWINDOW; };
hidspecial HID_SMA_UPDATEOBJECT 		   { HelpId = HID_SMA_UPDATEOBJECT; };
hidspecial HID_SMA_FONTREGULAR			   { HelpId = HID_SMA_FONTREGULAR; };
hidspecial HID_SMA_FONTITALIC			   { HelpId = HID_SMA_FONTITALIC; };
hidspecial HID_SMA_FONTBOLD 			   { HelpId = HID_SMA_FONTBOLD; };
hidspecial HID_SMA_PRINTOPTION			   { HelpId = HID_SMA_PRINTOPTION; };
hidspecial HID_SMA_DOCUMENTSTR			   { HelpId = HID_SMA_DOCUMENTSTR; };
hidspecial HID_SMA_SYMBOLFILESSTR		   { HelpId = HID_SMA_SYMBOLFILESSTR; };
hidspecial HID_SMA_ALLFILESSTR			   { HelpId = HID_SMA_ALLFILESSTR; };
hidspecial HID_SMA_CREATORSTR			   { HelpId = HID_SMA_CREATORSTR; };
hidspecial HID_SMA_FILESMFTYP			   { HelpId = HID_SMA_FILESMFTYP; };
hidspecial HID_SMA_FILESYMTYP			   { HelpId = HID_SMA_FILESYMTYP; };
hidspecial HID_SMA_WIN_DOCUMENT 		   { HelpId = HID_SMA_WIN_DOCUMENT; };
hidspecial HID_SMA_COMMAND_WIN_EDIT		   { HelpId = HID_SMA_COMMAND_WIN_EDIT; };

hidspecial HID_SMA_DEFAULT_DIST			{ HelpId = HID_SMA_DEFAULT_DIST; };
hidspecial HID_SMA_LINE_DIST			{ HelpId = HID_SMA_LINE_DIST; };
hidspecial HID_SMA_ROOT_DIST			{ HelpId = HID_SMA_ROOT_DIST; };
hidspecial HID_SMA_SUP_DIST 			{ HelpId = HID_SMA_SUP_DIST; };
hidspecial HID_SMA_SUB_DIST 			{ HelpId = HID_SMA_SUB_DIST; };
hidspecial HID_SMA_NUMERATOR_DIST		{ HelpId = HID_SMA_NUMERATOR_DIST; };
hidspecial HID_SMA_DENOMINATOR_DIST 	{ HelpId = HID_SMA_DENOMINATOR_DIST; };
hidspecial HID_SMA_FRACLINE_EXCWIDTH	{ HelpId = HID_SMA_FRACLINE_EXCWIDTH; };
hidspecial HID_SMA_FRACLINE_LINEWIDTH	{ HelpId = HID_SMA_FRACLINE_LINEWIDTH; };
hidspecial HID_SMA_UPPERLIMIT_DIST		{ HelpId = HID_SMA_UPPERLIMIT_DIST; };
hidspecial HID_SMA_LOWERLIMIT_DIST		{ HelpId = HID_SMA_LOWERLIMIT_DIST; };
hidspecial HID_SMA_BRACKET_EXCHEIGHT	{ HelpId = HID_SMA_BRACKET_EXCHEIGHT; };
hidspecial HID_SMA_BRACKET_DIST 		{ HelpId = HID_SMA_BRACKET_DIST; };
hidspecial HID_SMA_BRACKET_EXCHEIGHT2	{ HelpId = HID_SMA_BRACKET_EXCHEIGHT2; };
hidspecial HID_SMA_MATRIXROW_DIST		{ HelpId = HID_SMA_MATRIXROW_DIST; };
hidspecial HID_SMA_MATRIXCOL_DIST		{ HelpId = HID_SMA_MATRIXCOL_DIST; };
hidspecial HID_SMA_ATTRIBUT_DIST		{ HelpId = HID_SMA_ATTRIBUT_DIST; };
hidspecial HID_SMA_INTERATTRIBUT_DIST	{ HelpId = HID_SMA_INTERATTRIBUT_DIST; };
hidspecial HID_SMA_OPERATOR_EXCHEIGHT	{ HelpId = HID_SMA_OPERATOR_EXCHEIGHT; };
hidspecial HID_SMA_OPERATOR_DIST		{ HelpId = HID_SMA_OPERATOR_DIST; };
hidspecial HID_SMA_LEFTBORDER_DIST		{ HelpId = HID_SMA_LEFTBORDER_DIST; };
hidspecial HID_SMA_RIGHTBORDER_DIST 	{ HelpId = HID_SMA_RIGHTBORDER_DIST; };
hidspecial HID_SMA_UPPERBORDER_DIST 	{ HelpId = HID_SMA_UPPERBORDER_DIST; };
hidspecial HID_SMA_LOWERBORDER_DIST 	{ HelpId = HID_SMA_LOWERBORDER_DIST; };

//! this shouldn't have been necessary!
hidspecial HID_SMA_ALEPH				   { HelpId = HID_SMA_ALEPH; };
hidspecial HID_SMA_EMPTYSET				   { HelpId = HID_SMA_EMPTYSET; };
hidspecial HID_SMA_RE					   { HelpId = HID_SMA_RE; };
hidspecial HID_SMA_IM					   { HelpId = HID_SMA_IM; };
hidspecial HID_SMA_INFINITY				   { HelpId = HID_SMA_INFINITY; };
hidspecial HID_SMA_PARTIAL 				   { HelpId = HID_SMA_PARTIAL; };
hidspecial HID_SMA_WP					   { HelpId = HID_SMA_WP; };
hidspecial HID_SMA_DOTSAXIS				   { HelpId = HID_SMA_DOTSAXIS; };
hidspecial HID_SMA_DOTSUP				   { HelpId = HID_SMA_DOTSUP; };
hidspecial HID_SMA_DOTSDOWN				   { HelpId = HID_SMA_DOTSDOWN; };
hidspecial HID_SMA_DOTSLOW 				   { HelpId = HID_SMA_DOTSLOW; };
hidspecial HID_SMA_DOTSVERT				   { HelpId = HID_SMA_DOTSVERT; };
hidspecial HID_SMA_NABLA				   { HelpId = HID_SMA_NABLA; };
hidspecial HID_SMA_EXISTS 				   { HelpId = HID_SMA_EXISTS; };
hidspecial HID_SMA_FORALL				   { HelpId = HID_SMA_FORALL; };

