rem: } else if (strcmp(command, "EXEC")==0
add: } else if (strcmp(command, "EXEC")==0 || strcmp(command, "SHEXEC")==0
context: changedItem(void *observerData, WMNotification *notification){    _Panel *panel = (_Panel*)observerData;    WMTextField *t = (WMTextField*)WMGetNotificationObject(notification);    proplist_t item = panel->editedItem;    WMList *list;    WMListItem *litem;    char *command;    char *str;    if (!item)	return;    panel->unsaved = 1;    if (!isMenu(item)) {	command = getItemCommand(item);		if (t == panel->shoT) {	    str = WMGetTextFieldText(t);	    if (strlen(str)==0) {		free(str);		str = NULL;	    }	    changeItemShortcut(item, str);	    if (str)		free(str);			} else if (t == panel->labT) {	    int column;	    str = WMGetTextFieldText(t);	    if (!str)		str = wstrdup("");	    changeItemTitle(item, str);	    column = WMGetBrowserSelectedColumn(panel->browser);	    list = WMGetBrowserListInColumn(panel->browser, column);	    litem = WMGetListSelectedItem(list);	    	    free(litem->text);	    litem->text = str;		    WMRedisplayWidget(list);	} else if (strcmp(command, "EXEC")==0 		   || strcmp(command, "RESTART")==0) {	    if (t == panel->proT) {		str = WMGetTextFieldText(t);		changeItemParameter(item, str);		free(str);	    }	} else if (strcmp(command, "OPEN_MENU")==0) {	    char *text;	    char *str2;	    	    str = WMGetTextFieldText(panel->pathT);	    str2 = WMGetTextFieldText(panel->proT);	    text = wmalloc(strlen(str)+strlen(str2)+16);	    strcpy(text, str);	    free(str);	    if (strlen(str2)>0) {		strcat(text, " WITH ");		strcat(text, str2);	    }	    free(str2);	    changeItemParameter(item, text);	    free(text);	}    }}