diff --git a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj
index 0c5b9c08d..702fc3676 100644
--- a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj
+++ b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj
@@ -182,6 +182,7 @@
E164FDD81720E77100263CE3 /* XcodeCapp */ = {
isa = PBXGroup;
children = (
+ E1E90C60173B42D0005C6D5B /* MainMenu.xib */,
E164FDF41720EBC100263CE3 /* AppController.m */,
E1E90C371735D82B005C6D5B /* AppController.h */,
E164FDFB1720EC5B00263CE3 /* XcodeCapp.m */,
@@ -217,7 +218,6 @@
E164FE071720F25400263CE3 /* Resources */ = {
isa = PBXGroup;
children = (
- E1E90C60173B42D0005C6D5B /* MainMenu.xib */,
E1ED6B6F173414E100641628 /* icon_128x128.png */,
E1ED6B70173414E100641628 /* icon_128x128@2x.png */,
E164FE2D1721A34900263CE3 /* icon-inactive.png */,
diff --git a/Tools/XcodeCapp/XcodeCapp/AppController.h b/Tools/XcodeCapp/XcodeCapp/AppController.h
index 96cea4703..b90190ae5 100644
--- a/Tools/XcodeCapp/XcodeCapp/AppController.h
+++ b/Tools/XcodeCapp/XcodeCapp/AppController.h
@@ -26,8 +26,8 @@
@property (strong) IBOutlet NSMenu *statusMenu;
@property (assign) IBOutlet NSMenuItem *menuItemHistory;
-@property (assign) IBOutlet NSMenuItem *menuItemOpenInXcode;
-@property (assign) IBOutlet NSMenuItem *menuItemListen;
+@property (assign) IBOutlet NSMenuItem *menuItemOpenProject;
+@property (assign) IBOutlet NSMenuItem *menuItemShowInFinder;
@property (strong) IBOutlet NSPanel *aboutWindow;
@property (strong) IBOutlet NSWindow *preferencesWindow;
diff --git a/Tools/XcodeCapp/XcodeCapp/AppController.m b/Tools/XcodeCapp/XcodeCapp/AppController.m
index 507c561a7..cfe32157f 100644
--- a/Tools/XcodeCapp/XcodeCapp/AppController.m
+++ b/Tools/XcodeCapp/XcodeCapp/AppController.m
@@ -36,6 +36,7 @@ AppController *SharedAppControllerInstance = nil;
@property (nonatomic) NSImage *iconError;
@property (nonatomic) NSMenu *recentMenu;
@property NSStatusItem *statusItem;
+@property NSString *finderName;
@end
@@ -58,39 +59,13 @@ AppController *SharedAppControllerInstance = nil;
DDLogVerbose(@"\n******************************\n** XcodeCapp started **\n******************************\n");
- self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
- self.statusItem.menu = self.statusMenu;
- self.statusItem.image = self.iconInactive;
- self.statusItem.highlightMode = YES;
- self.statusItem.length = self.iconInactive.size.width + 12; // Add some space around the icon
- self.statusMenu.delegate = self;
-
self.aboutWindow.backgroundColor = [NSColor whiteColor];
-
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
-
- double firstLaunchVersion = [defaults doubleForKey:kDefaultFirstLaunchVersion];
-
- // Note: the scanner will only get the major.minor version numbers, which is what we want.
- NSScanner *scanner = [NSScanner scannerWithString:[self bundleVersion]];
- double appVersion = 0.0;
- [scanner scanDouble:&appVersion];
-
- if ([defaults boolForKey:kDefaultFirstLaunch] || appVersion > firstLaunchVersion)
- {
- [defaults setBool:NO forKey:kDefaultFirstLaunch];
- [defaults setDouble:appVersion forKey:kDefaultFirstLaunchVersion];
- [self openHelp:self];
- }
-
- NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
-
- [defaultCenter addObserver:self selector:@selector(batchDidStart:) name:XCCBatchDidStartNotification object:nil];
- [defaultCenter addObserver:self selector:@selector(batchDidEnd:) name:XCCBatchDidEndNotification object:nil];
- [defaultCenter addObserver:self selector:@selector(projectDidFinishLoading:) name:XCCProjectDidFinishLoadingNotification object:nil];
-
+ [self initStatusItem];
+ [self initObservers];
+ [self initShowInFinderItem];
[self pruneProjectHistory];
[self updateHistoryMenu];
+ [self checkFirstLaunch];
}
- (void)applicationDidFinishLaunching:(NSNotification *)notification
@@ -167,6 +142,39 @@ AppController *SharedAppControllerInstance = nil;
#endif
}
+- (void)initStatusItem
+{
+ self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
+ self.statusItem.menu = self.statusMenu;
+ self.statusItem.image = self.iconInactive;
+ self.statusItem.highlightMode = YES;
+ self.statusItem.length = self.iconInactive.size.width + 12; // Add some space around the icon
+ self.statusMenu.delegate = self;
+}
+
+- (void)initObservers
+{
+ NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
+
+ [defaultCenter addObserver:self selector:@selector(batchDidStart:) name:XCCBatchDidStartNotification object:nil];
+ [defaultCenter addObserver:self selector:@selector(batchDidEnd:) name:XCCBatchDidEndNotification object:nil];
+ [defaultCenter addObserver:self selector:@selector(projectDidFinishLoading:) name:XCCProjectDidFinishLoadingNotification object:nil];
+}
+
+- (void)initShowInFinderItem
+{
+ // See if PathFinder is available
+ NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
+ NSString *path = [workspace absolutePathForAppBundleWithIdentifier:@"com.cocoatech.PathFinder"];
+
+ if (path)
+ self.finderName = path.lastPathComponent.stringByDeletingPathExtension;
+ else
+ self.finderName = @"Finder";
+
+ self.menuItemShowInFinder.title = [NSString stringWithFormat:self.menuItemShowInFinder.title, self.finderName];
+}
+
- (void)pruneProjectHistory
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
@@ -187,6 +195,25 @@ AppController *SharedAppControllerInstance = nil;
[defaults setObject:projectHistory forKey:kDefaultXCCProjectHistory];
}
+- (void)checkFirstLaunch
+{
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+
+ double firstLaunchVersion = [defaults doubleForKey:kDefaultFirstLaunchVersion];
+
+ // Note: the scanner will only get the major.minor version numbers, which is what we want.
+ NSScanner *scanner = [NSScanner scannerWithString:[self bundleVersion]];
+ double appVersion = 0.0;
+ [scanner scanDouble:&appVersion];
+
+ if ([defaults boolForKey:kDefaultFirstLaunch] || appVersion > firstLaunchVersion)
+ {
+ [defaults setBool:NO forKey:kDefaultFirstLaunch];
+ [defaults setDouble:appVersion forKey:kDefaultFirstLaunchVersion];
+ [self openHelp:self];
+ }
+}
+
#pragma mark - Properties
- (NSImage *)iconActive
@@ -253,8 +280,8 @@ AppController *SharedAppControllerInstance = nil;
- (void)projectDidFinishLoading:(NSNotification *)note
{
self.statusItem.image = self.xcc.hasErrors ? self.iconError : self.iconActive;
- self.menuItemListen.title = [NSString stringWithFormat:@"Close “%@”", self.xcc.projectPath.lastPathComponent];
- self.menuItemListen.action = @selector(closeProject:);
+ self.menuItemOpenProject.title = [NSString stringWithFormat:@"Close “%@”", self.xcc.projectPath.lastPathComponent];
+ self.menuItemOpenProject.action = @selector(closeProject:);
}
// Watch changes to the max recent projects preference
@@ -288,8 +315,8 @@ AppController *SharedAppControllerInstance = nil;
[self.xcc stop];
self.statusItem.image = self.iconInactive;
- self.menuItemListen.title = @"Open Project…";
- self.menuItemListen.action = @selector(loadProject:);
+ self.menuItemOpenProject.title = @"Open Project…";
+ self.menuItemOpenProject.action = @selector(loadProject:);
[[NSUserDefaults standardUserDefaults] removeObjectForKey:kDefaultLastOpenedPath];
}
@@ -305,6 +332,11 @@ AppController *SharedAppControllerInstance = nil;
[self updateHistoryMenu];
}
+- (IBAction)showInFinder:(id)aSender
+{
+ [[NSWorkspace sharedWorkspace] openFile:self.xcc.projectPath withApplication:self.finderName];
+}
+
- (IBAction)openHelp:(id)aSender
{
if (!self.helpView.document)
@@ -340,7 +372,7 @@ AppController *SharedAppControllerInstance = nil;
{
NSMenu *menu = aMenuItem.menu;
- if (aMenuItem == self.menuItemListen)
+ if (aMenuItem == self.menuItemOpenProject)
{
return !!self.xcc.projectPath;
}
diff --git a/Tools/XcodeCapp/XcodeCapp/Info.plist b/Tools/XcodeCapp/XcodeCapp/Info.plist
index 29816d948..09736b23d 100644
--- a/Tools/XcodeCapp/XcodeCapp/Info.plist
+++ b/Tools/XcodeCapp/XcodeCapp/Info.plist
@@ -17,11 +17,11 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 3.0.1
+ 3.0.2
CFBundleSignature
????
CFBundleVersion
- 3.0.1
+ 3.0.2
LSApplicationCategoryType
public.app-category.developer-tools
LSUIElement
diff --git a/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.pages b/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.pages
index 6e417ba1c..f397df57a 100644
Binary files a/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.pages and b/Tools/XcodeCapp/XcodeCapp/Resources/XcodeCapp help.pages differ
diff --git a/Tools/XcodeCapp/XcodeCapp/Resources/help.pdf b/Tools/XcodeCapp/XcodeCapp/Resources/help.pdf
index f408520bf..753e4b1e7 100644
Binary files a/Tools/XcodeCapp/XcodeCapp/Resources/help.pdf and b/Tools/XcodeCapp/XcodeCapp/Resources/help.pdf differ
diff --git a/Tools/XcodeCapp/XcodeCapp/Scripts/mod_pbxproj.py b/Tools/XcodeCapp/XcodeCapp/Scripts/mod_pbxproj.py
index 82eabb686..f5c8d4a77 100755
--- a/Tools/XcodeCapp/XcodeCapp/Scripts/mod_pbxproj.py
+++ b/Tools/XcodeCapp/XcodeCapp/Scripts/mod_pbxproj.py
@@ -176,15 +176,15 @@ class PBXFileReference(PBXType):
}
trees = [
- '',
- '',
- 'BUILT_PRODUCTS_DIR',
- 'DEVELOPER_DIR',
- 'SDKROOT',
- 'SOURCE_ROOT',
- ]
+ '',
+ '',
+ 'BUILT_PRODUCTS_DIR',
+ 'DEVELOPER_DIR',
+ 'SDKROOT',
+ 'SOURCE_ROOT',
+ ]
- def guess_file_type(self, ignore_unknown_type=True):
+ def guess_file_type(self, ignore_unknown_type=False):
self.remove('explicitFileType')
self.remove('lastKnownFileType')
@@ -212,7 +212,7 @@ class PBXFileReference(PBXType):
self['explicitFileType'] = ft
@classmethod
- def Create(cls, os_path, tree='SOURCE_ROOT', ignore_unknown_type=True):
+ def Create(cls, os_path, tree='SOURCE_ROOT', ignore_unknown_type=False):
if tree not in cls.trees:
print 'Not a valid sourceTree type: %s' % tree
return None
@@ -608,7 +608,7 @@ class XcodeProject(PBXDict):
if b.add_library_search_paths(paths, recursive):
self.modified = True
- # TODO: need to return value if project has been modified
+ # TODO: need to return value if project has been modified
def get_obj(self, id):
return self.objects.get(id)
@@ -618,36 +618,36 @@ class XcodeProject(PBXDict):
def get_files_by_os_path(self, os_path, tree='SOURCE_ROOT'):
files = [f for f in self.objects.values() if f.get('isa') == 'PBXFileReference'
- and f.get('path') == os_path
- and f.get('sourceTree') == tree]
+ and f.get('path') == os_path
+ and f.get('sourceTree') == tree]
return files
def get_files_by_name(self, name, parent=None):
if parent:
files = [f for f in self.objects.values() if f.get('isa') == 'PBXFileReference'
- and f.get(name) == name
- and parent.has_child(f)]
+ and f.get(name) == name
+ and parent.has_child(f)]
else:
files = [f for f in self.objects.values() if f.get('isa') == 'PBXFileReference'
- and f.get(name) == name]
+ and f.get(name) == name]
return files
def get_build_files(self, id):
files = [f for f in self.objects.values() if f.get('isa') == 'PBXBuildFile'
- and f.get('fileRef') == id]
+ and f.get('fileRef') == id]
return files
def get_groups_by_name(self, name, parent=None):
if parent:
groups = [g for g in self.objects.values() if g.get('isa') == 'PBXGroup'
- and g.get_name() == name
- and parent.has_child(g)]
+ and g.get_name() == name
+ and parent.has_child(g)]
else:
groups = [g for g in self.objects.values() if g.get('isa') == 'PBXGroup'
- and g.get_name() == name]
+ and g.get_name() == name]
return groups
@@ -680,7 +680,7 @@ class XcodeProject(PBXDict):
path = os.path.abspath(path)
groups = [g for g in self.objects.values() if g.get('isa') == 'PBXGroup'
- and os.path.abspath(g.get('path', '/dev/null')) == path]
+ and os.path.abspath(g.get('path', '/dev/null')) == path]
return groups
@@ -786,7 +786,7 @@ class XcodeProject(PBXDict):
head, tail = ntpath.split(path)
return tail or ntpath.basename(head)
- def add_file_if_doesnt_exist(self, f_path, parent=None, tree='SOURCE_ROOT', create_build_files=True, weak=False, ignore_unknown_type=True):
+ def add_file_if_doesnt_exist(self, f_path, parent=None, tree='SOURCE_ROOT', create_build_files=True, weak=False, ignore_unknown_type=False):
for obj in self.objects.values():
if 'path' in obj:
if self.path_leaf(f_path) == self.path_leaf(obj.get('path')):
@@ -794,7 +794,7 @@ class XcodeProject(PBXDict):
return self.add_file(f_path, parent, tree, create_build_files, weak, ignore_unknown_type=ignore_unknown_type)
- def add_file(self, f_path, parent=None, tree='SOURCE_ROOT', create_build_files=True, weak=False, ignore_unknown_type=True):
+ def add_file(self, f_path, parent=None, tree='SOURCE_ROOT', create_build_files=True, weak=False, ignore_unknown_type=False):
results = []
abs_path = ''
@@ -829,16 +829,16 @@ class XcodeProject(PBXDict):
results.append(build_file)
if abs_path and tree == 'SOURCE_ROOT' \
- and os.path.isfile(abs_path) \
- and file_ref.build_phase == 'PBXFrameworksBuildPhase':
- library_path = os.path.join('$(SRCROOT)', os.path.split(f_path)[0])
- self.add_library_search_paths([library_path], recursive=False)
+ and os.path.isfile(abs_path) \
+ and file_ref.build_phase == 'PBXFrameworksBuildPhase':
+ library_path = os.path.join('$(SRCROOT)', os.path.split(f_path)[0])
+ self.add_library_search_paths([library_path], recursive=False)
if abs_path and tree == 'SOURCE_ROOT' \
- and not os.path.isfile(abs_path) \
- and file_ref.build_phase == 'PBXFrameworksBuildPhase':
- framework_path = os.path.join('$(SRCROOT)', os.path.split(f_path)[0])
- self.add_framework_search_paths([framework_path, '$(inherited)'], recursive=False)
+ and not os.path.isfile(abs_path) \
+ and file_ref.build_phase == 'PBXFrameworksBuildPhase':
+ framework_path = os.path.join('$(SRCROOT)', os.path.split(f_path)[0])
+ self.add_framework_search_paths([framework_path, '$(inherited)'], recursive=False)
for r in results:
self.objects[r.id] = r
@@ -1051,10 +1051,10 @@ class XcodeProject(PBXDict):
for f in v:
filerefs.extend([fr.id for fr in self.objects.values() if fr.get('isa') == 'PBXFileReference'
- and fr.get('name') == f])
+ and fr.get('name') == f])
buildfiles = [bf for bf in self.objects.values() if bf.get('isa') == 'PBXBuildFile'
- and bf.get('fileRef') in filerefs]
+ and bf.get('fileRef') in filerefs]
for bf in buildfiles:
if bf.add_compiler_flag(k):
@@ -1173,25 +1173,25 @@ class XcodeProject(PBXDict):
if enters:
out.write('\n')
- #root.remove('objects') # remove it to avoid problems
+ #root.remove('objects') # remove it to avoid problems
sections = [
- ('PBXBuildFile', False),
- ('PBXCopyFilesBuildPhase', True),
- ('PBXFileReference', False),
- ('PBXFrameworksBuildPhase', True),
- ('PBXGroup', True),
- ('PBXNativeTarget', True),
- ('PBXProject', True),
- ('PBXResourcesBuildPhase', True),
- ('PBXShellScriptBuildPhase', True),
- ('PBXSourcesBuildPhase', True),
- ('XCBuildConfiguration', True),
- ('XCConfigurationList', True),
- ('PBXTargetDependency', True),
- ('PBXVariantGroup', True),
- ('PBXReferenceProxy', True),
- ('PBXContainerItemProxy', True)]
+ ('PBXBuildFile', False),
+ ('PBXCopyFilesBuildPhase', True),
+ ('PBXFileReference', False),
+ ('PBXFrameworksBuildPhase', True),
+ ('PBXGroup', True),
+ ('PBXNativeTarget', True),
+ ('PBXProject', True),
+ ('PBXResourcesBuildPhase', True),
+ ('PBXShellScriptBuildPhase', True),
+ ('PBXSourcesBuildPhase', True),
+ ('XCBuildConfiguration', True),
+ ('XCConfigurationList', True),
+ ('PBXTargetDependency', True),
+ ('PBXVariantGroup', True),
+ ('PBXReferenceProxy', True),
+ ('PBXContainerItemProxy', True)]
for section in sections: # iterate over the sections
if self.sections.get(section[0]) is None:
@@ -1252,37 +1252,37 @@ class XcodeProject(PBXDict):
if enters:
out.write('\n')
-
+
if enters:
out.write(deep)
-
+
out.write(')')
-
+
else:
if len(root) > 0 and re.match(regex, root).group(0) == root:
out.write(root.encode("utf-8"))
else:
out.write('"' + XcodeProject.addslashes(root.encode("utf-8")) + '"')
-
+
if root in self.uuids:
out.write(" /* " + self.uuids[root].encode("utf-8") + " */")
-
+
@classmethod
def Load(cls, path):
cls.plutil_path = os.path.join(os.path.split(__file__)[0], 'plutil')
-
+
if not os.path.isfile(XcodeProject.plutil_path):
cls.plutil_path = 'plutil'
-
+
# load project by converting to xml and then convert that using plistlib
p = subprocess.Popen([XcodeProject.plutil_path, '-convert', 'xml1', '-o', '-', path], stdout=subprocess.PIPE)
stdout, stderr = p.communicate()
-
+
# If the plist was malformed, returncode will be non-zero
if p.returncode != 0:
print stdout
return None
-
+
tree = plistlib.readPlistFromString(stdout)
return XcodeProject(tree, path)
@@ -1295,12 +1295,12 @@ class PBXWriter(plistlib.PlistWriter):
plistlib.PlistWriter.writeValue(self, value.data)
else:
plistlib.PlistWriter.writeValue(self, value)
-
+
def simpleElement(self, element, value=None):
"""
- We have to override this method to deal with Unicode text correctly.
- Non-ascii characters have to get encoded as character references.
- """
+ We have to override this method to deal with Unicode text correctly.
+ Non-ascii characters have to get encoded as character references.
+ """
if value is not None:
value = _escapeAndEncode(value)
self.writeln("<%s>%s%s>" % (element, value, element))
@@ -1310,8 +1310,8 @@ class PBXWriter(plistlib.PlistWriter):
# Regex to find any control chars, except for \t \n and \r
_controlCharPat = re.compile(
- r"[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f"
- r"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]")
+ r"[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f"
+ r"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]")
def _escapeAndEncode(text):
diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h
index 4f70ca1fd..373479452 100644
--- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h
+++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h
@@ -101,8 +101,8 @@ extern NSString * const XCCProjectDidFinishLoadingNotification;
- (IBAction)openErrorsPanel:(id)sender;
- (IBAction)clearErrors:(id)sender;
- (IBAction)openErrorInEditor:(id)sender;
-- (IBAction)openProjectInXcode:(id)aSender;
-- (IBAction)resetProject:(id)aSender;
+- (IBAction)openXcodeProject:(id)aSender;
+- (IBAction)synchronizeProject:(id)aSender;
- (BOOL)executablesAreAccessible;
- (void)stop;
diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m
index d51e4ef35..f0b194f37 100644
--- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m
+++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m
@@ -401,7 +401,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
[self.operationQueue addOperation:op];
}
-- (IBAction)openProjectInXcode:(id)aSender
+- (IBAction)openXcodeProject:(id)aSender
{
BOOL isDirectory, opened = YES;
BOOL exists = [self.fm fileExistsAtPath:self.xcodeProjectPath isDirectory:&isDirectory];
@@ -426,11 +426,11 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
NSInteger response = NSRunAlertPanel(@"The project could not be opened.", @"%@\n\nWould you like to regenerate the project?", @"Yes", @"No", nil, text);
if (response == NSAlertDefaultReturn)
- [self resetProject:self];
+ [self synchronizeProject:self];
}
}
-- (IBAction)resetProject:(id)aSender
+- (IBAction)synchronizeProject:(id)aSender
{
NSString *projectPath = self.projectPath;
@@ -571,7 +571,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
[self startEventStream];
if ([[NSUserDefaults standardUserDefaults] boolForKey:kDefaultAutoOpenXcodeProject])
- [self openProjectInXcode:self];
+ [self openXcodeProject:self];
}
#pragma mark - Notification handlers
@@ -1158,7 +1158,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
}
}
- [self resetProject:self];
+ [self synchronizeProject:self];
}
/*!
diff --git a/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib b/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib
index c94992e3a..255eca73d 100644
--- a/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib
+++ b/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib
@@ -81,13 +81,23 @@
+
+
@@ -2118,12 +2136,14 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.pdfkit.ibplugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
- 858
+ 872
-
- menuItemListen
+
+ menuItemOpenProject
NSMenuItem
-
- menuItemOpenInXcode
+
+ menuItemShowInFinder
NSMenuItem
@@ -2215,8 +2245,8 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA
id
id
id
- id
- id
+ id
+ id
@@ -2231,12 +2261,12 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA
openErrorsPanel:
id
-
- openProjectInXcode:
+
+ openXcodeProject:
id
-
- resetProject:
+
+ synchronizeProject:
id