Example #1
0
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();
}
Example #5
0
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();
}
Example #9
0
// 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;
}
Example #10
0
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;
}
Example #11
0
MCStoreProductRequestResponseEvent::MCStoreProductRequestResponseEvent(MCStringRef p_product_id)
{
	MCValueAssign(m_product_id, p_product_id);
}
Example #12
0
	virtual bool OnMenuPick(MCButton *p_button, MCValueRef p_pick, MCValueRef p_old_pick)
	{
		MCValueAssign(m_pick, p_pick);
		return true;
	}
Example #13
0
	void setpopupresult(MCValueRef p_result)
	{
		MCValueAssign(m_result, p_result);
	}
Example #14
0
// 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;
}
Example #15
0
void MCPlayer::setcallbacks(MCStringRef p_callbacks)
{
    MCValueAssign(userCallbackStr, p_callbacks);
}