packages feed

wxcore-0.10.3: wxc/src/eljcommand.cpp

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

extern "C"
{

typedef int _cdecl (*TGetResp) (void* _obj, int _und);

}

class ELJCommand : public wxCommand
{
	private:
		TGetResp func;
		void*    EiffelObject;
	
	public:
		ELJCommand (bool _und, const wxString& _nme, void* _obj, void* _clb) : wxCommand(_und, _nme)
		{
			func = (TGetResp)_clb;
			EiffelObject = _obj;
		}
		
		bool Do()
		{return func (EiffelObject, 0) != 0;}

		bool Undo()
		{return func (EiffelObject, 1) != 0;}
};

extern "C"
{

EWXWEXPORT(void*,ELJCommand_Create)(int _und, void* _nme, void* _obj, void* _clb)
{
	return (void*)new ELJCommand(_und != 0, (const char*)_nme, _obj, _clb);
}

EWXWEXPORT(void,ELJCommand_Delete)(void* _obj)
{
	delete (ELJCommand*)_obj;
}

EWXWEXPORT(int,ELJCommand_GetName)(void* _obj, void* _buf)
{
	return copyStrToBuf(_buf, ((ELJCommand*)_obj)->GetName());
}

EWXWEXPORT(int,ELJCommand_CanUndo)(void* _obj)
{
	return (int)((ELJCommand*)_obj)->CanUndo();
}
	

EWXWEXPORT(void*,wxCommandProcessor_wxCommandProcessor)(int maxCommands)
{
	return (void*)new wxCommandProcessor(maxCommands);
}
	
EWXWEXPORT(void,wxCommandProcessor_Delete)(void* _obj)
{
	delete (wxCommandProcessor*)_obj;
}

EWXWEXPORT(int,wxCommandProcessor_Submit)(void* _obj, void* command, int storeIt)
{
	return (int)((wxCommandProcessor*)_obj)->Submit((wxCommand*)command, storeIt != 0);
}
	
EWXWEXPORT(int,wxCommandProcessor_Undo)(void* _obj)
{
	return (int)((wxCommandProcessor*)_obj)->Undo();
}
	
EWXWEXPORT(int,wxCommandProcessor_Redo)(void* _obj)
{
	return (int)((wxCommandProcessor*)_obj)->Redo();
}
	
EWXWEXPORT(int,wxCommandProcessor_CanUndo)(void* _obj)
{
	return (int)((wxCommandProcessor*)_obj)->CanUndo();
}
	
EWXWEXPORT(int,wxCommandProcessor_CanRedo)(void* _obj)
{
	return (int)((wxCommandProcessor*)_obj)->CanRedo();
}
	
EWXWEXPORT(void,wxCommandProcessor_SetEditMenu)(void* _obj, void* menu)
{
	((wxCommandProcessor*)_obj)->SetEditMenu((wxMenu*)menu);
}
	
EWXWEXPORT(void*,wxCommandProcessor_GetEditMenu)(void* _obj)
{
	return (void*)((wxCommandProcessor*)_obj)->GetEditMenu();
}
	
EWXWEXPORT(void,wxCommandProcessor_SetMenuStrings)(void* _obj)
{
	((wxCommandProcessor*)_obj)->SetMenuStrings();
}
	
EWXWEXPORT(void,wxCommandProcessor_Initialize)(void* _obj)
{
	((wxCommandProcessor*)_obj)->Initialize();
}
	
EWXWEXPORT(int,wxCommandProcessor_GetCommands)(void* _obj, void* _ref)
{
	wxList lst = ((wxCommandProcessor*)_obj)->GetCommands();
	if (_ref)
	{
		for (unsigned int i = 0; i < lst.GetCount(); i++)
			((void**)_ref)[i] = (void*)lst.Item(i);
	}
	
	return lst.GetCount();
}
	
EWXWEXPORT(int,wxCommandProcessor_GetMaxCommands)(void* _obj)
{
	return ((wxCommandProcessor*)_obj)->GetMaxCommands();
}
	
EWXWEXPORT(void,wxCommandProcessor_ClearCommands)(void* _obj)
{
	((wxCommandProcessor*)_obj)->ClearCommands();
}
	
}