Hud localizations for OS X

ver1_5_1
Da Woon Jung 2006-05-14 17:34:23 +00:00
parent 7da85df98b
commit b813dcadcd
37 changed files with 1350 additions and 280 deletions

View File

@ -97,12 +97,12 @@ static CelestiaCore *appCore;
NSMutableDictionary* newDict;
newDict = [NSMutableDictionary dictionaryWithCapacity: rootSize];
[newDict setObject: @"Sol" forKey: @"Home (Sol)"];
[newDict setObject: @"Sol" forKey: NSLocalizedString(@"Home (Sol)",@"")];
[newDict setObject: [self starDict: StarBrowser::NearestStars ] forKey: @"Nearest Stars"];
[newDict setObject: [self starDict: StarBrowser::BrighterStars ] forKey: @"Brightest Stars"];
[newDict setObject: [self starDict: StarBrowser::StarsWithPlanets ] forKey: @"Stars With Planets"];
[newDict setObject: [self deepSkyDict ] forKey: @"Deep Sky Objects"];
[newDict setObject: [self starDict: StarBrowser::NearestStars ] forKey: NSLocalizedString(@"Nearest Stars",@"")];
[newDict setObject: [self starDict: StarBrowser::BrighterStars ] forKey: NSLocalizedString(@"Brightest Stars",@"")];
[newDict setObject: [self starDict: StarBrowser::StarsWithPlanets ] forKey: NSLocalizedString(@"Stars With Planets",@"")];
[newDict setObject: [self deepSkyDict ] forKey: NSLocalizedString(@"Deep Sky Objects",@"")];
[newDict setObject: [[newDict allKeys]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)] forKey: @"_keys" ];
[newDict setObject: @"" forKey: @"_path" ];
@ -114,7 +114,7 @@ static CelestiaCore *appCore;
{ // creates browser dictionary for star or planet
NSMutableDictionary* newDict = NULL;
PlanetarySystem* sys = nil;
Selection sel = appCore->getSimulation()->findObjectFromPath([objPath stdString]);
Selection sel = appCore->getSimulation()->findObjectFromPath([objPath stdString], true);
if ( sel.getType() == Selection::Type_Body )
{
sys = sel.body()->getSatellites();
@ -137,7 +137,7 @@ static CelestiaCore *appCore;
for ( i=0; i<sysSize; i++)
{
Body* body = sys->getBody(i);
NSString* bodName = [NSString stringWithStdString: sys->getBody(i)->getName()];
NSString* bodName = [NSString stringWithStdString: body->getName(true)];
NSString* bodPath = [[objPath stringByAppendingString: @"/"] stringByAppendingString: bodName];
subDict = newDict;
int bodyClass = body->getClassification();
@ -181,20 +181,20 @@ static CelestiaCore *appCore;
{
[minorMoonDict setObject: [[minorMoonDict allKeys]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)] forKey: @"_keys" ];
[minorMoonDict setObject: @"" forKey: @"_path" ];
[newDict setObject: minorMoonDict forKey: @"Minor Moons"];
[newDict setObject: minorMoonDict forKey: NSLocalizedString(@"Minor Moons",@"")];
}
}
if (asteroidDict)
{
[asteroidDict setObject: [[asteroidDict allKeys]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)] forKey: @"_keys" ];
[asteroidDict setObject: @"" forKey: @"_path" ];
[newDict setObject: asteroidDict forKey: @"Asteroids"];
[newDict setObject: asteroidDict forKey: NSLocalizedString(@"Asteroids",@"")];
}
if (cometDict)
{
[cometDict setObject: [[cometDict allKeys]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)] forKey: @"_keys" ];
[cometDict setObject: @"" forKey: @"_path" ];
[newDict setObject: cometDict forKey: @"Comets"];
[newDict setObject: cometDict forKey: NSLocalizedString(@"Comets",@"")];
}
if (spacecraftDict)
{
@ -204,7 +204,7 @@ static CelestiaCore *appCore;
{
[spacecraftDict setObject: [[spacecraftDict allKeys]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)] forKey: @"_keys" ];
[spacecraftDict setObject: @"" forKey: @"_path" ];
[newDict setObject: spacecraftDict forKey: @"Spacecraft"];
[newDict setObject: spacecraftDict forKey: NSLocalizedString(@"Spacecrafts",@"")];
}
}
}
@ -219,7 +219,7 @@ static CelestiaCore *appCore;
for (vector<Location*>::const_iterator iter = locations->begin();
iter != locations->end(); iter++)
{
NSString* locName = [NSString stringWithStdString: (*iter)->getName()];
NSString* locName = [NSString stringWithStdString: (*iter)->getName(true)];
NSString* locPath = [[objPath stringByAppendingString: @"/"] stringByAppendingString: locName];
[locationDict setObject: locPath forKey: locName];
}
@ -229,7 +229,7 @@ static CelestiaCore *appCore;
{
[locationDict setObject: [[locationDict allKeys]sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)] forKey: @"_keys" ];
[locationDict setObject: @"" forKey: @"_path" ];
[newDict setObject: locationDict forKey: @"Locations"];
[newDict setObject: locationDict forKey: NSLocalizedString(@"Locations",@"")];
}
}
}
@ -243,7 +243,7 @@ static CelestiaCore *appCore;
- (NSDictionary*) dictForPathArray: (NSArray*) pathNames
{ //returns dictionary for path array
NSMutableDictionary* lastDict = [self rootDict];
NSMutableDictionary* nextDict = lastDict;
id nextDict = lastDict;
NSString* lastKey = nil;
unsigned i;
for (i=1;i<[pathNames count];i++)
@ -290,7 +290,7 @@ static CelestiaCore *appCore;
objPath = (NSString*)obj;
}
Selection sel = appCore->getSimulation()->findObjectFromPath(objPath ? [objPath stdString] : std::string());
Selection sel = appCore->getSimulation()->findObjectFromPath(objPath ? [objPath stdString] : std::string(), true);
// if (sel == nil) NSLog([NSString stringWithFormat: @"obj %@ not found", objPath]);
return sel;
@ -320,7 +320,7 @@ static CelestiaCore *appCore;
if ([obj isKindOfClass: [NSDictionary class]]) return NO;
if ([obj isKindOfClass: [NSString class]])
{
Selection sel = appCore->getSimulation()->findObjectFromPath([obj stdString]);
Selection sel = appCore->getSimulation()->findObjectFromPath([obj stdString], true);
if ( sel.getType() == Selection::Type_Body )
{
if ( sel.body()->getSatellites() || sel.body()->getLocations()) return NO;

View File

@ -39,28 +39,28 @@
switch ([self body]->getClassification())
{
case (Body::Planet):
return @"Planet";
return NSLocalizedString(@"Planet",@"");
break;
case (Body::Moon):
return @"Moon";
return NSLocalizedString(@"Moon",@"");
break;
case (Body::Asteroid):
return @"Asteroid";
return NSLocalizedString(@"Asteroid",@"");
break;
case (Body::Comet):
return @"Comet";
return NSLocalizedString(@"Comet",@"");
break;
case (Body::Spacecraft):
return @"Spacecraft";
return NSLocalizedString(@"Spacecraft",@"");
break;
default:
break;
}
return @"Unknown";
return NSLocalizedString(@"Unknown",@"");
}
-(NSString *)name
{
return [NSString stringWithStdString:[self body]->getName()];
return [NSString stringWithStdString:[self body]->getName(true)];
}
-(NSNumber *)radius
{

View File

@ -120,7 +120,7 @@ NSString* fatalErrorMessage;
{
if (![fileManager fileExistsAtPath: path = [[ mainBundle resourcePath ] stringByAppendingPathComponent: CELESTIA_RESOURCES_FOLDER ] isDirectory: &isFolder] || !isFolder)
{
[self fatalError: @"It appears that the \"CelestiaResources\" directory has not been properly installed in the correct location as indicated in the installation instructions. \n\nPlease correct this and try again."];
[self fatalError: NSLocalizedString(@"It appears that the \"CelestiaResources\" directory has not been properly installed in the correct location as indicated in the installation instructions. \n\nPlease correct this and try again.",@"")];
[self fatalError: nil];
}
}
@ -149,7 +149,7 @@ NSString* fatalErrorMessage;
#ifdef DEBUG
[pool release];
#endif
[self fatalError: @"Error loading data files. Celestia will now quit."];
[self fatalError: NSLocalizedString(@"Error loading data files. Celestia will now quit.",@"")];
#ifndef USE_THREADEDLOAD
[self fatalError: nil];
#else
@ -183,7 +183,7 @@ NSString* fatalErrorMessage;
{
if (fatalErrorMessage == nil) return;
[splashWindowController close];
NSRunAlertPanel(@"Fatal Error", fatalErrorMessage, nil, nil, nil);
NSRunAlertPanel(NSLocalizedString(@"Fatal Error",@""), fatalErrorMessage, nil, nil, nil);
fatalErrorMessage = nil; // user could cancel the terminate
[NSApp terminate:self];
return;
@ -234,19 +234,7 @@ NSString* fatalErrorMessage;
[[CelestiaFavorites sharedFavorites] setSynchronize:menuCallback];
[[CelestiaFavorites sharedFavorites] synchronize];
}
/*
-(void) setupRenderPanel
{
// [[renderPanelController window] setAlphaValue: 0.8f];
// [[renderPanelController window] setLevel: NSFloatingWindowLevel];
// [[glView window] addChildWindow: [renderPanelController window] ordered: NSWindowAbove];
[[renderPanelController window] setMovableByWindowBackground: YES];
[[renderPanelController window] setHidesOnDeactivate: YES];
[[renderPanelController window] setReleasedWhenClosed: NO];
[[renderPanelController window] setOneShot: NO];
// [renderPanelController finishSetup];
}
*/
-(void) startGLView
{
[[glView window] setAutodisplay:YES];
@ -271,7 +259,6 @@ NSString* fatalErrorMessage;
settings = [CelestiaSettings shared];
[settings setControl: self];
[settings scanForKeys: [renderPanelController window]];
// [self setupRenderPanel];
[settings validateItems];
// load settings
@ -378,7 +365,11 @@ NSString* fatalErrorMessage;
{
[self pauseFullScreen]; // allow dialog to show
if ( NSRunAlertPanel(@"Quit Celestia?",@"Are you sure you want to quit Celestia?",@"Quit",@"Cancel",nil) != NSAlertDefaultReturn )
if ( NSRunAlertPanel(NSLocalizedString(@"Quit Celestia?",@""),
NSLocalizedString(@"Are you sure you want to quit Celestia?",@""),
NSLocalizedString(@"Quit",@""),
NSLocalizedString(@"Cancel",@""),
nil) != NSAlertDefaultReturn )
{
[self unpauseFullScreen];
return NO;
@ -570,7 +561,7 @@ NSString* fatalErrorMessage;
// so user can still quit the program
[[self window] orderOut: self];
ShowMenuBar();
[self fatalError: @"Unable to properly exit full screen mode. Celestia will now quit."];
[self fatalError: NSLocalizedString(@"Unable to properly exit full screen mode. Celestia will now quit.",@"")];
[self performSelector:@selector(fatalError:) withObject:nil afterDelay:0.1];
return;
}
@ -741,13 +732,13 @@ NSString* fatalErrorMessage;
- (IBAction) captureMovie: (id) sender
{
// Remove following line to enable movie capture...
NSRunAlertPanel(@"No Movie Capture",@"Movie capture is not available in this version of Celestia.",nil,nil,nil); return;
NSRunAlertPanel(NSLocalizedString(@"No Movie Capture",@""), NSLocalizedString(@"Movie capture is not available in this version of Celestia.",@""),nil,nil,nil); return;
NSSavePanel* panel = [NSSavePanel savePanel];
NSString* lastMovie = nil; // temporary; should be saved in defaults
[panel setRequiredFileType: @"mov"];
[panel setTitle: @"Capture Movie"];
[panel setTitle: NSLocalizedString(@"Capture Movie",@"")];
[ panel beginSheetForDirectory: [lastMovie stringByDeletingLastPathComponent]
file: [lastMovie lastPathComponent]
modalForWindow: [glView window]

View File

@ -103,7 +103,7 @@
FavoritesEntry* fav = new FavoritesEntry();
NSString *parentFolder = (folder == nil) ? @"" : [folder name];
if (name == nil || [name isEqualToString:@""])
name = @"untitled folder";
name = NSLocalizedString(@"untitled folder",@"");
fav->name = [name stdString];
fav->isFolder = true;
fav->parentFolder = [parentFolder stdString];

View File

@ -35,11 +35,12 @@
-(NSNumber*)vertexShaderEnabled;
-(void)setVertexShaderEnabled:(NSNumber*)enable;
-(BOOL)isVertexShaderSupported;
/*
-(NSNumber*)saturationMagnitude;
-(void)setSaturationMagnitude:(NSNumber*)mag;
-(NSNumber*)brightnessBias;
-(void)setBrightnessBias:(NSNumber*)bias;
*/
-(NSNumber*)resolution;
-(void)setResolution:(NSNumber*)res;
- (int) getOrbitmask;

View File

@ -172,7 +172,7 @@ numberWithInt:Renderer::ShowPlanets],@"Planets",[NSNumber numberWithInt:Renderer
{
return (BOOL)[self renderer]->vertexShaderSupported();
}
/*
-(NSNumber*)saturationMagnitude
{
return [NSNumber numberWithFloat:[self renderer]->getSaturationMagnitude()];
@ -192,7 +192,7 @@ numberWithInt:Renderer::ShowPlanets],@"Planets",[NSNumber numberWithInt:Renderer
{
[self renderer]->setBrightnessBias([bias floatValue]);
}
*/
-(NSNumber*)resolution
{
return [NSNumber numberWithUnsignedInt:[self renderer]->getResolution()];
@ -243,7 +243,7 @@ numberWithInt:Renderer::ShowPlanets],@"Planets",[NSNumber numberWithInt:Renderer
-(void)archive
{
[[NSUserDefaults standardUserDefaults] setObject:[NSDictionary dictionaryWithObjectsAndKeys:[self labelFlags],@"labelFlags",[self renderFlags],@"renderFlags",[self brightnessBias],@"brightnessBias",[self resolution],@"resolution",[self saturationMagnitude],@"saturationMagnitude",[self vertexShaderEnabled],@"vertexShaderEnabled",[self fragmentShaderEnabled],@"fragmentShaderEnabled",
[[NSUserDefaults standardUserDefaults] setObject:[NSDictionary dictionaryWithObjectsAndKeys:[self labelFlags],@"labelFlags",[self renderFlags],@"renderFlags",[self resolution],@"resolution",[self vertexShaderEnabled],@"vertexShaderEnabled",[self fragmentShaderEnabled],@"fragmentShaderEnabled",
[NSNumber numberWithInt: [self getOrbitmask]], @"orbitMask",
nil,nil] forKey:@"renderPreferences"];

View File

@ -37,19 +37,19 @@
// Time Settings
-(NSNumber *) time ;
-(void) setTime: (NSNumber *) value ;
-(double) time ;
-(void) setTime: (double) value ;
-(NSNumber *) timeScale ;
-(void) setTimeScale: (NSNumber *) value ;
-(double) timeScale ;
-(void) setTimeScale: (double) value ;
-(BOOL) synchTime;
-(void) setSynchTime: (BOOL) value ;
// Gaze Settings
-(NSNumber *) fieldOfView ;
-(void) setFieldOfView: (NSNumber *) value ;
-(float) fieldOfView ;
-(void) setFieldOfView: (float) value ;
// situation
@ -93,9 +93,6 @@
-(BOOL) showEclipseShadows ;
-(void) setShowEclipseShadows: (BOOL) value ;
-(BOOL) showStarsAsPoints ;
-(void) setShowStarsAsPoints: (BOOL) value ;
-(BOOL) showRingShadows ;
-(void) setShowRingShadows: (BOOL) value ;
@ -166,36 +163,28 @@
-(BOOL) showSpacecraftOrbits ;
-(void) setShowSpacecraftOrbits: (BOOL) value ;
-(NSNumber *) minimumOrbitSize ;
-(void) setMinimumOrbitSize: (NSNumber *) value ;
-(float) minimumOrbitSize ;
-(void) setMinimumOrbitSize: (float) value ;
// Location Visibility Settings
// Feature Settings
-(NSNumber *) minimumFeatureSize ;
-(void) setMinimumFeatureSize: (NSNumber *) value ;
-(float) minimumFeatureSize ;
-(void) setMinimumFeatureSize: (float) value ;
// Lighting Settings
-(NSNumber *) ambientLightLevel ;
-(void) setAmbientLightLevel: (NSNumber *) value ;
-(float) ambientLightLevel ;
-(void) setAmbientLightLevel: (float) value ;
// Star Settings
-(NSNumber *) distanceLimit ;
-(void) setDistanceLimit: (NSNumber *) value ;
-(float) distanceLimit ;
-(void) setDistanceLimit: (float) value ;
-(NSNumber *) faintestVisible ;
-(void) setFaintestVisible: (NSNumber *) value ;
// Brightness Settings
-(NSNumber *) saturationMagnitude ;
-(void) setSaturationMagnitude: (NSNumber *) value ;
-(NSNumber *) brightnessBias ;
-(void) setBrightnessBias: (NSNumber *) value ;
-(float) faintestVisible ;
-(void) setFaintestVisible: (float) value ;
-(int) starStyle ;
-(void) setStarStyle: (int) value ;

View File

@ -106,7 +106,7 @@ static NSMutableDictionary* tagMap;
TAGDEF(409,@"showSmoothLines")
TAGDEF(410,@"showEclipseShadows")
TAGDEF(412,@"showRingShadows")
TAGDEF(411,@"showStarsAsPoints")
// TAGDEF(411,@"showStarsAsPoints")
TAGDEF(414,@"showAutoMag")
TAGDEF(406,@"showCelestialSphere")
// object labels
@ -121,6 +121,7 @@ static NSMutableDictionary* tagMap;
TAGDEF(508,@"showCometLabels")
TAGDEF(509,@"showNebulaLabels")
TAGDEF(510,@"showOpenClusterLabels")
TAGDEF(511,@"showLatinConstellationLabels")
// popups
TAGDEF(600,@"altSurface")
TAGDEF(610,@"hudDetail")
@ -168,7 +169,7 @@ static NSMutableDictionary* tagMap;
// stars
// TAGDEF(999,@"distanceLimit")
TAGDEF(900,@"ambientLightLevel")
TAGDEF(901,@"brightnessBias")
// TAGDEF(901,@"brightnessBias")
TAGDEF(902,@"faintestVisible")
TAGDEF(904,@"galaxyBrightness")
// TAGDEF(999,@"saturationMagnitude")
@ -258,7 +259,11 @@ static NSMutableDictionary* tagMap;
while ( nil != (key = [keys nextObject]) )
{
// NSLog([NSString stringWithFormat: @"loading default dict entry %@ %@", key, [defaultsDictionary objectForKey: key] ]);
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
[self setValue: [defaultsDictionary objectForKey: key] forKey: key];
#else
[self takeValue: [defaultsDictionary objectForKey: key] forKey: key];
#endif
// NSLog([NSString stringWithFormat: @"loaded default dict entry %@ %@", key, [self valueForKey: key] ]);
}
// NSLog(@"loaded user defaults");
@ -299,47 +304,86 @@ static NSMutableDictionary* tagMap;
-(id) valueForTag: (int) tag {
return [self valueForKey: [tagDict objectForKey: [NSNumber numberWithInt: tag] ] ];
};
}
-(void) takeValue: (id) value forTag: (int) tag
{
// NSLog([NSString stringWithFormat: @"take value for tag %@ %d", value, tag]);
id key = [tagDict objectForKey: [NSNumber numberWithInt: tag] ];
// NSLog([NSString stringWithFormat: @"take value for key %@ %@", value, key]);
if (key!= nil) [self takeValue: value forKey: key ];
};
if (key!= nil)
{
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
[self setValue: value forKey: key ];
#else
[self takeValue: value forKey: key ];
#endif
}
}
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
- (id)valueForUndefinedKey: (NSString *) key
{
#ifdef DEBUG
if ( key ) NSLog(@"unbound value for %@", key);
#endif
return nil;
}
- (void)setValue: (id) value forUndefinedKey: (NSString *) key
{
#ifdef DEBUG
NSLog(@"unbound key set for %@", key);
#endif
}
- (void)setNilValueForKey: (NSString *) key
{
#ifdef DEBUG
NSLog(@"nil value for %@", key);
#endif
}
#else
-(id)handleQueryWithUnboundKey: (NSString*) key
{
if ( key != NULL) NSLog([NSString stringWithFormat: @"unbound key query for %@",key]);
#ifdef DEBUG
if ( key ) NSLog(@"unbound key query for %@", key);
#endif
return nil;
};
}
-(void)handleTakeValue: (id) value forUnboundKey: (NSString*) key
{
NSLog([NSString stringWithFormat: @"unbound key set for %@",key]);
};
#ifdef DEBUG
NSLog(@"unbound key set for %@", key);
#endif
}
-(void)unableToSetNilForKey: (NSString*) key
{
NSLog([NSString stringWithFormat: @"nl key for %@",key]);
};
#ifdef DEBUG
NSLog(@"nil key for %@", key);
#endif
}
#endif
// Time Settings
-(NSNumber *) time { return [NSNumber numberWithDouble: appCore->getSimulation()->getTime()]; }
-(void) setTime: (NSNumber *) value { appCore->getSimulation()->setTime(value ? [value doubleValue] : 0.0); }
-(double) time { return appCore->getSimulation()->getTime(); }
-(void) setTime: (double) value { appCore->getSimulation()->setTime(value); }
-(NSNumber *) timeScale { return [NSNumber numberWithDouble: appCore->getSimulation()->getTimeScale()]; }
-(void) setTimeScale: (NSNumber *) value { appCore->getSimulation()->setTimeScale(value ? [value doubleValue] : 0.0); }
-(double) timeScale { return appCore->getSimulation()->getTimeScale(); }
-(void) setTimeScale: (double) value { appCore->getSimulation()->setTimeScale(value); }
-(BOOL) synchTime { return appCore->getSimulation()->getSyncTime(); };
-(void) setSynchTime: (BOOL) value { appCore->getSimulation()->setSyncTime(value); };
-(BOOL) synchTime { return appCore->getSimulation()->getSyncTime(); }
-(void) setSynchTime: (BOOL) value { appCore->getSimulation()->setSyncTime(value); }
// Gaze Settings
-(NSNumber *) fieldOfView { return [NSNumber numberWithFloat: appCore->getSimulation()->getObserver().getFOV()]; }
-(void) setFieldOfView: (NSNumber *) value { appCore->getSimulation()->getObserver().setFOV(value ? [value floatValue] : 0.0f); }
-(float) fieldOfView { return appCore->getSimulation()->getObserver().getFOV(); }
-(void) setFieldOfView: (float) value { appCore->getSimulation()->getObserver().setFOV(value); }
// Observer Settings
@ -356,7 +400,7 @@ static NSMutableDictionary* tagMap;
// NSLog([NSString stringWithFormat: @"setValue %d forBit: %d inSet: %d = %d",value,bit,set,result]);
// NSLog([NSString stringWithFormat: @"bit was: %d bit is: %d ",(set&bit),(result&bit)]);
return result;
};
}
// Visibility Settings
@ -377,7 +421,6 @@ RENDERMETHODS(PartialTrajectories)
RENDERMETHODS(SmoothLines)
RENDERMETHODS(EclipseShadows)
RENDERMETHODS(RingShadows)
RENDERMETHODS(StarsAsPoints)
RENDERMETHODS(AutoMag)
RENDERMETHODS(CelestialSphere)
RENDERMETHODS(Nebulae)
@ -399,6 +442,13 @@ LABELMETHODS(Comet)
LABELMETHODS(Nebula)
LABELMETHODS(OpenCluster)
-(BOOL) showLatinConstellationLabels {
return (appCore->getRenderer()->getLabelMode() & Renderer::I18nConstellationLabels) == 0;
}
-(void) setShowLatinConstellationLabels : (BOOL) value {
appCore->getRenderer()->setLabelMode( [self setValue: (!value) forBit: Renderer::I18nConstellationLabels inSet: appCore->getRenderer()->getLabelMode()] );
}
// Orbit Settings
#define ORBITMETHODS(flag) -(BOOL) show##flag##Orbits { return (appCore->getRenderer()->getOrbitMask()&Body::flag) != 0; } -(void) setShow##flag##Orbits: (BOOL) value { appCore->getRenderer()->setOrbitMask([self setValue: value forBit: Body::flag inSet: appCore->getRenderer()->getOrbitMask()]); }
@ -410,8 +460,8 @@ ORBITMETHODS(Spacecraft)
ORBITMETHODS(Comet)
-(NSNumber *) minimumOrbitSize { return [NSNumber numberWithFloat: appCore->getRenderer()->getMinimumOrbitSize()]; }
-(void) setMinimumOrbitSize: (NSNumber *) value { appCore->getRenderer()->setMinimumOrbitSize(value ? [value floatValue] : 0.0f); }
-(float) minimumOrbitSize { return appCore->getRenderer()->getMinimumOrbitSize(); }
-(void) setMinimumOrbitSize: (float) value { appCore->getRenderer()->setMinimumOrbitSize(value); }
// Feature Settings
@ -447,78 +497,75 @@ FEATUREMETHODS(Fluctus)
FEATUREMETHODS(Farrum)
FEATUREMETHODS(Other)
-(NSNumber *) minimumFeatureSize { return [NSNumber numberWithFloat: appCore->getRenderer()->getMinimumFeatureSize()]; }
-(void) setMinimumFeatureSize: (NSNumber *) value { appCore->getRenderer()->setMinimumFeatureSize(value ? [value floatValue] : 0.0f); }
-(float) minimumFeatureSize { return appCore->getRenderer()->getMinimumFeatureSize(); }
-(void) setMinimumFeatureSize: (float) value { appCore->getRenderer()->setMinimumFeatureSize(value); }
// Lighting Settings
-(NSNumber *) ambientLightLevel { return [NSNumber numberWithFloat: appCore->getRenderer()->getAmbientLightLevel()]; }
-(void) setAmbientLightLevel: (NSNumber *) value { appCore->getRenderer()->setAmbientLightLevel(value ? [value floatValue] : 0.0f); }
-(float) ambientLightLevel { return appCore->getRenderer()->getAmbientLightLevel(); }
-(void) setAmbientLightLevel: (float) value { appCore->getRenderer()->setAmbientLightLevel(value); }
-(NSNumber *) galaxyBrightness { return [NSNumber numberWithFloat: Galaxy::getLightGain()]; }
-(void) setGalaxyBrightness: (NSNumber *) value { Galaxy::setLightGain(value ? [value floatValue] : 0.0f); }
-(float) galaxyBrightness { return Galaxy::getLightGain(); }
-(void) setGalaxyBrightness: (float) value { Galaxy::setLightGain(value); }
// Star Settings
-(NSNumber *) distanceLimit { return [NSNumber numberWithFloat: appCore->getRenderer()->getDistanceLimit()]; }
-(void) setDistanceLimit: (NSNumber *) value { appCore->getRenderer()->setDistanceLimit(value ? [value floatValue] : 0.0f); }
-(float) distanceLimit { return appCore->getRenderer()->getDistanceLimit(); }
-(void) setDistanceLimit: (float) value { appCore->getRenderer()->setDistanceLimit(value); }
-(NSNumber *) faintestVisible
-(float) faintestVisible
{
// return appCore->getSimulation()->getFaintestVisible();
if ((appCore->getRenderer()->getRenderFlags() & Renderer::ShowAutoMag) == 0)
{
return [NSNumber numberWithFloat: appCore->getSimulation()->getFaintestVisible()];
return appCore->getSimulation()->getFaintestVisible();
}
else
{
return [NSNumber numberWithFloat: appCore->getRenderer()->getFaintestAM45deg()];
return appCore->getRenderer()->getFaintestAM45deg();
}
}
-(void) setFaintestVisible: (NSNumber *) value
-(void) setFaintestVisible: (float) value
{
float theValue = value ? [value floatValue] : 0.0f;
if ((appCore->getRenderer()->getRenderFlags() & Renderer::ShowAutoMag) == 0)
{
appCore->setFaintest(theValue);
appCore->setFaintest(value);
}
else
{
appCore->getRenderer()->setFaintestAM45deg(theValue);
appCore->getRenderer()->setFaintestAM45deg(value);
appCore->setFaintestAutoMag();
}
}
// Brightness Settings
-(NSNumber *) saturationMagnitude { return [NSNumber numberWithFloat: appCore->getRenderer()->getSaturationMagnitude()]; }
-(void) setSaturationMagnitude: (NSNumber *) value { appCore->getRenderer()->setSaturationMagnitude(value ? [value floatValue] : 0.0f); }
-(NSNumber *) brightnessBias { return [NSNumber numberWithFloat: appCore->getRenderer()->getBrightnessBias()]; }
-(void) setBrightnessBias: (NSNumber *) value { appCore->getRenderer()->setBrightnessBias(value ? [value floatValue] : 0.0f); }
-(int) starStyle { return appCore->getRenderer()->getStarStyle(); } ;
-(void) setStarStyle: (int) value { appCore->getRenderer()->setStarStyle((Renderer::StarStyle)value); };
-(int) starStyle { return appCore->getRenderer()->getStarStyle(); }
-(void) setStarStyle: (int) value { appCore->getRenderer()->setStarStyle((Renderer::StarStyle)value); }
// Texture Settings
-(int) resolution { return appCore->getRenderer()->getResolution(); } ;
-(void) setResolution: (int) value { appCore->getRenderer()->setResolution(value); };
-(int) resolution { return appCore->getRenderer()->getResolution(); }
-(void) setResolution: (int) value { appCore->getRenderer()->setResolution(value); }
// Overlay Settings
-(int) hudDetail { return appCore->getHudDetail(); } ;
-(void) setHudDetail: (int) value { appCore->setHudDetail(value); };
-(int) hudDetail { return appCore->getHudDetail(); }
-(void) setHudDetail: (int) value { appCore->setHudDetail(value); }
// Other Settings
-(int) renderPath { return appCore->getRenderer()->getGLContext()->getRenderPath(); } ;
-(void) setRenderPath: (int) value { appCore->getRenderer()->getGLContext()->setRenderPath((GLContext::GLRenderPath)value); };
-(int) renderPath { return appCore->getRenderer()->getGLContext()->getRenderPath(); }
-(void) setRenderPath: (int) value { appCore->getRenderer()->getGLContext()->setRenderPath((GLContext::GLRenderPath)value); }
-(int) fullScreenMode { return [[control valueForKey: @"isFullScreen"] intValue]; }
-(void) setFullScreenMode: (int) value { [control takeValue: [NSNumber numberWithBool: (value != 0)] forKey: @"isFullScreen"]; }
-(void) setFullScreenMode: (int) value
{
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
[control setValue: [NSNumber numberWithBool: (value != 0)] forKey: @"isFullScreen"];
#else
[control takeValue: [NSNumber numberWithBool: (value != 0)] forKey: @"isFullScreen"];
#endif
}
// Alt Surface Setting
@ -602,14 +649,19 @@ FEATUREMETHODS(Other)
}
}
- (NSMenuItem *) getSurfaceMenuItem: (NSMenu*) contextMenu
{
NSMenuItem *surfaceItem = [contextMenu itemWithTitle: NSLocalizedString(@"Show Alternate Surface",@"")];
if (surfaceItem == nil)
surfaceItem = [contextMenu itemWithTitle: @"Show Alternate Surface"];
return surfaceItem;
}
- (void) disableSurfaceMenu: (NSMenu*) contextMenu
{
NSMenuItem* surfaceItem = [ contextMenu itemWithTitle: @"Show Alternate Surface"];
// [ surfaceItem setSubmenu: NULL ];
// [ surfaceItem setAction: NULL ];
// [ contextMenu setAutoenablesItems: NO ];
[ surfaceItem setEnabled: NO ];
NSLog(@"disabling surface menu\n");
NSMenuItem *surfaceItem = [self getSurfaceMenuItem: contextMenu];
[ surfaceItem setEnabled: NO ];
// NSLog(@"disabling surface menu\n");
}
- (void) addSurfaceMenu: (NSMenu*) contextMenu
@ -622,8 +674,9 @@ FEATUREMETHODS(Other)
}
else
{
NSMenuItem* firstItem = [ contextMenu itemAtIndex: 0];
NSMenuItem* surfaceItem = [ contextMenu itemWithTitle: @"Show Alternate Surface"];
NSMenuItem* firstItem = [contextMenu itemAtIndex: 0];
NSMenuItem *surfaceItem = [self getSurfaceMenuItem: contextMenu];
[surfaceItem setTitle: NSLocalizedString(@"Show Alternate Surface",@"")];
NSMenu* surfaceMenu = [[NSMenu alloc ] initWithTitle: @"altsurf" ];
vector<string>* surfaces = sel.body()->getAlternateSurfaceNames();
if ( surfaces->size() == 0 )
@ -635,7 +688,7 @@ FEATUREMETHODS(Other)
[ contextMenu setAutoenablesItems: YES ];
[ surfaceMenu setAutoenablesItems: YES ];
NSMenuItem* newItem = [ [NSMenuItem alloc] init ];
[newItem setTitle: @"default" ];
[newItem setTitle: NSLocalizedString(@"default",@"") ];
[newItem setTag: 600 ];
[newItem setTarget: [firstItem target] ];
[newItem setAction: [firstItem action] ];
@ -691,7 +744,7 @@ FEATUREMETHODS(Other)
id value;
if ( tag <= 128 ) tag = [self tagForKey: tag ]; // handle menu item for setting; obsolete?
if ( tag <= 128 ) { appCore->charEntered(tag); return; };
if ( tag <= 128 ) { appCore->charEntered(tag); return; }
switch ( tag/100)
{
case 4: case 5: case 7: case 8: // 400, 500, 700, 800
@ -817,7 +870,7 @@ FEATUREMETHODS(Other)
case 25: tag = 414; break; // AutoMag
case 20: tag = 415; break; // CometTails
case 11: tag = 416; break; // Markers
case 19: tag = 411; break; // StarsAsPoints
// case 19: tag = 411; break; // StarsAsPoints
case 24: tag = 409; break; // SmoothLines
default : tag = key; break; // Special or not a setting
}
@ -956,7 +1009,7 @@ FEATUREMETHODS(Other)
// NSLog(@"subviews items = %@\n", [item subviews]);
item = [ [item subviews] objectEnumerator ];
// NSLog(@"view items = %@\n", item);
};
}
if ( [item isKindOfClass: [NSEnumerator class] ] )
{

View File

@ -141,7 +141,7 @@ FrameOfReference getFrame() const;
-(CelestiaSelection*)findObjectFromPath:(NSString*)s
{
return [[[CelestiaSelection alloc] initWithSelection:[self simulation]->findObjectFromPath([s stdString])] autorelease];
return [[[CelestiaSelection alloc] initWithSelection:[self simulation]->findObjectFromPath([s stdString], true)] autorelease];
}
-(void)gotoSelection:(NSNumber*)gotoTime up:(CelestiaVector*)up coordinateSystem:(NSString*)csysName

View File

@ -1,8 +1,8 @@
{\rtf1\mac\ansicpg10000\cocoartf102
{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf330
\readonlydoc1{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\vieww8780\viewh7500\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\sl320\ql\qnatural
\pard\tx680\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li120\sl320\ql\qnatural
\f0\b\fs24 \cf0 Web Site:
\f1\b0 \

Binary file not shown.

View File

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
<string>2 42 701 386 0 0 1280 832 </string>
<string>3 42 701 386 0 0 1280 832 </string>
<key>IBEditorPositions</key>
<dict>
<key>242</key>
@ -21,126 +21,82 @@
<string>443.0</string>
<key>IBGroupedObjects</key>
<dict>
<key>0</key>
<key>10</key>
<array>
<string>1449</string>
<string>1450</string>
<string>1451</string>
<string>1452</string>
<string>1673</string>
<string>1672</string>
<string>1662</string>
<string>1667</string>
</array>
<key>1</key>
<key>11</key>
<array>
<string>1480</string>
<string>1479</string>
<string>1477</string>
<string>1472</string>
<string>1478</string>
<string>1481</string>
<string>1694</string>
<string>1688</string>
<string>1691</string>
<string>1690</string>
<string>1692</string>
<string>1693</string>
<string>1689</string>
<string>1695</string>
</array>
<key>3</key>
<key>12</key>
<array>
<string>1491</string>
<string>1490</string>
<string>1487</string>
<string>1489</string>
<string>1488</string>
<string>1486</string>
<string>1484</string>
<string>1685</string>
<string>1678</string>
<string>1684</string>
<string>1679</string>
<string>1677</string>
<string>1676</string>
</array>
<key>4</key>
<key>13</key>
<array>
<string>1445</string>
<string>1446</string>
<string>1465</string>
<string>1460</string>
<string>1730</string>
<string>1727</string>
<string>1726</string>
<string>1713</string>
<string>1729</string>
<string>1718</string>
<string>1723</string>
<string>1724</string>
<string>1715</string>
<string>1707</string>
<string>1712</string>
<string>1705</string>
<string>1719</string>
<string>1709</string>
<string>1731</string>
<string>1703</string>
<string>1722</string>
<string>1704</string>
<string>1725</string>
<string>1711</string>
<string>1717</string>
<string>1708</string>
<string>1702</string>
<string>1721</string>
<string>1714</string>
<string>1716</string>
<string>1710</string>
<string>1706</string>
<string>1720</string>
<string>1728</string>
</array>
<key>6</key>
<key>14</key>
<array>
<string>1494</string>
<string>1528</string>
<string>1495</string>
<string>1734</string>
<string>1733</string>
<string>1732</string>
</array>
<key>7</key>
<key>9</key>
<array>
<string>1501</string>
<string>1514</string>
<string>1506</string>
<string>1499</string>
<string>1516</string>
<string>1524</string>
<string>1526</string>
<string>1522</string>
<string>1498</string>
<string>1519</string>
<string>1513</string>
<string>1520</string>
<string>1512</string>
<string>1527</string>
<string>1518</string>
<string>1505</string>
<string>1515</string>
<string>1508</string>
<string>1523</string>
<string>1500</string>
<string>1511</string>
<string>1503</string>
<string>1521</string>
<string>1502</string>
<string>1509</string>
<string>1517</string>
<string>1504</string>
<string>1507</string>
<string>1510</string>
<string>1525</string>
</array>
<key>8</key>
<array>
<string>1436</string>
<string>1437</string>
<string>1438</string>
<string>1440</string>
<string>1415</string>
<string>1413</string>
<string>1432</string>
<string>1434</string>
<string>1439</string>
<string>1441</string>
<string>1411</string>
<string>1414</string>
<string>1430</string>
<string>1409</string>
<string>1428</string>
<string>1431</string>
<string>1426</string>
<string>1412</string>
<string>1427</string>
<string>1404</string>
<string>1419</string>
<string>1421</string>
<string>1420</string>
<string>1408</string>
<string>1429</string>
<string>1433</string>
<string>1405</string>
<string>1417</string>
<string>1418</string>
<string>1403</string>
<string>1425</string>
<string>1435</string>
<string>1410</string>
<string>1401</string>
<string>1402</string>
<string>1422</string>
<string>1406</string>
<string>1423</string>
<string>1407</string>
<string>1424</string>
<string>1416</string>
<string>1442</string>
<string>1660</string>
<string>1661</string>
<string>1659</string>
<string>1651</string>
</array>
</dict>
<key>IBLastGroupID</key>
<string>9</string>
<string>15</string>
<key>IBLockedObjects</key>
<array>
<integer>352</integer>
@ -151,6 +107,6 @@
<integer>1566</integer>
</array>
<key>IBSystem Version</key>
<string>8G32</string>
<string>8I127</string>
</dict>
</plist>

Binary file not shown.

View File

@ -114,7 +114,7 @@
CelestiaFavorites* favs = [CelestiaFavorites sharedFavorites];
MyTree* node = nil;
//NSLog(@"[FavoritesDrawerController addNewFavorite:%@]",sender);
node = [favs addNewFolder:@"untitled folder"];
node = [favs addNewFolder:NSLocalizedString(@"untitled folder",@"")];
[[CelestiaFavorites sharedFavorites] synchronize];
[self outlineView:outlineView editItem:node];
}

View File

@ -56,13 +56,17 @@
//NSLog(@"[objectField stringValue] = '%@'",[objectField stringValue]);
if (![[objectField stringValue] length])
{
NSRunAlertPanel(@"No Object Name Entered", @"Please enter an object name.",nil,nil,nil);
NSRunAlertPanel(NSLocalizedString(@"No Object Name Entered",@""),
NSLocalizedString(@"Please enter an object name.",@""),
nil,nil,nil);
return;
}
csel = [sim findObjectFromPath:[objectField stringValue]];
if ((csel == nil) || [csel isEmpty])
{
NSRunAlertPanel(@"Object Not Found",@"Please check that the object name is correct.",nil,nil,nil);
NSRunAlertPanel(NSLocalizedString(@"Object Not Found",@""),
NSLocalizedString(@"Please check that the object name is correct.",@""),
nil,nil,nil);
return;
}
[sim setSelection:csel];

View File

@ -50,7 +50,7 @@
</dict>
</array>
<key>CFBundleShortVersionString</key>
<string>1.4.1</string>
<string>1.4.2</string>
<key>CFBundleVersion</key>
<string>0</string>
<key>NSMainNibFile</key>

View File

@ -0,0 +1,600 @@
/*
* POConverter.m
*
* Created by Da Woon Jung on Wed March 09 2005.
* Copyright (c) 2005 dwj. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import <Foundation/Foundation.h>
#define POCONV_DEFAULT_STRINGS_FILENAME @"po.strings"
#define POCONV_DEBUG_LEVEL 1
BOOL gIgnoreFuzzy; /*! -n cmdline arg, set to ignore fuzzy entries */
int gDebugLevel; /*! -v cmdline arg, 0 = no console messages */
NSAutoreleasePool *gPool;
/*! Returns NO if line is a comment. range and result are modified. */
static BOOL readLine(NSString *string, NSRange *range, NSString **outString)
{
// Using -lineRangeForRange: because it reliably detects all sorts of line endings
NSRange lineRange = [string lineRangeForRange: *range];
NSString *lineString = (NSNotFound != lineRange.location && lineRange.length > 0) ? [string substringWithRange: lineRange] : nil;
range->location = NSMaxRange(lineRange);
range->length = 0;
*outString = lineString;
// Detect comment lines
return lineString ? ![lineString hasPrefix: @"#"] : YES;
}
/*! Scans data (from a po file) in ascii mode, looking for the charset specification */
static NSStringEncoding getCharset(NSData *data)
{
NSString *string = [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease];
if (nil == string)
return 0;
CFStringEncoding enc = kCFStringEncodingUTF8;
NSString *line = nil;
NSString *encName = nil;
NSRange encRange;
NSRange range = NSMakeRange(0, 0);
BOOL notComment = YES;
while (YES)
{
notComment = readLine(string, &range, &line);
if (nil == line)
break;
if (notComment)
{
encRange = [line rangeOfString: @"Content-Type:"];
if (NSNotFound != encRange.location && encRange.length > 0)
{
encRange = [line rangeOfString: @"charset="];
if (NSNotFound != encRange.location && encRange.length > 0)
{
encName = [line substringWithRange: NSMakeRange(NSMaxRange(encRange), [line length] - NSMaxRange(encRange))];
if (encName)
{
encRange = [encName rangeOfString:@"\\n\"" options:NSBackwardsSearch];
if (NSNotFound != encRange.location && encRange.location > 0 && encRange.length > 0)
encName = [encName substringToIndex: encRange.location];
// Some special cases
if (NSOrderedSame == [encName caseInsensitiveCompare:@"gbk"])
enc = kCFStringEncodingGBK_95;
else if (NSOrderedSame == [encName caseInsensitiveCompare:@"ISO_8859-15"])
enc = kCFStringEncodingISOLatin9;
else
enc = CFStringConvertIANACharSetNameToEncoding((CFStringRef)encName);
}
if (gDebugLevel)
CFShow(line);
break;
}
}
}
}
return (kCFStringEncodingInvalidId == enc) ? NSUTF8StringEncoding : CFStringConvertEncodingToNSStringEncoding(enc);
}
static NSString *extractStringFromLine(NSString *line)
{
NSMutableString *result = [NSMutableString stringWithCapacity: [line length]];
NSString *aString;
NSScanner *scanner = [NSScanner scannerWithString: line];
NSRange escRange;
NSMutableString *escString = [NSMutableString string];
NSMutableCharacterSet *newLineSet = [[[scanner charactersToBeSkipped] mutableCopy] autorelease];
[newLineSet formIntersectionWithCharacterSet:
[[NSCharacterSet whitespaceCharacterSet] invertedSet]];
while (![scanner isAtEnd])
{
aString = nil;
[scanner scanUpToString:@"\"" intoString: nil];
if ([scanner scanString:@"\"" intoString: nil])
{
while (YES)
{
// Make sure we don't skip leading spaces (but skip newlines)
NSCharacterSet *origSkip = [scanner charactersToBeSkipped];
[scanner setCharactersToBeSkipped: newLineSet];
[scanner scanUpToString:@"\"" intoString: &aString];
[scanner setCharactersToBeSkipped: origSkip];
if (aString)
{
[escString appendString: aString];
escRange = [aString rangeOfString:@"\\" options:(NSBackwardsSearch|NSAnchoredSearch)];
if (NSNotFound != escRange.location && escRange.length > 0)
{
[scanner scanString:@"\"" intoString: &aString];
[escString appendString: aString];
aString = nil;
continue;
}
}
aString = nil;
break;
}
if ([scanner scanString:@"\"" intoString: nil])
{
if (escString)
[result appendString: escString];
}
}
else
break;
}
return result;
}
/*! Get all parts of a quoted string is possibly broken across multiple lines, and returns the concatenated result. */
static NSString *getQuotedString(NSString *fileString, NSRange *range, NSString *line)
{
NSMutableString *result = [NSMutableString stringWithString:extractStringFromLine(line)];
NSString *aString;
NSRange origRange;
// Loop until no more string parts found
BOOL notComment = YES;
while (YES)
{
origRange = *range;
notComment = readLine(fileString, range, &line);
if (nil == line || ([line length] == 0))
break;
if (!notComment || [line hasPrefix: @"msgid"] || [line hasPrefix: @"msgstr"])
{
// Back up the cursor
*range = origRange;
break;
}
aString = extractStringFromLine(line);
[result appendString: aString];
}
return ([result length] > 0) ? result : nil;
}
/*! Pass any comment line. If the line is a flag line (#, ...) and contains the "fuzzy" flag, returns YES */
static BOOL isFuzzy(NSString *line)
{
NSRange flagRange = [line rangeOfString:@"#," options:NSAnchoredSearch];
if (NSNotFound != flagRange.location && flagRange.length > 0)
{
// Parse comma-delimited list of flags
NSString *aString = [line substringWithRange: NSMakeRange(NSMaxRange(flagRange), [line length] - NSMaxRange(flagRange))];
if (aString)
{
NSArray *flags;
NSEnumerator *flagEnum;
NSScanner *scanner;
flags = [aString componentsSeparatedByString: @","];
flagEnum = [flags objectEnumerator];
while ((aString = [flagEnum nextObject]))
{
scanner = [NSScanner scannerWithString: aString];
if ([scanner scanString:@"fuzzy" intoString: nil])
{
// Check if fuzzy is the entire word
if ([scanner isAtEnd])
return YES;
}
}
}
}
return NO;
}
#ifdef TARGET_CELESTIA
/*! Celestia: Returns YES if the line contains source file entries */
static BOOL isSource(NSString *line, BOOL *containsNonKde)
{
BOOL isSource = NO;
NSRange range = [line rangeOfString:@"#:" options:NSAnchoredSearch];
if (NSNotFound != range.location && range.length > 0)
{
BOOL nonKdeFound = NO;
BOOL kdeFound = NO;
isSource = YES;
NSString *aString = [line substringWithRange: NSMakeRange(NSMaxRange(range), [line length] - NSMaxRange(range))];
if (aString)
{
NSArray *sources;
NSEnumerator *sourceEnum;
sources = [aString componentsSeparatedByString: @" "];
sourceEnum = [sources objectEnumerator];
while ((aString = [sourceEnum nextObject]))
{
if (0 == [aString length])
continue;
range = [aString rangeOfString: @"kde"];
if (NSNotFound == range.location)
{
nonKdeFound = YES;
break;
}
else if (range.length > 0)
kdeFound = YES;
}
}
if (nonKdeFound || !kdeFound)
*containsNonKde = YES;
}
return isSource;
}
#endif TARGET_CELESTIA
/*! The method that does all the work of reading, converting, and writing. Returns the number of lines successfully converted. */
static long convertData(NSData *data, NSStringEncoding encoding, NSFileHandle *ofh)
{
long numConverted = 0;
NSString *fileString = [[[NSString alloc] initWithData:data encoding:encoding] autorelease];
if (nil == fileString)
return 0;
BOOL notComment = YES;
NSString *line;
NSString **aString;
NSRange range = NSMakeRange(0, 0);
long fileStringLength = [fileString length];
BOOL acceptEntry = YES;
#ifdef TARGET_CELESTIA
BOOL parsingSources = NO;
BOOL containsNonKde = NO;
#endif
NSString *msgid = nil;
NSString *msgstr = nil;
while (range.location < fileStringLength)
{
notComment = readLine(fileString, &range, &line);
if (nil == line)
break;
if (notComment)
{
aString = nil;
if ([line hasPrefix: @"msgid"])
aString = &msgid;
else if ([line hasPrefix: @"msgstr"])
{
if (nil == msgid)
{
if (gDebugLevel>2)
CFShow(@"Ignoring msgstr without msgid (probably the po header)");
continue;
}
aString = &msgstr;
}
else
{
// Blank line cancels fuzzy flag
acceptEntry = YES;
}
#ifdef TARGET_CELESTIA
if (parsingSources)
acceptEntry = containsNonKde;
parsingSources = NO;
containsNonKde = NO;
#endif
if (aString)
{
*aString = getQuotedString(fileString, &range, line);
if (*aString == msgstr && msgid)
{
if (nil == *aString)
{
if (gDebugLevel>1)
CFShow((CFStringRef)[NSString stringWithFormat:@"Ignoring msgid \"%@\" without msgstr", msgid]);
continue;
}
if (acceptEntry)
{
NSString *ofhString = [NSString stringWithFormat:@"\"%@\" = \"%@\";\n", msgid, msgstr];
if (ofhString)
{
NSData *ofhData;
if (numConverted > 0)
{
size_t ofhBufSize = [ofhString length]*sizeof(unichar);
unichar *ofhBuf = malloc(ofhBufSize);
[ofhString getCharacters: ofhBuf]; // gets utf-16 chars
ofhData = [NSData dataWithBytesNoCopy:ofhBuf length:ofhBufSize];
}
else
{
// Before overwriting an existing file, have to zero it
if (ofh)
[ofh truncateFileAtOffset: 0];
// Output bom for first entry
ofhData = [ofhString dataUsingEncoding:NSUnicodeStringEncoding];
}
[ofh writeData:ofhData];
}
else if (gDebugLevel)
CFShow(@"***Couldn't write data***");
++numConverted;
if (gDebugLevel>2 && *aString)
CFShow(*aString);
}
else if (gDebugLevel)
CFShow((CFStringRef)[NSString stringWithFormat:@"Ignoring entry \"%@\"", *aString]);
msgid = nil;
msgstr = nil;
acceptEntry = YES;
}
}
}
else
{
#ifdef TARGET_CELESTIA
// Celestia: filter out kde entries
// This looks complicated, but is needed because
// source entries (#:) may span multiple lines
if (!parsingSources)
{
containsNonKde = NO;
parsingSources = isSource(line, &containsNonKde);
}
else
{
BOOL tempKdeCheck = NO;
if (isSource(line, &tempKdeCheck))
containsNonKde = containsNonKde || tempKdeCheck;
}
#endif
// Filter out fuzzy entries if specified by the caller
if (gIgnoreFuzzy && isFuzzy(line))
acceptEntry = NO;
}
}
return numConverted;
}
static void usage()
{
printf("Poconverter converts a GNU gettext po file to Mac OS-native\n"
"UTF-16 Localized.strings format.\n"
"\n"
"Usage: Poconverter [-nv] file.po [destination filename]\n"
"\n"
" -n Ignore entries tagged with fuzzy flag\n"
" -s Silent mode (existing file overwritten without warning)\n"
" -v Verbose output on stderr\n"
"\n");
}
static void ctrl_c_handler(int sig)
{
fprintf(stderr, "\nGot Ctrl-C, cleaning up...\n");
[gPool release];
exit(1);
}
int main(int argc, const char **argv)
{
NSAutoreleasePool *gPool = [[NSAutoreleasePool alloc] init];
// Catch ctrl-c so we can release the autorelease pool
signal(SIGINT, ctrl_c_handler);
gIgnoreFuzzy = NO;
gDebugLevel = 0;
BOOL isSilent = NO;
BOOL isErr = NO;
NSProcessInfo *theProcess = [NSProcessInfo processInfo];
NSArray *args = [theProcess arguments];
NSString *arg;
NSEnumerator *argEnum = [args objectEnumerator];
[argEnum nextObject]; // advance past args[0] (the program full path)
NSString *poFilename = nil;
NSString *resultFilename = nil;
NSFileHandle *ofh;
do
{
if (argc < 2 || argc > 5)
{
usage(); break;
}
// Parse options
long j;
while ((arg = [argEnum nextObject]) && [arg hasPrefix: @"-"])
{
if ([arg length] > 1)
{
for (j = 1; j < [arg length]; ++j)
{
switch ([arg characterAtIndex: j])
{
case 'n':
gIgnoreFuzzy = YES; break;
case 's':
isSilent = YES; break;
case 'v':
gDebugLevel = POCONV_DEBUG_LEVEL; break;
default:
isErr = YES;
}
if (isErr)
break;
}
}
else
{
isErr = YES;
break;
}
}
if (isErr)
{
usage(); break;
}
// Can't just have options, need filename(s) too
if (nil == arg)//i == argc)
{
usage(); break;
}
poFilename = arg;
// Check if po file exists and isn't a directory
BOOL isDirectory;
BOOL fileExists;
NSFileManager *fm = [NSFileManager defaultManager];
if (![fm fileExistsAtPath:poFilename isDirectory:&isDirectory] || isDirectory)
{
usage(); break;
}
// Destination path - can be either a filename or a directory
// If unspecified, defaults to stdout
resultFilename = [argEnum nextObject];
if (resultFilename)
{
if ([argEnum nextObject])
{
// Too many filenames
usage(); break;
}
// If directory, append default filename
fileExists = [fm fileExistsAtPath:resultFilename isDirectory:&isDirectory];
if (fileExists && isDirectory)
{
resultFilename = [resultFilename stringByAppendingPathComponent:POCONV_DEFAULT_STRINGS_FILENAME];
fileExists = [fm fileExistsAtPath: resultFilename];
}
if (!fileExists)
{
[fm createFileAtPath:resultFilename contents:nil attributes:nil];
}
if(!isSilent && fileExists)
{
printf("\nDestination file exists, overwrite (y/n)? [y] ");
int confirm = getchar();
fflush(stdout);
switch (confirm)
{
case 'y':
case 'Y':
case '\n':
break;
default:
printf("Destination file not overwritten.\n\n");
[gPool release];
exit(0);
}
}
ofh = [NSFileHandle fileHandleForWritingAtPath: resultFilename];
// Delay truncating file and wiping it out until we actually
// get something to write ou
}
else
{
// Output filename not specified, use stdout
ofh = [NSFileHandle fileHandleWithStandardOutput];
}
if (nil == ofh)
{
CFShow(@"***Could not write output. Please check if directory exists, and you have permissions.***");
[gPool release];
exit(1);
}
if (gDebugLevel)
CFShow((CFStringRef)[NSString stringWithFormat:@"poFile='%@', result='%@', ignoreFuzzy=%d, debugLevel=%d, silent=%d", poFilename, (resultFilename ? resultFilename : @"stdout"), gIgnoreFuzzy, gDebugLevel, isSilent]);
NSData *data = [NSData dataWithContentsOfMappedFile: poFilename];
// First detect the file encoding
NSStringEncoding encoding = getCharset(data);
if (gDebugLevel)
CFShow((CFStringRef)[NSString stringWithFormat:@"NSStringEncoding = %#lx", encoding]);
// Reread the file again, in the correct encoding
long numConverted = 0;
if (encoding)
{
numConverted = convertData(data, encoding, ofh);
}
if (gDebugLevel)
CFShow((CFStringRef)[NSString stringWithFormat:@"%ld entries converted.", numConverted]);
} while (NO);
[gPool release];
return 0;
}

31
macosx/POSupport.h 100644
View File

@ -0,0 +1,31 @@
/*
* POSupport.h
* Celestia
*
* Created by Da Woon Jung on 3/14/05.
* Copyright 2005 dwj. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __OBJC__
extern "C" {
#endif
extern const char *localizedUTF8String(const char *key);
extern const char *localizedUTF8StringWithDomain(const char *domain, const char *key);
#ifndef __OBJC__
}
#endif

50
macosx/POSupport.m 100644
View File

@ -0,0 +1,50 @@
/*
* POSupport.m
* Celestia
*
* Created by Da Woon Jung on 3/14/05.
* Copyright 2005 dwj. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import "POSupport.h"
const char *localizedUTF8String(const char *key)
{
return localizedUTF8StringWithDomain("po", key);
}
const char *localizedUTF8StringWithDomain(const char *domain, const char *key)
{
static char zero = 0;
NSString *str = NSLocalizedStringFromTable([NSString stringWithUTF8String:key], [NSString stringWithUTF8String:domain], nil);
if (str)
{
NSMutableData *data = [NSMutableData dataWithData:
[str dataUsingEncoding: NSUTF8StringEncoding]];
if ([data length] > 0)
{
[data appendBytes:&zero length:sizeof(char)];
return [data bytes];
}
return key;
}
return key;
}

View File

@ -26,7 +26,9 @@
sim = [[CelestiaAppCore sharedAppCore] simulation];
if ( [dateString isEqualToString: @""] && [timeString isEqualToString: @""])
{
NSRunAlertPanel(@"No Date or Time Entered",@"Please enter a date and/or time.",nil,nil,nil);
NSRunAlertPanel(NSLocalizedString(@"No Date or Time Entered",@""),
NSLocalizedString(@"Please enter a date and/or time.",@""),
nil,nil,nil);
return;
}
@ -53,7 +55,9 @@
if ( cdate == NULL )
{
// NSLog(@"bad date");
NSRunAlertPanel(@"Improper Date or Time Format",@"Please enter the date as \"mm/dd/yyyy\" and the time as \"hh:mm:ss\".",nil,nil,nil);
NSRunAlertPanel(NSLocalizedString(@"Improper Date or Time Format",@""),
NSLocalizedString(@"Please enter the date as \"mm/dd/yyyy\" and the time as \"hh:mm:ss\".",@""),
nil,nil,nil);
return;
}
// NSLog( [cdate description] );

View File

@ -7,7 +7,9 @@
//
#ifndef gettext
#define gettext(s) s
#include "POSupport.h"
#define gettext(s) localizedUTF8String(s)
#define dgettext(d,s) localizedUTF8StringWithDomain(d,s)
#endif
#ifdef __OBJC__

View File

@ -40,6 +40,7 @@
E5E8FFA30965975B00A0A304,
F578B79D02B3E2AD0100020A,
F55A246702B2D4FF0100020A,
E587027609CD833B00AE4536,
);
isa = PBXGroup;
name = Classes;
@ -174,6 +175,7 @@
19C28FACFE9D520D11CA2CBB = {
children = (
E564312E07769C9000E2C4A3,
E587026F09CD827600AE4536,
);
isa = PBXGroup;
name = Products;
@ -211,6 +213,7 @@
projectDirPath = "";
targets = (
E564302B07769C9000E2C4A3,
E587026E09CD827600AE4536,
);
};
29B97314FDCFA39411CA2CEA = {
@ -268,6 +271,7 @@
E54343100783C3F200053094,
E5C29C920982A8EC00ED06B8,
089C165CFE840E0CC02AAC07,
E5C5B24C0A0FF75C0078C6ED,
);
includeInIndex = 0;
isa = PBXGroup;
@ -340,7 +344,7 @@
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREPROCESSOR_DEFINITIONS = "WORDS_BIGENDIAN=1 MACOSX=1 MACOSX_PB=1 PNG_SUPPORT CELX DEBUG=1";
GCC_PREPROCESSOR_DEFINITIONS = "WORDS_BIGENDIAN=1 MACOSX=1 MACOSX_PB=1 PNG_SUPPORT CELX DEBUG=1 TARGET_CELESTIA";
PREBINDING = NO;
ZERO_LINK = NO;
};
@ -1156,7 +1160,7 @@
GCC_ENABLE_FIX_AND_CONTINUE = NO;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
GCC_MODEL_TUNING = G5;
GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG WORDS_BIGENDIAN=1 MACOSX=1 MACOSX_PB=1 PNG_SUPPORT CELX";
GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG WORDS_BIGENDIAN=1 MACOSX=1 MACOSX_PB=1 PNG_SUPPORT CELX TARGET_CELESTIA";
GCC_WARN_UNINITIALIZED_AUTOS = YES;
MACOSX_DEPLOYMENT_TARGET = 10.2;
PREBINDING = YES;
@ -1173,6 +1177,7 @@
E56430C007769C9000E2C4A3,
E564312907769C9000E2C4A3,
E56917DA0778217300F0F0AF,
E587027F09CD844700AE4536,
E57283A00793F93500C1F239,
E572837407939F2500C1F239,
E52E106209919AA000621C3D,
@ -1201,6 +1206,7 @@
WRAPPER_EXTENSION = app;
};
dependencies = (
E587027209CD82CF00AE4536,
);
isa = PBXNativeTarget;
name = Celestia;
@ -1378,6 +1384,7 @@
E5AACCF10935FEB100136FCD,
E5E5ED5D095BC4A5003DC829,
E5E8FFA50965975B00A0A304,
E587027C09CD83B200AE4536,
);
isa = PBXHeadersBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
@ -2223,6 +2230,7 @@
E5BF7F48096DA07B00DB7C65,
E5C3C423097DBA1D0048AF44,
E5C29C940982A8EC00ED06B8,
E5C5B24E0A0FF75C0078C6ED,
);
isa = PBXResourcesBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
@ -2365,6 +2373,7 @@
E5AACCF00935FEB100136FCD,
E5E5ED5E095BC4A5003DC829,
E5E8FFA60965975B00A0A304,
E587027B09CD83AA00AE4536,
);
isa = PBXSourcesBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
@ -3483,6 +3492,129 @@
settings = {
};
};
E587026C09CD827600AE4536 = {
buildActionMask = 2147483647;
files = (
E587027D09CD83B600AE4536,
);
isa = PBXSourcesBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
};
E587026D09CD827600AE4536 = {
buildActionMask = 2147483647;
files = (
);
isa = PBXFrameworksBuildPhase;
runOnlyForDeploymentPostprocessing = 0;
};
E587026E09CD827600AE4536 = {
buildPhases = (
E587026C09CD827600AE4536,
E587026D09CD827600AE4536,
);
buildRules = (
);
buildSettings = {
OTHER_CFLAGS = "";
OTHER_LDFLAGS = "-framework Foundation";
PRODUCT_NAME = POConverter;
SECTORDER_FLAGS = "";
WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
};
dependencies = (
);
isa = PBXNativeTarget;
name = POConverter;
productName = POConverter;
productReference = E587026F09CD827600AE4536;
productType = "com.apple.product-type.tool";
};
E587026F09CD827600AE4536 = {
explicitFileType = "compiled.mach-o.executable";
includeInIndex = 0;
isa = PBXFileReference;
path = POConverter;
refType = 3;
sourceTree = BUILT_PRODUCTS_DIR;
};
E587027109CD82CF00AE4536 = {
containerPortal = 29B97313FDCFA39411CA2CEA;
isa = PBXContainerItemProxy;
proxyType = 1;
remoteGlobalIDString = E587026E09CD827600AE4536;
remoteInfo = POConverter;
};
E587027209CD82CF00AE4536 = {
isa = PBXTargetDependency;
target = E587026E09CD827600AE4536;
targetProxy = E587027109CD82CF00AE4536;
};
E587027609CD833B00AE4536 = {
children = (
E587027709CD839700AE4536,
E587027809CD839700AE4536,
E587027909CD839700AE4536,
);
isa = PBXGroup;
name = POConverter;
refType = 4;
sourceTree = "<group>";
};
E587027709CD839700AE4536 = {
fileEncoding = 4;
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.objc;
path = POConverter.m;
refType = 4;
sourceTree = "<group>";
};
E587027809CD839700AE4536 = {
fileEncoding = 4;
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
path = POSupport.h;
refType = 4;
sourceTree = "<group>";
};
E587027909CD839700AE4536 = {
fileEncoding = 4;
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.objc;
path = POSupport.m;
refType = 4;
sourceTree = "<group>";
};
E587027B09CD83AA00AE4536 = {
fileRef = E587027909CD839700AE4536;
isa = PBXBuildFile;
settings = {
};
};
E587027C09CD83B200AE4536 = {
fileRef = E587027809CD839700AE4536;
isa = PBXBuildFile;
settings = {
};
};
E587027D09CD83B600AE4536 = {
fileRef = E587027709CD839700AE4536;
isa = PBXBuildFile;
settings = {
};
};
E587027F09CD844700AE4536 = {
buildActionMask = 8;
files = (
);
inputPaths = (
);
isa = PBXShellScriptBuildPhase;
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 1;
shellPath = /bin/sh;
shellScript = "for po in $SRCROOT/../po/*.po; do\n s=`echo $po |sed -n 's/^.*\\/\\([^\\/]\\{1,\\}\\).po$/\\1/p'`\n if [ $s == 'en' ];then s='English';\n else mkdir -p $SRCROOT/$s.lproj;\n fi\n $BUILT_PRODUCTS_DIR/POConverter -sn $po $SRCROOT/$s.lproj\n cp -R $SRCROOT/$s.lproj $BUILT_PRODUCTS_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH\ndone\n\nfor po in $SRCROOT/../po2/*.po; do\n s=`echo $po |sed -n 's/^.*\\/\\([^\\/]\\{1,\\}\\).po$/\\1/p'`\n if [ $s == 'en' ];then s='English';\n else mkdir -p $SRCROOT/$s.lproj;\n fi\n $BUILT_PRODUCTS_DIR/POConverter -sn $po $SRCROOT/$s.lproj/celestia_constellations.strings\n cp -R $SRCROOT/$s.lproj $BUILT_PRODUCTS_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH\ndone";
};
E589B6D9078AC511005B8DD9 = {
fileEncoding = 4;
isa = PBXFileReference;
@ -4643,6 +4775,49 @@
settings = {
};
};
E5C5B24C0A0FF75C0078C6ED = {
children = (
E5C5B24D0A0FF75C0078C6ED,
E5C5B24F0A0FF7830078C6ED,
E5C5B2500A0FF7950078C6ED,
);
isa = PBXVariantGroup;
name = Localizable.strings;
path = "";
refType = 4;
sourceTree = "<group>";
};
E5C5B24D0A0FF75C0078C6ED = {
fileEncoding = 10;
isa = PBXFileReference;
lastKnownFileType = text.plist.strings;
name = English;
path = English.lproj/Localizable.strings;
refType = 4;
sourceTree = "<group>";
};
E5C5B24E0A0FF75C0078C6ED = {
fileRef = E5C5B24C0A0FF75C0078C6ED;
isa = PBXBuildFile;
settings = {
};
};
E5C5B24F0A0FF7830078C6ED = {
isa = PBXFileReference;
lastKnownFileType = text.plist.strings;
name = fr;
path = fr.lproj/Localizable.strings;
refType = 4;
sourceTree = "<group>";
};
E5C5B2500A0FF7950078C6ED = {
isa = PBXFileReference;
lastKnownFileType = text.plist.strings;
name = es;
path = es.lproj/Localizable.strings;
refType = 4;
sourceTree = "<group>";
};
E5C9ADE10848FFEF0071B1EE = {
fileRef = F5040B0602A47B91014901DC;
isa = PBXBuildFile;

View File

@ -190,6 +190,9 @@
E5B615070777307F001BB2BF /* celestia.icns in Resources */ = {isa = PBXBuildFile; fileRef = E5B615060777307F001BB2BF /* celestia.icns */; };
E5C9ADE10848FFEF0071B1EE /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5040B0602A47B91014901DC /* Carbon.framework */; };
E5C9B478084909E40071B1EE /* README for Mac OS X.rtf in CopyFiles */ = {isa = PBXBuildFile; fileRef = E5C9B46B084909B90071B1EE /* README for Mac OS X.rtf */; };
E5CC203609AA836700CFFF2C /* POSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = E5CC203409AA834B00CFFF2C /* POSupport.m */; };
E5CC203709AA836E00CFFF2C /* POConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = E5CC203209AA834B00CFFF2C /* POConverter.m */; };
E5CC204709AA843300CFFF2C /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = E5CC204509AA843300CFFF2C /* Localizable.strings */; };
E5D3196B096C91A6007FA87F /* vp_patch.sh in Resources */ = {isa = PBXBuildFile; fileRef = E5D3196A096C91A6007FA87F /* vp_patch.sh */; };
E5D446660777291700A1577D /* utf8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5D446640777291700A1577D /* utf8.cpp */; };
E5D4467607772B6C00A1577D /* CelestiaSettings.mm in Sources */ = {isa = PBXBuildFile; fileRef = E5D4467407772B6C00A1577D /* CelestiaSettings.mm */; };
@ -306,6 +309,16 @@
};
/* End PBXBuildStyle section */
/* Begin PBXContainerItemProxy section */
E5CC205909AA8C7100CFFF2C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
proxyType = 1;
remoteGlobalIDString = E5CC202809AA823400CFFF2C;
remoteInfo = POConverter;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
E567F018099110C000D05031 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
@ -586,6 +599,12 @@
E5B61B2E077737A6001BB2BF /* png.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = "<group>"; };
E5B61B2F077737A6001BB2BF /* pngconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = "<group>"; };
E5C9B46B084909B90071B1EE /* README for Mac OS X.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "README for Mac OS X.rtf"; sourceTree = "<group>"; };
E5CC202909AA823400CFFF2C /* POConverter */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = POConverter; sourceTree = BUILT_PRODUCTS_DIR; };
E5CC203209AA834B00CFFF2C /* POConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = POConverter.m; sourceTree = "<group>"; };
E5CC203309AA834B00CFFF2C /* POSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = POSupport.h; sourceTree = "<group>"; };
E5CC203409AA834B00CFFF2C /* POSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = POSupport.m; sourceTree = "<group>"; };
E5CC204609AA843300CFFF2C /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
E5CC204809AA846600CFFF2C /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = "<group>"; };
E5D3196A096C91A6007FA87F /* vp_patch.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = vp_patch.sh; sourceTree = "<group>"; };
E5D446640777291700A1577D /* utf8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = utf8.cpp; path = ../src/celutil/utf8.cpp; sourceTree = SOURCE_ROOT; };
E5D446650777291700A1577D /* utf8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = utf8.h; path = ../src/celutil/utf8.h; sourceTree = SOURCE_ROOT; };
@ -655,6 +674,7 @@
E5E365B2095C12D200B14224 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
E5F8C9E30795235E00D1DAF2 /* liblua.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = liblua.dylib; path = Frameworks/liblua.dylib; sourceTree = "<group>"; };
E5F8C9E40795235E00D1DAF2 /* liblualib.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = liblualib.dylib; path = Frameworks/liblualib.dylib; sourceTree = "<group>"; };
E5FB63B20A0F80FA00A60759 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = "<group>"; };
F5040AF602A46404014901DC /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
F5040AFE02A46BDB014901DC /* CGBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CGBuffer.h; path = ../src/celengine/CGBuffer.h; sourceTree = SOURCE_ROOT; };
F5040B0602A47B91014901DC /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
@ -965,6 +985,7 @@
E5D956DE096651DF00CB02B2 /* SplashWindowController.h */,
F578B79D02B3E2AD0100020A /* Cocoa Extensions */,
F55A246702B2D4FF0100020A /* Wrappers */,
E5CC203109AA832000CFFF2C /* POConverter */,
);
name = Classes;
sourceTree = "<group>";
@ -995,6 +1016,7 @@
isa = PBXGroup;
children = (
E564312E07769C9000E2C4A3 /* Celestia.app */,
E5CC202909AA823400CFFF2C /* POConverter */,
);
name = Products;
sourceTree = "<group>";
@ -1044,6 +1066,7 @@
E54343100783C3F200053094 /* BrowserWindow.nib */,
E5D7660E0982B1860099DBBD /* HelpWindow.nib */,
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
E5CC204509AA843300CFFF2C /* Localizable.strings */,
);
includeInIndex = 0;
name = Resources;
@ -1117,6 +1140,16 @@
path = ../extras;
sourceTree = SOURCE_ROOT;
};
E5CC203109AA832000CFFF2C /* POConverter */ = {
isa = PBXGroup;
children = (
E5CC203209AA834B00CFFF2C /* POConverter.m */,
E5CC203309AA834B00CFFF2C /* POSupport.h */,
E5CC203409AA834B00CFFF2C /* POSupport.m */,
);
name = POConverter;
sourceTree = "<group>";
};
E5D766250982B3300099DBBD /* models */ = {
isa = PBXGroup;
children = (
@ -1564,6 +1597,7 @@
E56430C007769C9000E2C4A3 /* Sources */,
E564312907769C9000E2C4A3 /* Frameworks */,
E56917DA0778217300F0F0AF /* CopyFiles */,
E5CC203B09AA83A900CFFF2C /* Convert PO */,
E57283A00793F93500C1F239 /* CopyFiles */,
E572837407939F2500C1F239 /* CopyFiles */,
E567F018099110C000D05031 /* CopyFiles */,
@ -1595,6 +1629,7 @@
WRAPPER_EXTENSION = app;
};
dependencies = (
E5CC205A09AA8C7100CFFF2C /* PBXTargetDependency */,
);
name = Celestia;
productInstallPath = "$(HOME)/Applications";
@ -1602,6 +1637,37 @@
productReference = E564312E07769C9000E2C4A3 /* Celestia.app */;
productType = "com.apple.product-type.application";
};
E5CC202809AA823400CFFF2C /* POConverter */ = {
isa = PBXNativeTarget;
buildConfigurationList = E5CC202B09AA829B00CFFF2C /* Build configuration list for PBXNativeTarget "POConverter" */;
buildPhases = (
E5CC202609AA823400CFFF2C /* Sources */,
);
buildRules = (
);
buildSettings = {
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
INSTALL_PATH = "$(HOME)/bin";
OTHER_LDFLAGS = (
"-framework",
Foundation,
"-framework",
AppKit,
);
PREBINDING = NO;
PRODUCT_NAME = POConverter;
ZERO_LINK = YES;
};
dependencies = (
);
name = POConverter;
productName = POConverter;
productReference = E5CC202909AA823400CFFF2C /* POConverter */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@ -1627,6 +1693,7 @@
projectDirPath = "";
targets = (
E564302B07769C9000E2C4A3 /* Celestia */,
E5CC202809AA823400CFFF2C /* POConverter */,
);
};
/* End PBXProject section */
@ -1646,6 +1713,7 @@
E5D3196B096C91A6007FA87F /* vp_patch.sh in Resources */,
E599A78E097CAB390079C254 /* Credits.rtf in Resources */,
E5D766140982B1860099DBBD /* HelpWindow.nib in Resources */,
E5CC204709AA843300CFFF2C /* Localizable.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1668,6 +1736,20 @@
shellPath = /bin/sh;
shellScript = "mkdir -p $BUILT_PRODUCTS_DIR/Celestia/CelestiaResources/textures/hires\nfind $BUILT_PRODUCTS_DIR/Celestia -name 'Makefile*' -delete\nhdiutil create -srcfolder $BUILT_PRODUCTS_DIR/Celestia -format UDRW -ov $TARGET_BUILD_DIR/$PRODUCT_NAME.dmg\n";
};
E5CC203B09AA83A900CFFF2C /* Convert PO */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 8;
files = (
);
inputPaths = (
);
name = "Convert PO";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 1;
shellPath = /bin/sh;
shellScript = "for po in $SRCROOT/../po/*.po; do\n s=`echo $po |sed -n 's/^.*\\/\\([^\\/]\\{1,\\}\\).po$/\\1/p'`\n if [ $s == 'en' ];then s='English';\n else mkdir -p $SRCROOT/$s.lproj;\n fi\n $BUILT_PRODUCTS_DIR/POConverter -sn $po $SRCROOT/$s.lproj\n cp -R $SRCROOT/$s.lproj $BUILT_PRODUCTS_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH\ndone\n\nfor po in $SRCROOT/../po2/*.po; do\n s=`echo $po |sed -n 's/^.*\\/\\([^\\/]\\{1,\\}\\).po$/\\1/p'`\n if [ $s == 'en' ];then s='English';\n else mkdir -p $SRCROOT/$s.lproj;\n fi\n $BUILT_PRODUCTS_DIR/POConverter -sn $po $SRCROOT/$s.lproj/celestia_constellations.strings\n cp -R $SRCROOT/$s.lproj $BUILT_PRODUCTS_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH\ndone";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@ -1798,11 +1880,28 @@
E532F4F80933331800D7D5B3 /* staroctree.cpp in Sources */,
E5E365AD095C11B500B14224 /* SplashScreen.m in Sources */,
E5D956E00966520700CB02B2 /* SplashWindowController.m in Sources */,
E5CC203609AA836700CFFF2C /* POSupport.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
E5CC202609AA823400CFFF2C /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
E5CC203709AA836E00CFFF2C /* POConverter.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
E5CC205A09AA8C7100CFFF2C /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = E5CC202809AA823400CFFF2C /* POConverter */;
targetProxy = E5CC205909AA8C7100CFFF2C /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
@ -1844,6 +1943,16 @@
name = Credits.rtf;
sourceTree = "<group>";
};
E5CC204509AA843300CFFF2C /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
E5CC204609AA843300CFFF2C /* English */,
E5CC204809AA846600CFFF2C /* fr */,
E5FB63B20A0F80FA00A60759 /* es */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
E5D7660E0982B1860099DBBD /* HelpWindow.nib */ = {
isa = PBXVariantGroup;
children = (
@ -2100,6 +2209,101 @@
};
name = Universal_Debug;
};
E5CC202C09AA829B00CFFF2C /* Development */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(GCC_PREPROCESSOR_DEFINITIONS)",
TARGET_CELESTIA,
);
INSTALL_PATH = "$(HOME)/bin";
OTHER_LDFLAGS = (
"-framework",
Foundation,
);
PREBINDING = NO;
PRODUCT_NAME = POConverter;
ZERO_LINK = NO;
};
name = Development;
};
E5CC202D09AA829B00CFFF2C /* Deployment */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(GCC_PREPROCESSOR_DEFINITIONS)",
TARGET_CELESTIA,
);
INSTALL_PATH = "$(HOME)/bin";
OTHER_LDFLAGS = (
"-framework",
Foundation,
);
PREBINDING = NO;
PRODUCT_NAME = POConverter;
ZERO_LINK = NO;
};
name = Deployment;
};
E5CC202E09AA829B00CFFF2C /* Universal_Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(GCC_PREPROCESSOR_DEFINITIONS)",
TARGET_CELESTIA,
);
INSTALL_PATH = "$(HOME)/bin";
OTHER_LDFLAGS = (
"-framework",
Foundation,
);
PREBINDING = NO;
PRODUCT_NAME = POConverter;
ZERO_LINK = NO;
};
name = Universal_Release;
};
E5CC202F09AA829B00CFFF2C /* Universal_Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(GCC_PREPROCESSOR_DEFINITIONS)",
TARGET_CELESTIA,
);
INSTALL_PATH = "$(HOME)/bin";
OTHER_LDFLAGS = (
"-framework",
Foundation,
);
PREBINDING = NO;
PRODUCT_NAME = POConverter;
ZERO_LINK = NO;
};
name = Universal_Debug;
};
E5CC203009AA829B00CFFF2C /* Default */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(GCC_PREPROCESSOR_DEFINITIONS)",
TARGET_CELESTIA,
);
INSTALL_PATH = "$(HOME)/bin";
OTHER_LDFLAGS = (
"-framework",
Foundation,
);
PREBINDING = NO;
PRODUCT_NAME = POConverter;
ZERO_LINK = NO;
};
name = Default;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@ -2127,6 +2331,18 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Default;
};
E5CC202B09AA829B00CFFF2C /* Build configuration list for PBXNativeTarget "POConverter" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E5CC202C09AA829B00CFFF2C /* Development */,
E5CC202D09AA829B00CFFF2C /* Deployment */,
E5CC202E09AA829B00CFFF2C /* Universal_Release */,
E5CC202F09AA829B00CFFF2C /* Universal_Debug */,
E5CC203009AA829B00CFFF2C /* Default */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Default;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;

