ResKnife/Carbon/Classes/PickerWindow.cpp

73 lines
2.1 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 >= kMacOSEight )
{
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
}