size_t regerror(int errcode, const regex_t *preg, MCStringRef &errbuf) { const char *message, *addmessage; size_t length, addlength; message = (errcode >= (int)(sizeof(pstring)/sizeof(char *))) ? "unknown error code" : pstring[errcode]; length = strlen(message) + 1; addmessage = " at offset "; addlength = (preg != NULL && (int)preg->re_erroffset != -1) ? strlen(addmessage) + 6 : 0; if (addlength > 0) { MCAutoStringRef t_error_string; MCStringFormat(&t_error_string, "%s%s%-6d", message, addmessage, (int)preg->re_erroffset); MCValueAssign(errbuf, *t_error_string); } else { if (errbuf != nil) MCValueRelease(errbuf); /* UNCHECKED */ MCStringCreateWithNativeChars((const char_t *) message, strlen(message), errbuf); } return length + addlength; }
void MCScrollbar::SetEndValue(MCExecContext& ctxt, MCStringRef p_value) { // MW-2013-08-27: [[ UnicodifyScrollbar ]] Update to use MCStringRef startstring. if (MCStringIsEmpty(p_value)) { reset(); return; } if (!MCU_stor8(p_value, endvalue)) { ctxt . LegacyThrow(EE_OBJECT_NAN); return; } if (startvalue == 0.0 && endvalue == 65535.0) reset(); else { flags |= F_HAS_VALUES; MCValueAssign(endstring, p_value); } update(thumbpos, MCM_scrollbar_drag); Redraw(); }
void MCButton::SetAcceleratorText(MCExecContext& ctxt, MCStringRef p_text) { if (MCStringIsEqualTo(acceltext, p_text, kMCStringOptionCompareExact)) return; MCValueAssign(acceltext, p_text); Redraw(); }
void MCButton::SetLabel(MCExecContext& ctxt, MCStringRef p_label) { // Make sure the label is up to date if (entry != NULL) getentrytext(); // Don't make any changes if it isn't necessary if (MCStringIsEqualTo(p_label, label, kMCStringOptionCompareExact)) return; MCValueAssign(label, p_label); // SN-2014-08-05: [[ Bug 13100 ]] An empty label is not an issue, // we need to rely on the F_LABEL flag // AL-2014-09-10: [[ Bug 13401 ]] If label is empty, the flag should reflect the lack of label if (MCStringIsEmpty(label)) flags &= ~F_LABEL; else flags |= F_LABEL; if (entry != NULL) entry->settext(0, label, False); clearmnemonic(); setupmnemonic(); Redraw(); }
void MCPlayer::freetmp() { if (istmpfile) { MCS_unlink(filename); MCValueAssign(filename, kMCEmptyString); } }
void MCControl::SetToolTip(MCExecContext& ctxt, MCStringRef p_tooltip) { if (MCStringIsEqualTo(tooltip, p_tooltip, kMCStringOptionCompareExact)) return; MCValueAssign(tooltip, p_tooltip); if (focused.IsBoundTo(this)) MCtooltip->settip(tooltip); }
void MCButton::SetMenuName(MCExecContext& ctxt, MCNameRef p_name) { freemenu(False); MCValueAssign(menuname, p_name); if (opened) { if (findmenu(true) && menu != nil) menu->installaccels(getstack()); } }
void MCControl::SetUnicodeToolTip(MCExecContext& ctxt, MCDataRef p_tooltip) { // Convert the supplied UTF-16 data into a string MCStringRef t_tooltip = nil; if (MCStringDecode(p_tooltip, kMCStringEncodingUTF16, false, t_tooltip)) { MCValueAssign(tooltip, t_tooltip); return; } ctxt.Throw(); }
// TD-2013-07-02: [[ DynamicFonts ]] // MERG-2013-08-14: [[ DynamicFonts ]] Refactored to use MCLoadedFont bool MCFontLoad(MCStringRef p_path, bool p_globally) { bool t_success; t_success = true; if (t_success) { // check if already loaded and unload if globally is not the same as loaded version for(MCLoadedFont *t_font = s_loaded_fonts; t_font != nil; t_font = t_font -> next) if (MCStringIsEqualTo(t_font -> path, p_path, kMCStringOptionCompareCaseless)) { if (t_font -> is_global != p_globally) { t_success = MCFontUnload(p_path); break; } else return true; } } if (t_success) { void * t_loaded_font_handle; if (!MCscreen -> loadfont(p_path, p_globally, t_loaded_font_handle)) return false; MCLoadedFontRef self; if (!MCMemoryNew(self)) return false; self -> is_global = p_globally; self -> handle = t_loaded_font_handle; MCValueAssign(self -> path, p_path); self -> next = s_loaded_fonts; s_loaded_fonts = self; // MW-2013-09-11: [[ DynamicFonts ]] Make sure the engine reloads all fonts. MCFontRemap(); MCstacks -> purgefonts(); } return t_success; }
static HRESULT append_shellitem_path_and_release(IShellItem *p_item, bool p_first, MCStringRef &x_string) { HRESULT t_hresult; t_hresult = S_OK; bool t_succeeded; t_succeeded = true; WCHAR *t_filename; t_filename = NULL; if (t_succeeded) { t_hresult = p_item -> GetDisplayName(SIGDN_FILESYSPATH, &t_filename); t_succeeded = SUCCEEDED(t_hresult); } if (t_succeeded) { if (x_string == nil) MCStringCreateMutable(0, x_string); else if (!MCStringIsMutable(x_string)) { MCStringRef t_clone; MCStringMutableCopy(x_string, t_clone); MCValueAssign(x_string, t_clone); } MCAutoStringRef t_rev_filename; MCAutoStringRef t_native_filename; /* UNCHECKED */ MCStringCreateWithChars(t_filename, lstrlenW(t_filename), &t_native_filename); /* UNCHECKED */ MCS_pathfromnative(*t_native_filename, &t_rev_filename); /* UNCHECKED */ MCStringAppendFormat(x_string, p_first ? "%@" : "\n%@", *t_rev_filename); } if (t_filename != NULL) CoTaskMemFree(t_filename); if (p_item != NULL) p_item -> Release(); return t_hresult; }
MCStoreProductRequestResponseEvent::MCStoreProductRequestResponseEvent(MCStringRef p_product_id) { MCValueAssign(m_product_id, p_product_id); }
virtual bool OnMenuPick(MCButton *p_button, MCValueRef p_pick, MCValueRef p_old_pick) { MCValueAssign(m_pick, p_pick); return true; }
void setpopupresult(MCValueRef p_result) { MCValueAssign(m_result, p_result); }
// MW-2005-05-15: Updated for new answer command restructuring int MCA_folder(MCStringRef p_title, MCStringRef p_prompt, MCStringRef p_initial, unsigned int p_options, MCStringRef &r_value, MCStringRef &r_result) { if (MCmajorosversion >= 0x0600 && MCModeMakeLocalWindows()) return MCA_file(p_title, p_prompt, nil, p_initial, p_options | MCA_OPTION_FOLDER_DIALOG, r_value, r_result); // MW-2005-05-27: We'll use a static (I know bad me) to store the version // of the shell dll. static int s_shell_version = -1; static MCStringRef s_last_folder = MCValueRetain(kMCEmptyString); MCAutoStringRef t_native_filename; if (p_initial != NULL) { MCAutoStringRef t_std_path; /* UNCHECKED */ MCS_pathfromnative(p_initial, &t_std_path); t_native_filename = *t_std_path; } else t_native_filename = MCValueRetain(s_last_folder); if (!MCModeMakeLocalWindows()) { MCAutoStringRef t_answer_path; MCRemoteFolderDialog(p_title, p_prompt, *t_native_filename, &t_answer_path); if (*t_answer_path != nil) { MCAutoStringRef t_std_path; /* UNCHECKED */ MCS_pathfromnative(*t_answer_path, &t_std_path); MCValueAssign(s_last_folder, *t_std_path); } r_value = MCValueRetain(*t_answer_path); return 0; } if (s_shell_version == -1) s_shell_version = get_dll_version(L"shell32.dll"); bool sheet = (p_options & MCA_OPTION_SHEET) != 0; BROWSEINFOW bi; memset(&bi, 0, sizeof(BROWSEINFOW)); Window pw; pw = MCModeGetParentWindow(); if (pw != DNULL) bi.hwndOwner = (HWND)pw->handle.window; MCAutoStringRefAsWString t_prompt_wstr; MCAutoStringRefAsWString t_native_filename_wstr; /* UNCHECKED */ t_prompt_wstr.Lock(p_prompt); bi.pidlRoot = NULL; bi.lpszTitle = *t_prompt_wstr; bi.ulFlags = BIF_RETURNONLYFSDIRS; if (s_shell_version >= 500) bi.ulFlags |= BIF_NEWDIALOGSTYLE; if (*t_native_filename != nil && !MCStringIsEmpty(*t_native_filename)) { t_native_filename_wstr.Lock(*t_native_filename); bi . lpfn = BrowseCallbackProc; bi . lParam = (LPARAM)*t_native_filename_wstr; } else { bi.lpfn = NULL; bi.lParam = NULL; } LPITEMIDLIST lpiil; LPMALLOC lpm; SHGetMalloc(&lpm); DWORD t_error; lpiil = SHBrowseForFolderW(&bi); if (lpiil == NULL) { t_error = GetLastError(); } MCAutoArray<unichar_t> t_buffer; /* UNCHECKED */ t_buffer.New(MAX_PATH); if (lpiil != NULL && SHGetPathFromIDListW(lpiil, t_buffer.Ptr())) { if (s_last_folder != NULL) MCValueRelease(s_last_folder); size_t t_length; /* UNCHECKED */ StringCchLength(t_buffer.Ptr(), t_buffer.Size(), &t_length); /* UNCHECKED */ MCStringCreateWithChars(t_buffer.Ptr(), t_length, s_last_folder); MCAutoStringRef t_std_path; /* UNCHECKED */ MCS_pathfromnative(s_last_folder, &t_std_path); r_value = MCValueRetain(*t_std_path); } else r_result = MCSTR(MCcancelstring); // SMR 1880 clear shift and button state waitonbutton(); lpm->Free(lpiil); lpm->Release(); return 0; }
void MCPlayer::setcallbacks(MCStringRef p_callbacks) { MCValueAssign(userCallbackStr, p_callbacks); }