/* Copyright 1996 Acorn Computers Ltd * * Licensed 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. */ /* File: menu.h * Purpose: Menu Objects * Author: Timothy G Roddis * History: 8-Dec-93: TGR: created * */ #ifndef __menu_h #define __menu_h #ifndef __toolbox_h #include "objects.toolbox.h" #endif /* Menu Templates *******************************************************************************/ /* flags */ #define Menu_GenerateShowEvent 0x00000001 #define Menu_GenerateHideEvent 0x00000002 #define Menu_Entry_Ticked 0x00000001 #define Menu_Entry_DottedLine 0x00000002 #define Menu_Entry_Faded 0x00000100 #define Menu_Entry_IsSprite 0x00000200 #define Menu_Entry_SubMenu 0x00000400 #define Menu_Entry_GenerateSubMenuEvent 0x00000800 #define Menu_Entry_ClickShowTransient 0x00001000 #define Menu_Entry_ClickShowCentred 0x00002000 /* templates */ typedef struct { int flags; char *title; int max_title; char *help_message; int max_help; int num_entries; } MenuTemplateHeader101; typedef struct { int flags; char *title; int max_title; char *help_message; int max_help; int show_event; int hide_event; int num_entries; } MenuTemplateHeader102, MenuTemplateHeader; /* move name 'MenuTemplateHeader' to current version's struct upon update */ typedef struct { int flags; ComponentID component_id; char *text; int max_text; char *click_show; char *submenu_show; int submenu_event; int click_event; char *help_message; int max_entry_help; } MenuTemplateEntry; typedef struct { MenuTemplateHeader hdr; /* array of entries follows in memory (as defined below) */ } MenuTemplate; /* access to templates */ /* #define menu_template_entry(m, i) (((MenuTemplateEntry*)(&m->hdr + 1)) + i)*/ /* Menu SWI calls *******************************************************************************/ #define Menu_SWIChunkBase 0x828c0 #define Menu_ObjectClass Menu_SWIChunkBase #define Menu_ClassSWI (Menu_SWIChunkBase + 0) #define Menu_PostFilter (Menu_SWIChunkBase + 1) #define Menu_PreFilter (Menu_SWIChunkBase + 2) #define Menu_UpdateTree (Menu_SWIChunkBase + 3) /* Menu Methods *********************************************************************************/ #define Menu_SetTick 0 #define Menu_GetTick 1 #define Menu_SetFade 2 #define Menu_GetFade 3 #define Menu_SetEntryText 4 #define Menu_GetEntryText 5 #define Menu_SetEntrySprite 6 #define Menu_GetEntrySprite 7 #define Menu_SetSubMenuShow 8 #define Menu_GetSubMenuShow 9 #define Menu_SetSubMenuEvent 10 #define Menu_GetSubMenuEvent 11 #define Menu_SetClickShow 12 #define Menu_GetClickShow 13 #define Menu_SetClickEvent 14 #define Menu_GetClickEvent 15 #define Menu_SetHelpMessage 16 #define Menu_GetHelpMessage 17 #define Menu_SetEntryHelpMessage 18 #define Menu_GetEntryHelpMessage 19 #define Menu_AddEntry 20 #define Menu_RemoveEntry 21 #define Menu_GetHeight 22 #define Menu_GetWidth 23 #define Menu_SetTitle 24 #define Menu_GetTitle 25 /* Menu Toolbox Events **************************************************************************/ #define Menu_AboutToBeShown Menu_SWIChunkBase #define Menu_HasBeenHidden (Menu_SWIChunkBase + 1) #define Menu_SubMenu (Menu_SWIChunkBase + 2) #define Menu_Selection (Menu_SWIChunkBase + 3) typedef struct { ToolboxEventHeader hdr; int show_type; int x,y; } Menu_AboutToBeShown_Event; typedef struct { ToolboxEventHeader hdr; } Menu_HasBeenHidden_Event; typedef struct { ToolboxEventHeader hdr; int x,y; } Menu_SubMenu_Event; typedef struct { ToolboxEventHeader hdr; } Menu_Selection_Event; /* Menu Errors **********************************************************************************/ #define Menu_ErrorBase (Program_Error | 0x0080AA00) #define Menu_AllocFailed (Menu_ErrorBase+0x01) #define Menu_ShortBuffer (Menu_ErrorBase+0x02) #define Menu_NoSuchTask (Menu_ErrorBase+0x11) #define Menu_NoSuchMethod (Menu_ErrorBase+0x12) #define Menu_NoSuchMiscOpMethod (Menu_ErrorBase+0x13) #define Menu_NoSuchComponent (Menu_ErrorBase+0x14) #define Menu_SpriteNotText (Menu_ErrorBase+0x21) #define Menu_TextNotSprite (Menu_ErrorBase+0x22) #define Menu_NoTopMenu (Menu_ErrorBase+0x31) #define Menu_UnknownSubMenu (Menu_ErrorBase+0x32) #define Menu_NoSpriteName (Menu_ErrorBase+0x33) #define Menu_TasksActive (Menu_ErrorBase+0x00) #endif