Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan McGovern <alan.mcgovern@gmail.com>2011-11-23 05:51:17 +0400
committerAlan McGovern <alan.mcgovern@gmail.com>2011-11-23 05:56:42 +0400
commit0f61195b85c1301e16fb120fc92d373378a4ef8a (patch)
tree07adbbbddda07b2df1372188e2411b5e33ee7d7e
parent29dd8167aee2319e7ebdf063988ef35eb5faebb9 (diff)
[MacDev] Fix a bug where a new xib/storyboard would not sync out
When we add files to a monomac/monotouch project while the project is open in xcode, we need to ensure that the freshly added files are synced to the *new* directory, not the old directory. We also need to ensure that xcode remains open after the sync happens.
-rw-r--r--main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeMonitor.cs18
-rw-r--r--main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeProjectTracker.cs3
-rw-r--r--main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeSyncContext.cs2
3 files changed, 19 insertions, 4 deletions
diff --git a/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeMonitor.cs b/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeMonitor.cs
index d47896e1ae..ee52421f36 100644
--- a/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeMonitor.cs
+++ b/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeMonitor.cs
@@ -46,7 +46,7 @@ namespace MonoDevelop.MacDev.XcodeSyncing
class XcodeMonitor
{
FilePath originalProjectDir;
- int nextHackDir = 0;
+ static int nextHackDir = 0;
string name;
FilePath xcproj, projectDir;
@@ -124,6 +124,7 @@ namespace MonoDevelop.MacDev.XcodeSyncing
if (removedOldProject) {
HackRelocateProject ();
+ ctx.ProjectDir = projectDir;
}
foreach (var item in items) {
@@ -142,6 +143,7 @@ namespace MonoDevelop.MacDev.XcodeSyncing
pendingProjectWrite = emptyProject;
}
+ OpenProject ();
monitor.EndTask ();
monitor.ReportSuccess (GettextCatalog.GetString ("Xcode project updated."));
}
@@ -335,6 +337,14 @@ namespace MonoDevelop.MacDev.XcodeSyncing
return success;
}
+ public bool OpenProject ()
+ {
+ SyncProject ();
+ var success = AppleScript.Run (XCODE_OPEN_PROJECT, AppleSdkSettings.XcodePath, projectDir) == "true";
+ XC4Debug.Log ("Opening project: {0}", success);
+ return success;
+ }
+
public bool CloseFile (string fileName)
{
if (!CheckRunning ())
@@ -344,6 +354,12 @@ namespace MonoDevelop.MacDev.XcodeSyncing
XC4Debug.Log ("Closing file {0}: {1}", fileName, success);
return success;
}
+
+ const string XCODE_OPEN_PROJECT =
+@"tell application ""{0}""
+ activate
+ open ""{1}""
+end tell";
const string XCODE_OPEN_PROJECT_FILE =
@"tell application ""{0}""
diff --git a/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeProjectTracker.cs b/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeProjectTracker.cs
index 02c06f5294..2592587be4 100644
--- a/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeProjectTracker.cs
+++ b/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeProjectTracker.cs
@@ -249,7 +249,6 @@ namespace MonoDevelop.MacDev.XcodeSyncing
continue;
if (finf.ProjectFile.BuildAction == BuildAction.Compile) {
updateTypes = true;
- break;
} else if (IncludeInSyncedProject (finf.ProjectFile)) {
updateProject = true;
}
@@ -259,7 +258,7 @@ namespace MonoDevelop.MacDev.XcodeSyncing
using (var monitor = GetStatusMonitor (GettextCatalog.GetString ("Syncing to Xcode..."))) {
//FIXME: make this async (and safely async)
//FIXME: only update the project if obj-c types change
- updateProject = UpdateTypes (monitor, true);
+ updateProject |= UpdateTypes (monitor, true);
}
}
diff --git a/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeSyncContext.cs b/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeSyncContext.cs
index a39fe1227c..6303d0457c 100644
--- a/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeSyncContext.cs
+++ b/main/src/addins/MonoDevelop.MacDev/XcodeSyncing/XcodeSyncContext.cs
@@ -47,7 +47,7 @@ namespace MonoDevelop.MacDev.XcodeSyncing
this.syncTimes = syncTimes;
}
- public FilePath ProjectDir { get; private set; }
+ public FilePath ProjectDir { get; set; }
public DateTime GetSyncTime (string relativeFilename)
{