diff --git a/macosx/CelestiaBody.h b/macosx/CelestiaBody.h index 9cb82bbea..1378e6300 100644 --- a/macosx/CelestiaBody.h +++ b/macosx/CelestiaBody.h @@ -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 diff --git a/macosx/CelestiaBody.mm b/macosx/CelestiaBody.mm index 141090100..c308cc65e 100644 --- a/macosx/CelestiaBody.mm +++ b/macosx/CelestiaBody.mm @@ -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* 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 diff --git a/macosx/CelestiaController.h b/macosx/CelestiaController.h index 687c61de4..657de4f0b 100644 --- a/macosx/CelestiaController.h +++ b/macosx/CelestiaController.h @@ -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; diff --git a/macosx/CelestiaController.m b/macosx/CelestiaController.m index c5e72d6e6..797fa5cb3 100644 --- a/macosx/CelestiaController.m +++ b/macosx/CelestiaController.m @@ -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 @@ -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] ) diff --git a/macosx/CelestiaOpenGLView.m b/macosx/CelestiaOpenGLView.m index 32682554d..e6271a82c 100644 --- a/macosx/CelestiaOpenGLView.m +++ b/macosx/CelestiaOpenGLView.m @@ -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 #import #import @@ -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]]; } diff --git a/macosx/Menu_Extensions.h b/macosx/Menu_Extensions.h new file mode 100644 index 000000000..bb1039144 --- /dev/null +++ b/macosx/Menu_Extensions.h @@ -0,0 +1,31 @@ +// +// Menu_Extensions.h +// celestia +// +// Created by Da Woon Jung on 12/9/07. +// Copyright (C) 2007, Celestia Development Team +// + +#import + +@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 diff --git a/macosx/Menu_Extensions.m b/macosx/Menu_Extensions.m new file mode 100644 index 000000000..d4e9d5f1b --- /dev/null +++ b/macosx/Menu_Extensions.m @@ -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 diff --git a/macosx/celestia.xcodeproj/project.pbxproj b/macosx/celestia.xcodeproj/project.pbxproj index 0fbf0c6b4..62d675b80 100644 --- a/macosx/celestia.xcodeproj/project.pbxproj +++ b/macosx/celestia.xcodeproj/project.pbxproj @@ -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 = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 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 = ""; }; @@ -486,6 +491,9 @@ E50CCA5D0C065F4300E9C76A /* es */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = es; path = es.lproj/EclipseFinder.nib; sourceTree = ""; }; E50CCA670C06632A00E9C76A /* EclipseFinderController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EclipseFinderController.h; sourceTree = ""; }; E50CCA680C06632A00E9C76A /* EclipseFinderController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EclipseFinderController.mm; sourceTree = ""; }; + E51224570CF9FC7D009092A2 /* BrowserItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BrowserItem.h; sourceTree = ""; }; + E51224580CF9FC7D009092A2 /* BrowserItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BrowserItem.mm; sourceTree = ""; }; + E51224730CF9FE7C009092A2 /* Astro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Astro.h; sourceTree = ""; }; E5323E3B0C05E84400401D3B /* lauxlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lauxlib.h; sourceTree = ""; }; E5323E3C0C05E84400401D3B /* lua.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = lua.hpp; sourceTree = ""; }; E5323E3D0C05E84400401D3B /* luaconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = luaconf.h; sourceTree = ""; }; @@ -626,6 +634,8 @@ E5D4467307772B6C00A1577D /* CelestiaSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CelestiaSettings.h; sourceTree = ""; }; E5D4467407772B6C00A1577D /* CelestiaSettings.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CelestiaSettings.mm; sourceTree = ""; }; E5D471260778E33C007731C3 /* libpng.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpng.dylib; path = Frameworks/libpng.dylib; sourceTree = ""; }; + E5D5425E0D0B86B200E8C513 /* Menu_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Menu_Extensions.h; sourceTree = ""; }; + E5D5425F0D0B86B200E8C513 /* Menu_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Menu_Extensions.m; sourceTree = ""; }; E5D7660B0982B15C0099DBBD /* es */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = es; path = es.lproj/Credits.rtf; sourceTree = ""; }; E5D7660C0982B1630099DBBD /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = fr; path = fr.lproj/Credits.rtf; sourceTree = ""; }; E5D7660F0982B1860099DBBD /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/HelpWindow.nib; sourceTree = ""; }; @@ -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; };