Пример #1
0
static PyObject *ScrapObj_GetScrapFlavorCount(ScrapObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	OSStatus _err;
	UInt32 infoCount;
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = GetScrapFlavorCount(_self->ob_itself,
	                           &infoCount);
	if (_err != noErr) return PyMac_Error(_err);
	_res = Py_BuildValue("l",
	                     infoCount);
	return _res;
}
Пример #2
0
bool MCMacOSXScrapPasteboard::QueryFlavors(ScrapFlavorType*& r_types, uint4& r_type_count)
{
	bool t_success;
	t_success = true;

	UInt32 t_count;
	t_count = 0;
	if (t_success)
		if (GetScrapFlavorCount(m_scrap, &t_count) != noErr)
			t_success = false;

	ScrapFlavorInfo *t_info_array;
	t_info_array = NULL;
	if (t_success)
	{
		t_info_array = new ScrapFlavorInfo[t_count];
		if (t_info_array == NULL)
			t_success = false;
	}

	if (t_success)
		if (GetScrapFlavorInfoList(m_scrap, &t_count, t_info_array) != noErr)
			t_success = false;

	ScrapFlavorType *t_types;
	t_types = NULL;
	if (t_success)
	{
		t_types = new ScrapFlavorType[t_count];
		if (t_types == NULL)
			t_success = false;
	}

	if (t_success)
	{
		for(uint4 i = 0; i < t_count; ++i)
			t_types[i] = t_info_array[i] . flavorType;
			
		r_types = t_types;
		r_type_count = t_count;
	}
	else
		delete t_types;

	delete t_info_array;

	return t_success;
}
Пример #3
0
static PyObject *ScrapObj_GetScrapFlavorInfoList(ScrapObject *_self, PyObject *_args)
{
	PyObject *_res = NULL;
	PyObject *item;
	OSStatus _err;
	UInt32 infoCount;
	ScrapFlavorInfo *infolist = NULL;
	int i;
	
	if (!PyArg_ParseTuple(_args, ""))
		return NULL;
	_err = GetScrapFlavorCount(_self->ob_itself,
	                           &infoCount);
	if (_err != noErr) return PyMac_Error(_err);
	if (infoCount == 0) return Py_BuildValue("[]");
	
	if ((infolist = (ScrapFlavorInfo *)malloc(infoCount*sizeof(ScrapFlavorInfo))) == NULL )
		return PyErr_NoMemory();
	
	_err = GetScrapFlavorInfoList(_self->ob_itself, &infoCount, infolist);
	if (_err != noErr) {
		free(infolist);
		return NULL;
	}
	if ((_res = PyList_New(infoCount)) == NULL ) {
		free(infolist);
		return NULL;
	}
	for(i=0; i<infoCount; i++) {
		item = Py_BuildValue("O&l", PyMac_BuildOSType, infolist[i].flavorType,
			infolist[i].flavorFlags);
		if ( !item || PyList_SetItem(_res, i, item) < 0 ) {
			Py_DECREF(_res);
			free(infolist);
			return NULL;
		}
	}
	free(infolist);
	return _res;
}