Added satellites context menu

ver1_5_1
Da Woon Jung 2007-12-09 04:54:16 +00:00
parent ea35fb8fcf
commit 16fc29f85d
8 changed files with 372 additions and 18 deletions

View File

@ -3,7 +3,7 @@
// celestia
//
// Created by Bob Ippolito on Sat Jun 08 2002.
// Copyright (c) 2002 Chris Laurel. All rights reserved.
// Copyright (C) 2007, Celestia Development Team
//
#import "CelestiaVector.h"
@ -28,4 +28,5 @@
-(CelestiaVector*)equatorialToBodyFixed:(NSNumber*)n;
-(CelestiaVector*)eclipticalToEquatorial:(NSNumber*)n;
-(CelestiaVector*)eclipticalToBodyFixed:(NSNumber*)n;
-(NSArray*)alternateSurfaceNames;
@end

View File

@ -3,7 +3,7 @@
// celestia
//
// Created by Bob Ippolito on Sat Jun 08 2002.
// Copyright (c) 2002 Chris Laurel. All rights reserved.
// Copyright (C) 2007, Celestia Development Team
//
#import "CelestiaBody.h"
@ -123,4 +123,23 @@
{
return [CelestiaVector vectorWithQuatd:[self body]->getEclipticalToBodyFixed([n doubleValue])];
}
-(NSArray*)alternateSurfaceNames
{
NSMutableArray *result = nil;
std::vector<std::string>* altSurfaces = [self body]->getAlternateSurfaceNames();
if (altSurfaces)
{
result = [NSMutableArray array];
if (altSurfaces->size() > 0)
{
for (unsigned int i = 0; i < altSurfaces->size(); ++i)
{
[result addObject: [NSString stringWithStdString: (*altSurfaces)[i].c_str()]];
}
}
delete altSurfaces;
}
return result;
}
@end

View File

@ -3,7 +3,7 @@
// celestia
//
// Created by Bob Ippolito on Tue May 28 2002.
// Copyright (c) 2002 Chris Laurel. All rights reserved.
// Copyright (C) 2007, Celestia Development Team
//
#import "CelestiaAppCore.h"
@ -74,7 +74,6 @@
-(IBAction) captureMovie: (id) sender;
-(void)addSurfaceMenu:(NSMenu*)contextMenu;
-(BOOL)validateMenuItem:(id)item;
-(IBAction)activateMenuItem:(id)item;

View File

