packages feed

wxcore-0.10.1: wxc/src/ewxw/eljmime.cpp

#include "wrapper.h"
#include "wx/mimetype.h"

extern "C"
{

EWXWEXPORT(void*, wxMimeTypesManager_Create) ()
{
	return (void*) wxTheMimeTypesManager;
}

EWXWEXPORT(void*, wxMimeTypesManager_GetFileTypeFromExtension) (void* _obj, void* _ext)
{
	return (void*)((wxMimeTypesManager*)_obj)->GetFileTypeFromExtension((const char*)_ext);
}
	
EWXWEXPORT(void*, wxMimeTypesManager_GetFileTypeFromMimeType) (void* _obj, void* _name)
{
	return (void*)((wxMimeTypesManager*)_obj)->GetFileTypeFromMimeType((const char*)_name);
}
	
EWXWEXPORT(int, wxMimeTypesManager_ReadMailcap) (void* _obj, void* _file, int _fb)
{
	return (int)((wxMimeTypesManager*)_obj)->ReadMailcap((const char*)_file, _fb != 0);
}
	
EWXWEXPORT(int, wxMimeTypesManager_ReadMimeTypes) (void* _obj, void* _file)
{
	return (int)((wxMimeTypesManager*)_obj)->ReadMimeTypes((const char*)_file);
}
	
EWXWEXPORT(int, wxMimeTypesManager_EnumAllFileTypes) (void* _obj, void* _lst)
{
	wxArrayString arr;
	int result = (int)((wxMimeTypesManager*)_obj)->EnumAllFileTypes(arr);
	
	if (_lst)
	{
		for (unsigned int i = 0; i < arr.GetCount(); i++)
			((const wxChar**)_lst)[i] = wxStrdup (arr.Item(i).c_str());
	}
	
	return result;
}
	
EWXWEXPORT(void, wxMimeTypesManager_AddFallbacks) (void* _obj, void* _types)
{
	((wxMimeTypesManager*)_obj)->AddFallbacks((const wxFileTypeInfo*)_types);
}

EWXWEXPORT(int, wxMimeTypesManager_IsOfType)(void* _obj, void* _type, void* _wildcard)
{
	return (int)((wxMimeTypesManager*)_obj)->IsOfType ((const char*)_type, (const char*)_wildcard);
}
	

EWXWEXPORT(int, wxFileType_GetMimeType) (void* _obj, void* _buf)
{
	wxString result;
	
	if (((wxFileType*)_obj)->GetMimeType(&result) && _buf)
		copyStrToBuf(_buf, result);
	
	return result.Length();
}
	
EWXWEXPORT(int, wxFileType_GetMimeTypes) (void* _obj, void* _lst)
{
	wxArrayString arr;

	if (((wxFileType*)_obj)->GetMimeTypes(arr) && _lst)
	{
		for (unsigned int i = 0; i < arr.GetCount(); i++)
			((const wxChar**)_lst)[i] = wxStrdup (arr.Item(i).c_str());
	}
	
	return arr.GetCount();
}
	
EWXWEXPORT(int, wxFileType_GetExtensions) (void* _obj, void* _lst)
{
	wxArrayString arr;

	if (((wxFileType*)_obj)->GetExtensions(arr) && _lst)
	{
		for (unsigned int i = 0; i < arr.GetCount(); i++)
			((const wxChar**)_lst)[i] = wxStrdup (arr.Item(i).c_str());
	}
	
	return arr.GetCount();
}
	
EWXWEXPORT(int, wxFileType_GetIcon) (void* _obj, void *icon)
{
	return (int)((wxFileType*)_obj)->GetIcon((wxIcon*)icon);
}
	
EWXWEXPORT(int, wxFileType_GetDescription) (void* _obj, void* _buf)
{
	wxString result;
	
	if (((wxFileType*)_obj)->GetDescription(&result) && _buf)
		copyStrToBuf(_buf, result);
	
	return result.Length();
}
	
EWXWEXPORT(int, wxFileType_GetOpenCommand) (void* _obj, void* _buf, void* _params)
{
	wxString result;
	
	if (((wxFileType*)_obj)->GetOpenCommand(&result, *((wxFileType::MessageParameters*)_params)) && _buf)
		copyStrToBuf(_buf, result);

	return result.Length();
}
	
EWXWEXPORT(int, wxFileType_GetPrintCommand) (void* _obj, void* _buf, void* _params)
{
	wxString result;
	
	if (((wxFileType*)_obj)->GetPrintCommand(&result, *((wxFileType::MessageParameters*)_params)) && _buf)
		copyStrToBuf(_buf, result);

	return result.Length();
}
	
EWXWEXPORT(int, wxFileType_ExpandCommand) (void* _obj, void* _cmd, void* _params, void* _buf)
{
	wxString result = ((wxFileType*)_obj)->ExpandCommand((const char*)_cmd, *((wxFileType::MessageParameters*)_params));
	
	return copyStrToBuf(_buf, result);
}
	
EWXWEXPORT(void, wxFileType_Delete) (void* _obj)
{
	delete (wxFileType*)_obj;
}


class ELJMessageParameters : public wxFileType::MessageParameters
{
	private:
		void* EiffelObject;
		TGetText EiffelFunc;
	public:
		ELJMessageParameters(const wxString& filename, const wxString& mimetype, void* _object, void* _func)
		: wxFileType::MessageParameters(filename, mimetype)
	{
		EiffelFunc = (TGetText)_func;
		EiffelObject = _object;
	}

	virtual wxString GetParamValue(const wxString& name) const
	{
		if (EiffelObject)
		{
			void* res = EiffelFunc(EiffelObject, (void*)name.c_str());
			if (res)
				return (const wxChar*)res;
			else
				return wxFileType::MessageParameters::GetParamValue(name);
		}
		else
			return wxFileType::MessageParameters::GetParamValue(name);
   }
};

EWXWEXPORT(void*, wxMessageParameters_Create) (void* _file, void* _type, void* _object, void* _func)
{
	return (void*)new ELJMessageParameters((const wxChar*)_file, (const wxChar*)_type, _object, _func);
}

EWXWEXPORT(void, wxMessageParameters_Delete) (void* _obj)
{
	delete (ELJMessageParameters*)_obj;
}

}