Exec_stat MCEPS::getprop_legacy(uint4 parid, Properties which, MCExecPoint& ep, Boolean effective) { switch (which) { #ifdef /* MCEPS::getprop */ LEGACY_EXEC case P_SIZE: ep.setint(size); break; case P_ANGLE: ep.setr8(angle, ep.getnffw(), ep.getnftrailing(), ep.getnfforce()); break; case P_POSTSCRIPT: ep.setsvalue(postscript); break; case P_PROLOG: ep.setsvalue(prolog); break; case P_RETAIN_IMAGE: ep.setboolean(getflag(F_RETAIN_IMAGE)); break; case P_RETAIN_POSTSCRIPT: ep.setboolean(getflag(F_RETAIN_POSTSCRIPT)); break; case P_SCALE_INDEPENDENTLY: ep.setboolean(getflag(F_SCALE_INDEPENDENTLY)); break; case P_BOUNDING_RECT: ep.setrectangle(tx, ty, tx + ex, ty + ey); break; case P_SCALE: case P_X_SCALE: ep.setr8(xscale, ep.getnffw(), ep.getnftrailing(), ep.getnfforce()); break; case P_Y_SCALE: ep.setr8(yscale, ep.getnffw(), ep.getnftrailing(), ep.getnfforce()); break; case P_X_OFFSET: ep.setint(tx); break; case P_Y_OFFSET: ep.setint(ty); break; case P_X_EXTENT: ep.setint(ex); break; case P_Y_EXTENT: ep.setint(ey); break; case P_CURRENT_PAGE: ep.setint(MCU_max(curpage, 1)); break; case P_PAGE_COUNT: ep.setint(MCU_max(pagecount, 1)); break; #endif /* MCEPS::getprop */ default: return MCControl::getprop_legacy(parid, which, ep, effective); } return ES_NORMAL; }
Exec_stat MCMarking::exec(MCExecPoint &ep) { if (card != NULL) { MCObject *optr; uint4 parid; if (card->getobj(ep, optr, parid, True) != ES_NORMAL || optr->gettype() != CT_CARD) { MCeerror->add (EE_MARK_BADCARD, line, pos); return ES_ERROR; } ep.setboolean(mark); return optr->setprop(0, P_MARKED, ep, False); } if (tofind == NULL) MCdefaultstackptr->mark(ep, where, mark); else { if (tofind->eval(ep) != ES_NORMAL) { MCeerror->add (EE_MARK_BADSTRING, line, pos); return ES_ERROR; } MCdefaultstackptr->markfind(ep, mode, ep.getsvalue(), field, mark); } return ES_NORMAL; }
Exec_stat MCVideoClip::getprop(uint4 parid, Properties which, MCExecPoint &ep, Boolean effective) { switch (which) { case P_DONT_REFRESH: ep.setboolean(getflag(F_DONT_REFRESH)); break; case P_FRAME_RATE: if (flags & F_FRAME_RATE) ep.setint(framerate); else ep.clear(); break; case P_SCALE: ep.setnvalue(scale); break; case P_SIZE: ep.setint(size); break; case P_TEXT: { MCString s((const char *)frames, size); ep.setsvalue(s); } break; default: return MCObject::getprop(parid, which, ep, effective); } return ES_NORMAL; }
void MCS_delete_registry(const char *key, MCExecPoint &dest) { HKEY hkey = NULL; /* get the root key string, it is at the begining of the key */ char *str = (char *)strchr(key, '\\'); if (!str) { MCresult->sets("no key"); dest.setboolean(False); return; } *str++ = '\0'; //str now pointing to the begining of subkey string /* find the matching key for the root key string */ MCString s = key; uint1 i; for (i = 0 ; i < ELEMENTS(Regkeys) ; i++) { if (s == Regkeys[i].token) break; } if (i >= ELEMENTS(Regkeys)) { MCresult->sets("bad key"); dest.setboolean(False); return; } errno = RegDeleteKeyNT(Regkeys[i].key, str); if (errno != ERROR_SUCCESS) { MCresult->sets("could not delete key"); dest.setboolean(False); } else { MCresult->clear(False); dest.setboolean(True); } }
Exec_stat MCStack::mode_getprop(uint4 parid, Properties which, MCExecPoint &ep, const MCString &carray, Boolean effective) { switch(which) { case P_REFERRING_STACK: if (m_mode_data -> referrer != NULL) return m_mode_data -> referrer -> getprop(0, P_LONG_ID, ep, False); else ep . clear(); break; case P_UNPLACED_GROUP_IDS: ep . clear(); if (controls != NULL) { uint4 t_count; t_count = 0; MCControl *t_control; t_control = controls; do { if (t_control -> gettype() == CT_GROUP && t_control -> getparent() != curcard) { ep . concatuint(t_control -> getid(), EC_RETURN, t_count == 0); t_count += 1; } t_control = t_control -> next(); } while(t_control != controls); } break; case P_IDE_OVERRIDE: ep.setboolean(getextendedstate(ECS_IDE)); break; default: return ES_NOT_HANDLED; } return ES_NORMAL; }
void MCS_set_registry(const char *key, MCExecPoint &dest, char *type) { HKEY hkey = NULL; DWORD keyState; //REG_CREATED_NEW_KEY or REG_OPENED_EXISTING_KEY /* get the root key string, it is at the begining of the key */ char *str = (char *)strchr(key, '\\'); *str++ = '\0'; //str now pointing to the begining of subkey string /* find the matching key for the root key string */ MCString s = key; uint1 i; for (i = 0 ; i < ELEMENTS(Regkeys) ; i++) if (s == Regkeys[i].token) break; if (i >= ELEMENTS(Regkeys)) { MCresult->sets("bad key"); dest.setboolean(False); return; } /* get the value name string, it is at the end of the key */ char *VName = strrchr(str, '\\'); if (VName == NULL) { //invalid key path specified MCresult->sets("bad key specified"); dest.setboolean(False); return; } *VName++ = '\0'; if (RegCreateKeyExA(Regkeys[i].key, str, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, &keyState) != ERROR_SUCCESS) { MCS_seterrno(GetLastError()); MCresult->sets("can't create key"); dest.setboolean(False); return; } if (dest.getsvalue().getlength() == 0) {//delete this value if ((errno = RegDeleteValueA(hkey, VName)) != ERROR_SUCCESS) { MCS_seterrno(GetLastError()); MCresult->sets("can't delete value"); dest.setboolean(False); RegCloseKey(hkey); //write data to registry return; } } else { DWORD VType = REG_SZ; if (type != NULL) for (i = 0 ; i < ELEMENTS(RegDatatypes) ; i++) if (!MCU_strncasecmp(type, RegDatatypes[i].token, strlen(type) + 1)) { VType = RegDatatypes[i].type; break; } char *VValue = dest.getsvalue().clone(); uint4 VLength = dest.getsvalue().getlength(); if (RegSetValueExA(hkey, VName, 0, VType, (const BYTE *)VValue, VLength + (VType == REG_SZ ? 1 : 0)) != ERROR_SUCCESS) { MCS_seterrno(GetLastError()); MCresult->sets("can't set value"); dest.setboolean(False); delete VValue; return; } delete VValue; } MCresult->clear(False); dest.setboolean(True); RegCloseKey(hkey); //write data to registry }