quakeforge/tools/Forge/InspectorControl.m

129 lines
2.9 KiB
Objective-C

#import "qedefs.h"
// Add .h-files here for new inspectors
#import "Things.h"
#import "TexturePalette.h"
#import "Preferences.h"
id inspcontrol_i;
@implementation InspectorControl
- awakeFromNib
{
inspcontrol_i = self;
currentInspectorType = -1;
contentList = [[List alloc] init];
windowList = [[List alloc] init];
itemList = [[List alloc] init];
// ADD NEW INSPECTORS HERE...
[windowList addObject:win_project_i];
[contentList addObject:[win_project_i contentView]];
[itemProject_i setKeyEquivalent:'1'];
[itemList addObject:itemProject_i];
[windowList addObject:win_textures_i];
[contentList addObject:[win_textures_i contentView]];
[itemTextures_i setKeyEquivalent:'2'];
[itemList addObject:itemTextures_i];
[windowList addObject:win_things_i];
[contentList addObject:[win_things_i contentView]];
[itemThings_i setKeyEquivalent:'3'];
[itemList addObject:itemThings_i];
[windowList addObject:win_prefs_i];
[contentList addObject:[win_prefs_i contentView]];
[itemPrefs_i setKeyEquivalent:'4'];
[itemList addObject:itemPrefs_i];
[windowList addObject:win_settings_i];
[contentList addObject:[win_settings_i contentView]];
[itemSettings_i setKeyEquivalent:'5'];
[itemList addObject:itemSettings_i];
[windowList addObject:win_output_i];
[contentList addObject:[win_output_i contentView]];
[itemOutput_i setKeyEquivalent:'6'];
[itemList addObject:itemOutput_i];
[windowList addObject:win_help_i];
[contentList addObject:[win_help_i contentView]];
[itemHelp_i setKeyEquivalent:'7'];
[itemList addObject:itemHelp_i];
// Setup inspector window with project subview first
[inspectorView_i setAutoresizeSubviews:YES];
inspectorSubview_i = [contentList objectAt:i_project];
[inspectorView_i addSubview:inspectorSubview_i];
currentInspectorType = -1;
[self changeInspectorTo:i_project];
return self;
}
//
// Sent by the PopUpList in the Inspector
// Each cell in the PopUpList must have the correct tag
//
- changeInspector:sender
{
id cell;
cell = [sender selectedCell];
[self changeInspectorTo:[cell tag]];
return self;
}
//
// Change to specific Inspector
//
- changeInspectorTo:(insp_e)which
{
id newView;
NXRect r;
id cell;
NXRect f;
if (which == currentInspectorType)
return self;
currentInspectorType = which;
newView = [contentList objectAt:which];
cell = [itemList objectAt:which]; // set PopUpButton title
[popUpButton_i setTitle:[cell title]];
[inspectorView_i replaceSubview:inspectorSubview_i with:newView];
[inspectorView_i getFrame:&r];
inspectorSubview_i = newView;
[inspectorSubview_i setAutosizing:NX_WIDTHSIZABLE | NX_HEIGHTSIZABLE];
[inspectorSubview_i sizeTo:r.size.width - 4 :r.size.height - 4];
[inspectorSubview_i lockFocus];
[inspectorSubview_i getBounds:&f];
PSsetgray(NX_LTGRAY);
NXRectFill(&f);
[inspectorSubview_i unlockFocus];
[inspectorView_i display];
return self;
}
- (insp_e)getCurrentInspector
{
return currentInspectorType;
}
@end