@ -3,7 +3,7 @@
// celestia
//
// Created by Bob Ippolito on Tue May 28 2002.
// Copyright (c) 2002 Chris Laurel. All rights reserved.
// Copyright (C) 2007, Celestia Development Team
//
#include <unistd.h>
@ -724,7 +724,17 @@ NSString* fatalErrorMessage;
[appCore forward];
}
-(IBAction)showGLInfo:(id)sender
- (IBAction) selectSatellite:(id)sender
{
if (sender &&
[sender respondsToSelector: @selector(representedObject)] &&
[sender representedObject])
{
[[appCore simulation] setSelection: [[[CelestiaSelection alloc] initWithCelestiaBody: [sender representedObject]] autorelease]];
}
}
- (IBAction) showGLInfo:(id)sender
{
if (![glInfoPanel isVisible])
{
@ -775,7 +785,7 @@ NSString* fatalErrorMessage;
// GUI Tag Methods ----------------------------------------------------------
- (BOOL) validateMenuItem: (id) item
- (BOOL) validateMenuItem: (id) item
{
if ( [startupCondition condition] == 0 ) return NO;
if ( [item action] == nil ) return NO;
@ -807,12 +817,6 @@ NSString* fatalErrorMessage;
}
}
- (void) addSurfaceMenu: (NSMenu*) contextMenu
{
[settings addSurfaceMenu: contextMenu ];
}
-(IBAction) showPanel: (id) sender
{
switch( [sender tag] )

View File

@ -3,12 +3,13 @@
// celestia
//
// Created by Bob Ippolito on Tue May 28 2002.
// Copyright (c) 2002 Chris Laurel. All rights reserved.
// Copyright (C) 2007, Celestia Development Team
//
#import "CelestiaOpenGLView.h"
#import "CelestiaAppCore.h"
#import "MacInputWatcher.h"
#import "TextWindowController.h"
#import "Menu_Extensions.h"
#import <OpenGL/gl.h>
#import <OpenGL/glext.h>
#import <OpenGL/CGLTypes.h>
@ -161,7 +162,51 @@
[appCore mouseButtonDown:location modifiers:[appCore toCelestiaModifiers: 0 buttons:CEL_LEFT_BUTTON]];
[appCore mouseButtonUp:location2 modifiers:[appCore toCelestiaModifiers: 0 buttons:CEL_LEFT_BUTTON]];
NSMenuItem *surfItem = nil;
NSMenuItem *satItem = nil;
int satMenuIndex = -1;
int surfMenuIndex = -1;
int separatorIndex = -1;
[[self menu] removePlanetarySystemItem];
[[self menu] removeAltSurfaceItem];
selection = [[appCore simulation] selection];
satItem = [[self menu] addPlanetarySystemItemForSelection: selection
target: controller];
surfItem = [[self menu] addAltSurfaceItemForSelection: selection
target: controller];
if (surfItem)
surfMenuIndex = [[self menu] indexOfItem: surfItem];
if (satItem)
satMenuIndex = [[self menu] indexOfItem: satItem];
separatorIndex = (surfMenuIndex > satMenuIndex) ?
surfMenuIndex + 1 :
satMenuIndex + 1;
if (separatorIndex > 0 && separatorIndex < [[self menu] numberOfItems])
{
[[self menu] insertItem: [NSMenuItem separatorItem]
atIndex: separatorIndex];
}
if ([selection body])
{
selectionName = [[selection body] name];
#if REFMARKS
// TODO: Add support for reference marks
#endif
}
else if ([selection star])
{
selectionName = [[selection star] name];
}
else
{
selectionName = [selection briefName];
}
/*
selectionName = [[[appCore simulation] selection] briefName];
if ([selectionName isEqualToString: @""])
{
@ -169,11 +214,11 @@
[appCore mouseButtonUp:location2 modifiers:[appCore toCelestiaModifiers: 0 buttons:CEL_LEFT_BUTTON]];
selection = [[appCore simulation] selection];
selectionName = [[[appCore simulation] selection] name];
}
if ([selectionName isEqualToString: @""]) return NULL;
}
*/
if ([selectionName isEqualToString: @""]) return nil;
[[[self menu] itemAtIndex: 0] setTitle: selectionName ];
[[[self menu] itemAtIndex: 0] setEnabled: YES ];
[ controller addSurfaceMenu: [self menu] ];
// [ [self menu] setAutoenablesItems: NO ];
return [self menu];
}
@ -254,6 +299,15 @@
}
NSPoint location = [self convertPoint: [theEvent locationInWindow] fromView: nil];
NSRect bounds = [self bounds];
if (!NSPointInRect(location, bounds))
{
// -ve coords can crash Celestia so clamp to view bounds
if (location.x < NSMinX(bounds)) location.x = NSMinX(bounds);
if (location.x > NSMaxX(bounds)) location.x = NSMaxX(bounds);
if (location.y < NSMinY(bounds)) location.y = NSMinY(bounds);
if (location.y > NSMaxY(bounds)) location.y = NSMaxY(bounds);
}
CelestiaAppCore *appCore = [CelestiaAppCore sharedAppCore];
[appCore mouseButtonUp:location modifiers:[appCore toCelestiaModifiers:[theEvent modifierFlags] buttons:CEL_LEFT_BUTTON]];
}

View File

