mirror of
https://github.com/nickshanks/ResKnife.git
synced 2025-01-14 00:31:37 +00:00
73 lines
2.0 KiB
C++
73 lines
2.0 KiB
C++
#include "PickerWindow.h"
|
|
#include "FileWindow.h"
|
|
#include "Errors.h"
|
|
#include "Utility.h"
|
|
|
|
extern globals g;
|
|
|
|
/*** CREATOR ***/
|
|
PickerWindow::PickerWindow(FileWindowPtr ownerFile, ResType resType) : PlugWindow(ownerFile)
|
|
{
|
|
OSStatus error = noErr;
|
|
|
|
#if USE_NIBS
|
|
// create a nib reference (only searches the application bundle)
|
|
IBNibRef nibRef = null;
|
|
error = CreateNibReference(CFSTR("ResKnife"), &nibRef);
|
|
if(error != noErr || nibRef == null)
|
|
{
|
|
DisplayError("\pThe nib file reference could not be obtained.");
|
|
return;
|
|
}
|
|
|
|
// create window
|
|
error = CreateWindowFromNib(nibRef, CFSTR("Picker Window"), &window);
|
|
if(error != noErr || window == null)
|
|
{
|
|
DisplayError("\pA picker window could not be obtained from the nib file.");
|
|
return;
|
|
}
|
|
|
|
// dispose of nib ref
|
|
DisposeNibReference(nibRef);
|
|
|
|
#elif TARGET_API_MAC_CARBON
|
|
// create window
|
|
Rect creationBounds;
|
|
SetRect(&creationBounds, 9, 45, 256 +9, 256 +45);
|
|
error = CreateNewWindow(kDocumentWindowClass, kWindowStandardDocumentAttributes | kWindowStandardHandlerAttribute, &creationBounds, &window);
|
|
#else
|
|
if(g.useAppearance && g.systemVersion >= kMacOS8)
|
|
{
|
|
window = GetNewCWindow(kFileWindow8, null, kFirstWindowOfClass);
|
|
themeSavvy = true;
|
|
}
|
|
else
|
|
{
|
|
window = GetNewCWindow(kFileWindow7, null, kFirstWindowOfClass);
|
|
themeSavvy = false;
|
|
}
|
|
#endif
|
|
|
|
// set up default window title
|
|
Str255 windowTitle, resTypeStr;
|
|
FSSpec spec = *ownerFile->GetFileSpec();
|
|
CopyPString(spec.name, windowTitle);
|
|
TypeToPString(resType, resTypeStr);
|
|
AppendPString(windowTitle, "\p: ");
|
|
AppendPString(windowTitle, resTypeStr);
|
|
AppendPString(windowTitle, "\p resources");
|
|
|
|
// save PickerWindow class in window's refcon
|
|
SetWindowRefCon(window, (UInt32) this);
|
|
SetWindowKind(window, kPickerWindowKind);
|
|
SetWindowTitle(window, windowTitle);
|
|
|
|
// set window's background to default for theme
|
|
#if TARGET_API_MAC_CARBON
|
|
SetThemeWindowBackground(window, kThemeBrushDocumentWindowBackground, true);
|
|
#else
|
|
if(g.useAppearance)
|
|
SetThemeWindowBackground(window, kThemeBrushDocumentWindowBackground, false);
|
|
#endif
|
|
} |