ResKnife/Carbon/Classes/HostCallbacks.cpp

201 lines
5.1 KiB
C++

#define _ResKnife_Plug_ 0
#include "HostCallbacks.h"
#include "Application.h"
#include "WindowObject.h"
#include "EditorWindow.h"
#include "PlugObject.h"
#include "Errors.h"
extern globals g;
/* window management */
Plug_WindowRef Host_RegisterWindow(Plug_PlugInRef plug, Plug_ResourceRef resource, WindowRef window)
{
if(resource)
{
EditorWindowPtr plugWindow = new EditorWindow(((ResourceObjectPtr) resource)->File(), (ResourceObjectPtr) resource, window);
((PlugObjectPtr) plug)->SetWindowObject((WindowObjectPtr) plugWindow);
((PlugObjectPtr) plug)->SetResourceObject((ResourceObjectPtr) resource);
return (Plug_WindowRef) plugWindow;
}
/* else
{
PickerWindowPtr plugWindow = new PickerWindow(window);
((PlugObjectPtr) plug)->SetWindowObject(plugWindow);
((PlugObjectPtr) plug)->SetResourceObject((ResourceObjectPtr) resource);
return (Plug_WindowRef) plugWindow;
}
*/ else return null;
}
#if !TARGET_API_MAC_CARBON
void Host_InstallClassicWindowEventHandler(Plug_WindowRef plugWindow, RoutineDescriptor *handler)
{
((PlugWindowPtr) plugWindow)->InstallClassicEventHandler((ClassicEventHandlerProcPtr) handler);
}
#endif
WindowRef Host_GetWindowRefFromPlugWindow(Plug_WindowRef plugWindow)
{
return ((WindowObjectPtr) plugWindow)->Window();
}
Plug_WindowRef Host_GetPlugWindowFromWindowRef(WindowRef window)
{
return (Plug_WindowRef) GetWindowRefCon(window);
}
Plug_PlugInRef Host_GetPlugRef(WindowRef window)
{
#pragma unused(window)
return null;
}
Plug_ResourceRef Host_GetResource(ResType type, SInt32 resID, Plug_ResourceRef sameFileAsResource)
{
// FileWindowPtr file;
if(sameFileAsResource != NULL)
{
// file = ((ResourceObjectPtr) sameFileAsResource)->file;
short oldResFile = CurResFile();
UseResFile(HomeResFile(((ResourceObjectPtr) sameFileAsResource)->Data()));
Get1Resource(type, resID); // bug: handle ignored at present
UseResFile(oldResFile);
}
else GetResource(type, resID); // bug: handle ignored at present
return nil; // bug: handle ignored at present
}
Plug_ResourceRef Host_GetTargetResource(Plug_WindowRef plugWindow)
{
return (Plug_ResourceRef) ((EditorWindowPtr) plugWindow)->Resource();
}
/* accessors */
Handle Host_GetResourceData(Plug_ResourceRef resource)
{
((ResourceObjectPtr) resource)->Retain();
return ((ResourceObjectPtr) resource)->Data();
}
Handle Host_GetPartialResourceData(Plug_ResourceRef resource, UInt32 offset, UInt32 length)
{
#pragma unused(resource, offset, length)
return null;
}
void Host_ReleaseResourceData(Plug_ResourceRef resource)
{
#pragma unused(resource)
// ((ResourceObjectPtr) resource)->Release();
return;
}
void Host_ReleasePartialResourceData(Plug_ResourceRef resource, Handle data)
{
#pragma unused(resource, data)
return;
}
ResType Host_GetResourceType(Plug_ResourceRef resource)
{
return ((ResourceObjectPtr) resource)->Type();
}
SInt16 Host_GetResourceID(Plug_ResourceRef resource)
{
return ((ResourceObjectPtr) resource)->ID();
}
UInt32 Host_GetResourceSize(Plug_ResourceRef resource)
{
return ((ResourceObjectPtr) resource)->Size();
}
void Host_GetResourceName(Plug_ResourceRef resource, Str255 name)
{
#pragma unused(resource, name)
return;
}
UInt32 Host_GetWindowRefCon(Plug_WindowRef plugWindow)
{
return ((PlugWindowPtr) plugWindow)->GetRefCon();
}
void Host_SetWindowRefCon(Plug_WindowRef plugWindow, UInt32 value)
{
((PlugWindowPtr) plugWindow)->SetRefCon(value);
}
UInt32 Host_GetGlobalRefCon(Plug_PlugInRef plug)
{
return ((PlugObjectPtr) plug)->GetRefCon();
}
void Host_SetGlobalRefCon(Plug_PlugInRef plug, UInt32 value)
{
((PlugObjectPtr) plug)->SetRefCon(value);
}
Boolean Host_GetResourceDirty(Plug_ResourceRef resource)
{
return ((ResourceObjectPtr) resource)->Dirty();
}
void Host_SetResourceDirty(Plug_ResourceRef resource, Boolean dirty)
{
((ResourceObjectPtr) resource)->SetDirty(dirty);
}
/* utilities */
Handle Host_GetDefaultTemplate(ResType type)
{
short savedResFile = CurResFile();
UseResFile(g.appResFile);
Str255 name = "\pxxxx";
BlockMoveData(&type, name +1, sizeof(ResType));
Handle tmpl = Get1NamedResource('TMPL', name);
OSStatus error = ResError();
UseResFile(savedResFile);
if(error) return null;
else return tmpl;
}
void Host_AppendMenuToBar(Plug_PlugInRef plug, SInt16 resID)
{
#pragma unused(plug, resID)
return;
}
void Host_RemoveMenuFromBar(Plug_PlugInRef plug, SInt16 resID)
{
#pragma unused(plug, resID)
return;
}
void Host_UpdateMenus(Plug_ResourceRef resource)
{
OSStatus error = noErr;
#if TARGET_API_MAC_CARBON
error = CarbonEventUpdateMenus(null, null, null);
// if(error) DebugError("\pHost_UpdateMenus hit an error when calling CarbonEventUpdateMenus()");
error = FileWindowUpdateMenus(null, null, ((ResourceObjectPtr) resource)->File());
// if(error) DebugError("\pHost_UpdateMenus hit an error when calling FileWindowUpdateMenus()");
#else
UpdateMenus(((ResourceObjectPtr) resource)->File()->Window());
#endif
}
void Host_DisplayError(ConstStr255Param errorStr, ConstStr255Param explanationStr, UInt8 severity)
{
#pragma unused(severity)
DisplayError(errorStr, explanationStr);
}
void Host_DebugError(ConstStr255Param errorStr, OSStatus number)
{
DebugError(errorStr, number);
}