@ -0,0 +1,31 @@
//
// Menu_Extensions.h
// celestia
//
// Created by Da Woon Jung on 12/9/07.
// Copyright (C) 2007, Celestia Development Team
//
#import <Cocoa/Cocoa.h>
@class CelestiaSelection;
@class BrowserItem;
@interface NSMenu (CelestiaMenu)
- (int) indexOfItemWithLocalizableTitle: (NSString *) aTitle;
- (NSMenuItem *) addPlanetarySystemItemForSelection: (CelestiaSelection *) aSelection
target: (id) aTarget;
- (NSMenuItem *) addAltSurfaceItemForSelection: (CelestiaSelection *) aSelection
target: (id) aTarget;
- (void) removePlanetarySystemItem;
- (void) removeAltSurfaceItem;
@end
@interface NSMenuItem (CelestiaMenu)
- (void) addPlanetarySystemMenuForItem: (BrowserItem *) browseItem
target: (id) target
action: (SEL) action;
- (void) addAltSurfaceMenuWithNames: (NSArray *) surfaces
target: (id) target
action: (SEL) action;
@end

View File

@ -0,0 +1,226 @@
//
// Menu_Extensions.m
// celestia
//
// Created by Da Woon Jung on 12/9/07.
// Copyright (C) 2007, Celestia Development Team
//
#import "Menu_Extensions.h"
#import "CelestiaSelection.h"
#import "BrowserItem.h"
@implementation NSMenu (CelestiaMenu)
- (int) indexOfItemWithLocalizableTitle: (NSString *) aTitle
{
int index = [self indexOfItemWithTitle: NSLocalizedString(aTitle,@"")];
if (index < 0)
index = [self indexOfItemWithTitle: aTitle];
return index;
}
- (void) removePlanetarySystemItem
{
int satMenuIndex = [self indexOfItemWithTitle:
NSLocalizedStringFromTable(@"Satellites",@"po",@"")];
if (satMenuIndex < 0)
satMenuIndex = [self indexOfItemWithTitle:
NSLocalizedStringFromTable(@"Orbiting Bodies",@"po",@"")];
if (satMenuIndex < 0)
satMenuIndex = [self indexOfItemWithTitle: NSLocalizedStringFromTable(@"Planets",@"po",@"")];
if (satMenuIndex >= 0)
{
[self removeItemAtIndex: satMenuIndex];
if ([[self itemAtIndex: satMenuIndex] isSeparatorItem])
[self removeItemAtIndex: satMenuIndex];
}
}
- (void) removeAltSurfaceItem
{
int surfMenuIndex = [self indexOfItemWithLocalizableTitle:
@"Show Alternate Surface" ];
if (surfMenuIndex >= 0)
{
[self removeItemAtIndex: surfMenuIndex];
if ([[self itemAtIndex: surfMenuIndex] isSeparatorItem])
[self removeItemAtIndex: surfMenuIndex];
}
}
- (NSMenuItem *) addPlanetarySystemItemForSelection: (CelestiaSelection *) aSelection
target: (id) aTarget;
{
NSMenuItem *mi = nil;
id browseItem;
if ([aSelection body])
{
browseItem = [[[BrowserItem alloc] initWithCelestiaBody: [aSelection body]] autorelease];
[BrowserItem addChildrenToBody: browseItem];
NSArray *children = [browseItem allChildNames];
if (children && [children count] > 0)
{
mi = [[[NSMenuItem alloc] initWithTitle: NSLocalizedStringFromTable(@"Satellites",@"po",@"") action: nil keyEquivalent: @""] autorelease];
[mi addPlanetarySystemMenuForItem: browseItem
target: aTarget
action: @selector(selectSatellite:)];
}
}
else if ([aSelection star])
{
browseItem = [[[BrowserItem alloc] initWithCelestiaStar: [aSelection star]] autorelease];
[BrowserItem addChildrenToStar: browseItem];
NSArray *children = [browseItem allChildNames];
if (children && [children count] > 0)
{
NSString *satMenuItemName = [[browseItem name] isEqualToString: @"Sol"] ?
@"Orbiting Bodies" : @"Planets";
mi = [[[NSMenuItem alloc] initWithTitle: NSLocalizedStringFromTable(satMenuItemName,@"po",@"") action: nil keyEquivalent: @""] autorelease];
[mi addPlanetarySystemMenuForItem: browseItem
target: aTarget
action: @selector(selectSatellite:)];
}
}
if (mi && [[mi submenu] numberOfItems] > 0)
{
int menuPos = [self numberOfItems] - 2;
if (menuPos < 0)
menuPos = 0;
[self insertItem: mi atIndex: menuPos];
}
else
{
mi = nil;
}
return mi;
}
- (NSMenuItem *) addAltSurfaceItemForSelection: (CelestiaSelection *) aSelection
target: (id) aTarget;
{
NSMenuItem *mi = nil;
if ([aSelection body])
{
NSArray *surfaces = [[aSelection body] alternateSurfaceNames];
if (surfaces && [surfaces count] > 0)
{
mi = [[[NSMenuItem alloc] initWithTitle:
NSLocalizedString(@"Show Alternate Surface",@"") action: nil
keyEquivalent: @""] autorelease];
[mi addAltSurfaceMenuWithNames: surfaces
target: aTarget
action: @selector(activateMenuItem:)];
if (mi && [[mi submenu] numberOfItems] > 0)
{
int menuPos = [self numberOfItems] - 2;
if (menuPos < 0)
menuPos = 0;
[self insertItem: mi atIndex: menuPos];
}
else
{
mi = nil;
}
}
}
return mi;
}
@end
@implementation NSMenuItem (CelestiaMenu)
- (void) addPlanetarySystemMenuForItem: (BrowserItem *) browseItem
target: (id) target
action: (SEL) action
{
NSMenu *satMenu;
id childName;
id child;
id childChildren;
unsigned childCount = 0;
BOOL loneChild = NO;
NSString *locationsName = NSLocalizedStringFromTable(@"Locations",@"po",@"");
NSArray *children = [browseItem allChildNames];
NSEnumerator *childEnum = [children objectEnumerator];
while ((childName = [childEnum nextObject]))
if (![childName isEqualToString: locationsName]) ++childCount;
loneChild = (childCount == 1);
satMenu = [[[NSMenu alloc ] initWithTitle: @"Satellites" ] autorelease];
[self setSubmenu: satMenu];
childEnum = [children objectEnumerator];
while ((childName = [childEnum nextObject]))
{
if ([childName isEqualToString: locationsName])
continue;
NSMenuItem *satMenuItem;
child = [browseItem childNamed: childName];
if (child)
{
childChildren = [child allChildNames];
// Don't create a submenu for a single item
if (loneChild)
{
satMenuItem = self;
}
else
{
satMenuItem = [[[NSMenuItem alloc] initWithTitle: childName action: nil keyEquivalent: @""] autorelease];
[satMenuItem setRepresentedObject: [child body] ];
[satMenuItem setTarget: target];
[satMenu addItem: satMenuItem];
}
if (childChildren && [childChildren count] > 0)
{
NSMenu *subMenu = [[[NSMenu alloc ] initWithTitle: @"children" ] autorelease];
NSMenuItem *subMenuItem;
id subChildName;
id subChild;
NSEnumerator *subEnum = [childChildren objectEnumerator];
while ((subChildName = [subEnum nextObject]))
{
subChild = [child childNamed: subChildName];
if (subChild)
{
subMenuItem = [[[NSMenuItem alloc] initWithTitle: subChildName action: action keyEquivalent: @""] autorelease];
[subMenuItem setRepresentedObject: [subChild body] ];
[subMenuItem setTarget: target];
[subMenu addItem: subMenuItem];
}
}
[satMenuItem setSubmenu: subMenu];
}
else
{
[satMenuItem setAction: action];
}
}
}
}
- (void) addAltSurfaceMenuWithNames: (NSArray *) surfaces
target: (id) target
action: (SEL) action
{
NSMenu *surfaceMenu = [[NSMenu alloc ] initWithTitle: @"altsurf" ];
[ self setEnabled: YES ];
NSMenuItem *newItem = [[NSMenuItem alloc] initWithTitle: NSLocalizedString(@"default",@"") action: action keyEquivalent: @""];
[newItem setTag: 600 ];
[newItem setTarget: target ];
[ surfaceMenu addItem: newItem ];
unsigned i;
for (i = 0; i < [surfaces count]; ++i)
{
newItem = [[NSMenuItem alloc] initWithTitle: [surfaces objectAtIndex: i] action: action keyEquivalent: @""];
[newItem setTag: 601+i ];
[newItem setTarget: target ];
[ surfaceMenu addItem: newItem ];
}
[ self setSubmenu: surfaceMenu ];
[ surfaceMenu update ];
}
@end

