1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
/************************************************************************/
/* Shortcuts for the most commun menu building actions. */
/************************************************************************/
# include "appFrameConfig.h"
# include <stddef.h>
# include <stdio.h>
# include <stdlib.h>
# include "appFrame.h"
# include <appDebugon.h>
APP_WIDGET appMakeMenu( APP_WIDGET * pButton,
AppToplevel * at,
EditApplication * ea,
APP_WIDGET menuBar,
const char * itemText,
int isHelp,
AppMenuItem * ami,
int itemCount,
void * target )
{
AppConfigurableResource * acr;
AppConfigurableResource * acri;
APP_WIDGET menu;
APP_WIDGET button;
int i;
acr= (AppConfigurableResource *)malloc(
3* itemCount* sizeof(AppConfigurableResource) );
if ( ! acr )
{ XDEB(acr); return (APP_WIDGET)0; }
acri= acr;
for ( i= 0; i < itemCount; i++ )
{
if ( ami[i].amiItemType == ITEMtySEPARATOR )
{ continue; }
APP_SET_RESOURCE( acri, ami[i].amiTextResName,
i* sizeof(AppMenuItem)+
offsetof(AppMenuItem,amiItemText),
ami[i].amiItemText );
acri++;
APP_SET_RESOURCE( acri, ami[i].amiKeyResName,
i* sizeof(AppMenuItem)+
offsetof(AppMenuItem,amiKey),
ami[i].amiKey );
acri++;
APP_SET_RESOURCE( acri, ami[i].amiKeyTextResName,
i* sizeof(AppMenuItem)+
offsetof(AppMenuItem,amiKeyText),
ami[i].amiKeyText );
acri++;
}
appGuiGetResourceValues( ea, ami, acr, acri- acr );
free( acr );
menu= appMakeMenuInParent( &button, at, menuBar, itemText, isHelp );
for ( i= 0; i < itemCount; i++, ami++ )
{
switch( ami->amiItemType )
{
case ITEMtyOPTION:
ami->amiOptionWidget=
appSetMenuItem( menu, at, ami, target );
break;
case ITEMtyTOGGLE_OFF:
case ITEMtyTOGGLE_ON:
ami->amiOptionWidget=
appSetToggleMenuItem( menu, at, ami, target );
break;
case ITEMtySEPARATOR:
ami->amiOptionWidget=
appSetMenuSeparator( menu, at, ami, target );
break;
default:
LDEB(ami->amiItemType);
break;
}
}
*pButton= button; return menu;
}
|