View File

@ -8,8 +8,6 @@
<integer>0</integer>
<key>ambientLightLevel</key>
<real>0.1</real>
<key>brightnessBias</key>
<real>0.1</real>
<key>faintestVisible</key>
<real>7</real>
<key>fullScreenMode</key>
@ -76,6 +74,8 @@
<integer>1</integer>
<key>showGalaxyLabels</key>
<integer>0</integer>
<key>showLatinConstellationLabels</key>
<integer>1</integer>
<key>showLandingSiteLabels</key>
<integer>1</integer>
<key>showLineaLabels</key>
@ -142,8 +142,6 @@
<integer>0</integer>
<key>showStars</key>
<integer>1</integer>
<key>showStarsAsPoints</key>
<integer>0</integer>
<key>showTerraLabels</key>
<integer>1</integer>
<key>showTesseraLabels</key>

View File

@ -1,8 +1,8 @@
{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf330
\readonlydoc1{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh9000\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\sl320\ql\qnatural
\paperw11904\paperh16836\margl1440\margr1440\vieww9000\viewh9000\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li120\sl320\ql\qnatural
\f0\b\fs24 \cf0 Sitio Web :
\f1\b0 \

Binary file not shown.

Binary file not shown.

View File

@ -15,7 +15,7 @@
<key>342</key>
<string>282 595 128 68 0 0 1024 746 </string>
<key>792</key>
<string>131 409 257 287 0 0 1024 746 </string>
<string>176 486 272 287 0 0 1280 832 </string>
</dict>
<key>IBFramework Version</key>
<string>443.0</string>
@ -25,10 +25,10 @@
</array>
<key>IBOpenObjects</key>
<array>
<integer>1659</integer>
<integer>29</integer>
<integer>1659</integer>
</array>
<key>IBSystem Version</key>
<string>8G32</string>
<string>8I127</string>
</dict>
</plist>

Binary file not shown.

View File

@ -1,8 +1,8 @@
{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf330
\readonlydoc1{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh9000\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\sl320\ql\qnatural
\paperw11904\paperh16836\margl1440\margr1440\vieww9000\viewh9000\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li120\sl320\ql\qnatural
\f0\b\fs24 \cf0 Site Web :
\f1\b0 \

View File

@ -11,6 +11,6 @@
<integer>16</integer>
</array>
<key>IBSystem Version</key>
<string>8G32</string>
<string>8I127</string>
</dict>
</plist>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -11,11 +11,11 @@
<key>29</key>
<string>11 788 871 44 0 0 1280 832 </string>
<key>335</key>
<string>458 586 117 118 0 0 1024 746 </string>
<string>588 666 123 118 0 0 1280 832 </string>
<key>342</key>
<string>282 595 141 68 0 0 1024 746 </string>
<key>792</key>
<string>131 409 261 287 0 0 1024 746 </string>
<string>179 486 320 287 0 0 1280 832 </string>
</dict>
<key>IBFramework Version</key>
<string>443.0</string>
@ -25,10 +25,10 @@
</array>
<key>IBOpenObjects</key>
<array>
<integer>29</integer>
<integer>1662</integer>
<integer>29</integer>
</array>
<key>IBSystem Version</key>
<string>8G32</string>
<string>8I127</string>
</dict>
</plist>

Binary file not shown.