mirror of
https://github.com/nickshanks/ResKnife.git
synced 2024-06-15 00:29:29 +00:00
201 lines
5.1 KiB
C++
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);
|
|
} |