View File

@ -8,9 +8,11 @@
/* Begin PBXBuildFile section */
0C76BFD108537EDB00D31A90 /* qtcapture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C76BFCF08537EDB00D31A90 /* qtcapture.cpp */; };
E50657D80CBFB08500151204 /* imagecapture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E50657D60CBFB08500151204 /* imagecapture.cpp */; };
E50CCA390C065BF900E9C76A /* eclipsefinder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E50CCA370C065BF900E9C76A /* eclipsefinder.cpp */; };
E50CCA590C065F0100E9C76A /* EclipseFinder.nib in Resources */ = {isa = PBXBuildFile; fileRef = E50CCA530C065F0100E9C76A /* EclipseFinder.nib */; };
E50CCA6A0C06632A00E9C76A /* EclipseFinderController.mm in Sources */ = {isa = PBXBuildFile; fileRef = E50CCA680C06632A00E9C76A /* EclipseFinderController.mm */; };
E512245A0CF9FC7D009092A2 /* BrowserItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = E51224580CF9FC7D009092A2 /* BrowserItem.mm */; };
E532F4F10933331800D7D5B3 /* dsodb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E532F4E80933331800D7D5B3 /* dsodb.cpp */; settings = {COMPILER_FLAGS = "-DDPRINTF=//"; }; };
E532F4F30933331800D7D5B3 /* dsoname.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E532F4EA0933331800D7D5B3 /* dsoname.cpp */; };
E532F4F50933331800D7D5B3 /* dsooctree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E532F4EC0933331800D7D5B3 /* dsooctree.cpp */; };
@ -215,6 +217,7 @@
E5D4467607772B6C00A1577D /* CelestiaSettings.mm in Sources */ = {isa = PBXBuildFile; fileRef = E5D4467407772B6C00A1577D /* CelestiaSettings.mm */; };
E5D4467807772BA000A1577D /* CGLInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = F505BFFA02CA9DAE0100020A /* CGLInfo.m */; };
E5D471270778E33C007731C3 /* libpng.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E5D471260778E33C007731C3 /* libpng.dylib */; };
E5D542770D0B87EA00E8C513 /* Menu_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = E5D5425F0D0B86B200E8C513 /* Menu_Extensions.m */; };
E5D766140982B1860099DBBD /* HelpWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = E5D7660E0982B1860099DBBD /* HelpWindow.nib */; };
E5D766700982B4660099DBBD /* amalthea.cmod in Copy Models */ = {isa = PBXBuildFile; fileRef = E5D766270982B3300099DBBD /* amalthea.cmod */; };
E5D766710982B4660099DBBD /* apollo.3ds in Copy Models */ = {isa = PBXBuildFile; fileRef = E5D766280982B3300099DBBD /* apollo.3ds */; };
@ -479,6 +482,8 @@
29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = "<group>"; };
29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
E50657D60CBFB08500151204 /* imagecapture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imagecapture.cpp; path = ../src/celestia/imagecapture.cpp; sourceTree = SOURCE_ROOT; };
E50657D70CBFB08500151204 /* imagecapture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imagecapture.h; path = ../src/celestia/imagecapture.h; sourceTree = SOURCE_ROOT; };
E50CCA370C065BF900E9C76A /* eclipsefinder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = eclipsefinder.cpp; path = ../src/celestia/eclipsefinder.cpp; sourceTree = SOURCE_ROOT; };
E50CCA380C065BF900E9C76A /* eclipsefinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = eclipsefinder.h; path = ../src/celestia/eclipsefinder.h; sourceTree = SOURCE_ROOT; };
E50CCA540C065F0100E9C76A /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/EclipseFinder.nib; sourceTree = "<group>"; };
@ -486,6 +491,9 @@
E50CCA5D0C065F4300E9C76A /* es */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = es; path = es.lproj/EclipseFinder.nib; sourceTree = "<group>"; };
E50CCA670C06632A00E9C76A /* EclipseFinderController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EclipseFinderController.h; sourceTree = "<group>"; };
E50CCA680C06632A00E9C76A /* EclipseFinderController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EclipseFinderController.mm; sourceTree = "<group>"; };
E51224570CF9FC7D009092A2 /* BrowserItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BrowserItem.h; sourceTree = "<group>"; };
E51224580CF9FC7D009092A2 /* BrowserItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BrowserItem.mm; sourceTree = "<group>"; };
E51224730CF9FE7C009092A2 /* Astro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Astro.h; sourceTree = "<group>"; };
E5323E3B0C05E84400401D3B /* lauxlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lauxlib.h; sourceTree = "<group>"; };
E5323E3C0C05E84400401D3B /* lua.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = lua.hpp; sourceTree = "<group>"; };
E5323E3D0C05E84400401D3B /* luaconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = luaconf.h; sourceTree = "<group>"; };
@ -626,6 +634,8 @@
E5D4467307772B6C00A1577D /* CelestiaSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CelestiaSettings.h; sourceTree = "<group>"; };
E5D4467407772B6C00A1577D /* CelestiaSettings.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CelestiaSettings.mm; sourceTree = "<group>"; };
E5D471260778E33C007731C3 /* libpng.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpng.dylib; path = Frameworks/libpng.dylib; sourceTree = "<group>"; };
E5D5425E0D0B86B200E8C513 /* Menu_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Menu_Extensions.h; sourceTree = "<group>"; };
E5D5425F0D0B86B200E8C513 /* Menu_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Menu_Extensions.m; sourceTree = "<group>"; };
E5D7660B0982B15C0099DBBD /* es */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = es; path = es.lproj/Credits.rtf; sourceTree = "<group>"; };
E5D7660C0982B1630099DBBD /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = fr; path = fr.lproj/Credits.rtf; sourceTree = "<group>"; };
E5D7660F0982B1860099DBBD /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/HelpWindow.nib; sourceTree = "<group>"; };
@ -818,7 +828,7 @@
F51C6DF802959A17014901DC /* overlay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = overlay.h; path = ../src/celengine/overlay.h; sourceTree = SOURCE_ROOT; };
F51C6DF902959A17014901DC /* parser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = parser.h; path = ../src/celengine/parser.h; sourceTree = SOURCE_ROOT; };
F51C6DFA02959A17014901DC /* regcombine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = regcombine.h; path = ../src/celengine/regcombine.h; sourceTree = SOURCE_ROOT; };
F51C6DFB02959A17014901DC /* render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = render.h; path = ../src/celengine/render.h; sourceTree = SOURCE_ROOT; };
F51C6DFB02959A17014901DC /* render.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = render.h; path = ../src/celengine/render.h; sourceTree = SOURCE_ROOT; };
F51C6DFC02959A17014901DC /* samporbit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = samporbit.h; path = ../src/celengine/samporbit.h; sourceTree = SOURCE_ROOT; };
F51C6DFD02959A17014901DC /* selection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = selection.h; path = ../src/celengine/selection.h; sourceTree = SOURCE_ROOT; };
F51C6DFE02959A17014901DC /* simulation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = simulation.h; path = ../src/celengine/simulation.h; sourceTree = SOURCE_ROOT; };
@ -974,6 +984,7 @@
F5274ED302AE88260100020A /* CelestiaOpenGLView.m */,
E5D4467407772B6C00A1577D /* CelestiaSettings.mm */,
F505BFFA02CA9DAE0100020A /* CGLInfo.m */,
E51224580CF9FC7D009092A2 /* BrowserItem.mm */,
E54343150783C42500053094 /* BrowserWindowController.mm */,
E50CCA680C06632A00E9C76A /* EclipseFinderController.mm */,
F57FA4F002B9AB8601000006 /* FavoriteInfoWindowController.m */,
@ -991,6 +1002,7 @@
F5274ED202AE88260100020A /* CelestiaOpenGLView.h */,
E5D4467307772B6C00A1577D /* CelestiaSettings.h */,
F505BFFB02CA9DAE0100020A /* CGLInfo.h */,
E51224570CF9FC7D009092A2 /* BrowserItem.h */,
E54343140783C42500053094 /* BrowserWindowController.h */,
E50CCA670C06632A00E9C76A /* EclipseFinderController.h */,
F57FA4EF02B9AB8601000006 /* FavoriteInfoWindowController.h */,
@ -1334,6 +1346,7 @@
F51C6D8D02959960014901DC /* destination.cpp */,
E50CCA370C065BF900E9C76A /* eclipsefinder.cpp */,
F51C6D8E02959960014901DC /* favorites.cpp */,
E50657D60CBFB08500151204 /* imagecapture.cpp */,
0C76BFCF08537EDB00D31A90 /* qtcapture.cpp */,
E53E61990C0CA105003CD767 /* scriptmenu.cpp */,
F53036BB03D908CE01000002 /* url.cpp */,
@ -1343,6 +1356,7 @@
F51C6D9C02959960014901DC /* destination.h */,
E50CCA380C065BF900E9C76A /* eclipsefinder.h */,
F51C6D9D02959960014901DC /* favorites.h */,
E50657D70CBFB08500151204 /* imagecapture.h */,
0C76BFC0085215B100D31A90 /* moviecapture.h */,
0C76BFD008537EDB00D31A90 /* qtcapture.h */,
E53E619A0C0CA105003CD767 /* scriptmenu.h */,
@ -1538,6 +1552,7 @@
F58102A602B3269F0100020A /* CelestiaStar.mm */,
F55F042802B1596A0100020A /* CelestiaUniverse.mm */,
F55A246902B2D9BA0100020A /* CelestiaVector.mm */,
E51224730CF9FE7C009092A2 /* Astro.h */,
F55F041102B1105D0100020A /* Astro.h */,
F51FB0E002AF0C820100020A /* CelestiaAppCore.h */,
F55A246102B2AE6E0100020A /* CelestiaBody.h */,
@ -1579,6 +1594,7 @@
F57F9FD402B94A0B01000006 /* ContextOutlineView.m */,
E56A5AEB0848F92200A21D7E /* FullScreenWindow.m */,
F578B79E02B3E2DD0100020A /* ImageAndTextCell.m */,
E5D5425F0D0B86B200E8C513 /* Menu_Extensions.m */,
F56FFFAA02C571280100020A /* MyTree.m */,
F578B7A102B3E2DD0100020A /* NSArray_Extensions.m */,
F578B7A002B3E2DD0100020A /* NSOutlineView_Extensions.m */,
@ -1586,6 +1602,7 @@
F57F9FD302B94A0B01000006 /* ContextOutlineView.h */,
E56A5AEA0848F92200A21D7E /* FullScreenWindow.h */,
F578B7A202B3E2DD0100020A /* ImageAndTextCell.h */,
E5D5425E0D0B86B200E8C513 /* Menu_Extensions.h */,
F56FFFA902C571280100020A /* MyTree.h */,
F578B7A302B3E2DD0100020A /* NSArray_Extensions.h */,
F578B79F02B3E2DD0100020A /* NSOutlineView_Extensions.h */,
@ -1891,6 +1908,9 @@
E53E61AD0C0CA444003CD767 /* ScriptsController.mm in Sources */,
E5B48EBA0C22065E00C6FBD7 /* MacInputWatcher.mm in Sources */,
E5E2BDD70C24F7E6000D6E83 /* TextWindowController.m in Sources */,
E50657D80CBFB08500151204 /* imagecapture.cpp in Sources */,
E512245A0CF9FC7D009092A2 /* BrowserItem.mm in Sources */,
E5D542770D0B87EA00E8C513 /* Menu_Extensions.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};