add: switch (data->param.command.command) { case 6: data->param.command.parameter = WMGetTextFieldText(panel->paramT); break; }
context: updateMenuItem(_Panel *panel, WEditMenuItem *item, WMWidget *changedWidget){    ItemData *data = WGetEditMenuItemData(item);            assert(data != NULL);#define REPLACE(v, d) if (v) free(v); v = d    switch (data->type) {     case ExecInfo:	if (changedWidget == panel->commandT) {	    REPLACE(data->param.exec.command, 		    WMGetTextFieldText(panel->commandT));	}	if (changedWidget == panel->shortT) {	    REPLACE(data->param.exec.shortcut,		    WMGetTextFieldText(panel->shortT));	}	break;     case CommandInfo:	if (changedWidget == panel->icommandL) {	    data->param.command.command = 		WMGetListSelectedItemRow(panel->icommandL);	}	if (changedWidget == panel->shortT) {	    REPLACE(data->param.command.shortcut,		    WMGetTextFieldText(panel->shortT));	}	break;	     case PipeInfo:	if (changedWidget == panel->pipeT) {	    REPLACE(data->param.pipe.command,		    WMGetTextFieldText(panel->pipeT));	}	break;	     case ExternalInfo:	if (changedWidget == panel->pathT) {	    REPLACE(data->param.external.path, 		    WMGetTextFieldText(panel->pathT));	}	break;	     case DirectoryInfo:	if (changedWidget == panel->dpathT) {	    REPLACE(data->param.directory.directory,		    WMGetTextFieldText(panel->dpathT));	}	if (changedWidget == panel->dcommandT) {	    REPLACE(data->param.directory.command,		    WMGetTextFieldText(panel->dcommandT));	}	if (changedWidget == panel->dstripB) {	    data->param.directory.stripExt = 		WMGetButtonSelected(panel->dstripB);	}	break;     default:	assert(0);	break;    }#undef REPLACE}