diff options
136 files changed, 1280 insertions, 537 deletions
diff --git a/.gitignore b/.gitignore index e9ef5a9a19..7b4468d186 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ autom4te.cache/ *.dmg *.app *.user +*.tar.gz # Autogenerated stuff /local-config/ @@ -181,6 +182,7 @@ autom4te.cache/ #resharper *_Resharper.* +*.Resharper #dotCover *.dotCover diff --git a/extras/AspNetEdit/Makefile b/extras/AspNetEdit/Makefile index 296306ab79..7cf839226c 100644 --- a/extras/AspNetEdit/Makefile +++ b/extras/AspNetEdit/Makefile @@ -57,7 +57,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook distsir=$$distdir tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/extras/BooBinding/Makefile b/extras/BooBinding/Makefile index d2c7c130d4..5d33855081 100644 --- a/extras/BooBinding/Makefile +++ b/extras/BooBinding/Makefile @@ -57,7 +57,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook "distsir=$$distdir" tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/extras/GeckoWebBrowser/Makefile b/extras/GeckoWebBrowser/Makefile index faf1c84c2e..1de7bf9dc3 100644 --- a/extras/GeckoWebBrowser/Makefile +++ b/extras/GeckoWebBrowser/Makefile @@ -57,7 +57,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook distsir=$$distdir tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/extras/JavaBinding/Makefile b/extras/JavaBinding/Makefile index 5343478e03..d9576ce63e 100644 --- a/extras/JavaBinding/Makefile +++ b/extras/JavaBinding/Makefile @@ -57,7 +57,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook distsir=$$distdir tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/extras/MonoDevelop.AddinAuthoring/Makefile b/extras/MonoDevelop.AddinAuthoring/Makefile index 78bf4bab86..bc4decbc5f 100644 --- a/extras/MonoDevelop.AddinAuthoring/Makefile +++ b/extras/MonoDevelop.AddinAuthoring/Makefile @@ -57,7 +57,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook distsir=$$distdir tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/extras/MonoDevelop.Database/MonoDevelop.Database.Designer/MonoDevelop.Database.Designer.addin.xml b/extras/MonoDevelop.Database/MonoDevelop.Database.Designer/MonoDevelop.Database.Designer.addin.xml index eb714d33c0..2c35614d3b 100644 --- a/extras/MonoDevelop.Database/MonoDevelop.Database.Designer/MonoDevelop.Database.Designer.addin.xml +++ b/extras/MonoDevelop.Database/MonoDevelop.Database.Designer/MonoDevelop.Database.Designer.addin.xml @@ -20,4 +20,4 @@ <Addin id="Database.Sql" version="2.9.1"/> </Dependencies> -</Addin>
\ No newline at end of file +</Addin> diff --git a/extras/MonoDevelop.Database/MonoDevelop.Database.Query/MonoDevelop.Database.Query.addin.xml b/extras/MonoDevelop.Database/MonoDevelop.Database.Query/MonoDevelop.Database.Query.addin.xml index 7ae1aa8ebd..6379f0f0e3 100644 --- a/extras/MonoDevelop.Database/MonoDevelop.Database.Query/MonoDevelop.Database.Query.addin.xml +++ b/extras/MonoDevelop.Database/MonoDevelop.Database.Query/MonoDevelop.Database.Query.addin.xml @@ -19,7 +19,6 @@ <Addin id="Ide" version="2.9.1"/> <Addin id="Database.Sql" version="2.9.1"/> <Addin id="Database.Components" version="2.9.1"/> - </Dependencies> <ExtensionPoint path = "/MonoDevelop/Database/ToolBar/SqlQueryView"> diff --git a/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Firebird/MonoDevelop.Database.Sql.Firebird.addin.xml b/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Firebird/MonoDevelop.Database.Sql.Firebird.addin.xml index df0b56cdff..ebbba63fb8 100644 --- a/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Firebird/MonoDevelop.Database.Sql.Firebird.addin.xml +++ b/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Firebird/MonoDevelop.Database.Sql.Firebird.addin.xml @@ -21,4 +21,4 @@ <Extension path = "/Mono/Data/Sql"> <Class id = "Firebird" class = "MonoDevelop.Database.Sql.FirebirdDbFactory"/> </Extension> -</Addin>
\ No newline at end of file +</Addin> diff --git a/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Odbc/MonoDevelop.Database.Sql.Odbc.addin.xml b/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Odbc/MonoDevelop.Database.Sql.Odbc.addin.xml index 4f41904612..d4bc7a1964 100644 --- a/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Odbc/MonoDevelop.Database.Sql.Odbc.addin.xml +++ b/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Odbc/MonoDevelop.Database.Sql.Odbc.addin.xml @@ -25,4 +25,4 @@ <Extension path = "/MonoDevelop/Database/Sql"> <DatabaseFactory id = "Odbc" class = "MonoDevelop.Database.Sql.Odbc.OdbcDbFactory" /> </Extension> -</Addin>
\ No newline at end of file +</Addin> diff --git a/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Oracle/MonoDevelop.Database.Sql.Oracle.addin.xml b/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Oracle/MonoDevelop.Database.Sql.Oracle.addin.xml index 3d24dc77a5..25450669ba 100644 --- a/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Oracle/MonoDevelop.Database.Sql.Oracle.addin.xml +++ b/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Oracle/MonoDevelop.Database.Sql.Oracle.addin.xml @@ -25,4 +25,4 @@ <Extension path = "/MonoDevelop/Database/Sql"> <DatabaseFactory id = "Oracle" class = "MonoDevelop.Database.Sql.Oracle.OracleDbFactory" /> </Extension> -</Addin>
\ No newline at end of file +</Addin> diff --git a/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Sybase/MonoDevelop.Database.Sql.Sybase.addin.xml b/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Sybase/MonoDevelop.Database.Sql.Sybase.addin.xml index 89795d614d..1b1e25e8be 100644 --- a/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Sybase/MonoDevelop.Database.Sql.Sybase.addin.xml +++ b/extras/MonoDevelop.Database/MonoDevelop.Database.Sql.Sybase/MonoDevelop.Database.Sql.Sybase.addin.xml @@ -21,4 +21,4 @@ <Extension path = "/Mono/Data/Sql"> <Class id = "Sybase" class = "MonoDevelop.Database.Sql.SybaseDbFactory"/> </Extension> -</Addin>
\ No newline at end of file +</Addin> diff --git a/extras/MonoDevelop.Debugger.Gdb/Makefile b/extras/MonoDevelop.Debugger.Gdb/Makefile index 670757c56e..7731166148 100644 --- a/extras/MonoDevelop.Debugger.Gdb/Makefile +++ b/extras/MonoDevelop.Debugger.Gdb/Makefile @@ -58,7 +58,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook "distsir=$$distdir" tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/extras/MonoDevelop.Debugger.Mdb/Makefile b/extras/MonoDevelop.Debugger.Mdb/Makefile index 91a9968507..c1fcd3a8eb 100644 --- a/extras/MonoDevelop.Debugger.Mdb/Makefile +++ b/extras/MonoDevelop.Debugger.Mdb/Makefile @@ -56,7 +56,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook "distsir=$$distdir" tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs b/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs index ca4be568d4..29c85fc7f1 100644 --- a/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs +++ b/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs @@ -1126,7 +1126,7 @@ namespace MonoDevelop.Debugger.Win32 try {
if (thread.ActiveFrame == null)
return string.Empty;
- EvaluationOptions ops = Options.EvaluationOptions;
+ EvaluationOptions ops = Options.EvaluationOptions.Clone ();
ops.AllowTargetInvoke = true;
CorEvaluationContext ctx = new CorEvaluationContext (this, new CorBacktrace (thread, this), 0, ops);
ctx.Thread = thread;
diff --git a/extras/MonoDevelop.Profiling/MonoDevelop.Profiling.HeapBuddy/MonoDevelop.Profiling.HeapBuddy.addin.xml b/extras/MonoDevelop.Profiling/MonoDevelop.Profiling.HeapBuddy/MonoDevelop.Profiling.HeapBuddy.addin.xml index 992d2eb5bb..a9864b9fda 100644 --- a/extras/MonoDevelop.Profiling/MonoDevelop.Profiling.HeapBuddy/MonoDevelop.Profiling.HeapBuddy.addin.xml +++ b/extras/MonoDevelop.Profiling/MonoDevelop.Profiling.HeapBuddy/MonoDevelop.Profiling.HeapBuddy.addin.xml @@ -38,8 +38,8 @@ <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> </ExtensionPoint> - <Extension path = "/MonoDevelop/Profiling/Profilers">
- <Profiler class="MonoDevelop.Profiling.HeapBuddy.HeapBuddyProfiler" />
+ <Extension path = "/MonoDevelop/Profiling/Profilers"> + <Profiler class="MonoDevelop.Profiling.HeapBuddy.HeapBuddyProfiler" /> </Extension> <Extension path = "/MonoDevelop/Ide/Pads/MonoDevelop.Profiling.ProfilingPad"> @@ -54,4 +54,4 @@ <SeparatorItem id = "DeleteSeparator" /> <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> </Extension> -</Addin>
\ No newline at end of file +</Addin> diff --git a/extras/MonoDevelop.Profiling/MonoDevelop.Profiling.HeapShot/MonoDevelop.Profiling.HeapShot.addin.xml b/extras/MonoDevelop.Profiling/MonoDevelop.Profiling.HeapShot/MonoDevelop.Profiling.HeapShot.addin.xml index d4246c1b7a..b7ecc98478 100644 --- a/extras/MonoDevelop.Profiling/MonoDevelop.Profiling.HeapShot/MonoDevelop.Profiling.HeapShot.addin.xml +++ b/extras/MonoDevelop.Profiling/MonoDevelop.Profiling.HeapShot/MonoDevelop.Profiling.HeapShot.addin.xml @@ -23,8 +23,8 @@ <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> </ExtensionPoint> - <Extension path = "/MonoDevelop/Profiling/Profilers">
- <Profiler class="MonoDevelop.Profiling.HeapShot.HeapShotProfiler" />
+ <Extension path = "/MonoDevelop/Profiling/Profilers"> + <Profiler class="MonoDevelop.Profiling.HeapShot.HeapShotProfiler" /> </Extension> <Extension path = "/MonoDevelop/Profiling/FileFilters"> @@ -40,4 +40,4 @@ <SeparatorItem id = "DeleteSeparator" /> <CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Delete" /> </Extension> -</Addin>
\ No newline at end of file +</Addin> diff --git a/extras/MonoDevelop.Profiling/MonoDevelop.Profiling/MonoDevelop.Profiling.addin.xml b/extras/MonoDevelop.Profiling/MonoDevelop.Profiling/MonoDevelop.Profiling.addin.xml index 9db91490f2..2f2f02cd9c 100644 --- a/extras/MonoDevelop.Profiling/MonoDevelop.Profiling/MonoDevelop.Profiling.addin.xml +++ b/extras/MonoDevelop.Profiling/MonoDevelop.Profiling/MonoDevelop.Profiling.addin.xml @@ -37,12 +37,12 @@ <ExtensionNode name="FileFilter" type="MonoDevelop.Ide.Codons.FileFilterCodon"/> </ExtensionPoint> - <Extension path = "/MonoDevelop/Core/StockIcons">
- <StockIcon stockid = "md-prof-filter" resource = "Icons.16x16.Profiling.Filter.png" />
+ <Extension path = "/MonoDevelop/Core/StockIcons"> + <StockIcon stockid = "md-prof-filter" resource = "Icons.16x16.Profiling.Filter.png" /> <StockIcon stockid = "md-prof-snapshot" resource = "Icons.16x16.Profiling.Snapshot.png" /> - <StockIcon stockid = "md-prof-gc" resource = "Icons.16x16.Profiling.GC.png" />
+ <StockIcon stockid = "md-prof-gc" resource = "Icons.16x16.Profiling.GC.png" /> <StockIcon stockid = "md-prof-history" resource = "Icons.16x16.Profiling.History.png" /> - <StockIcon stockid = "md-prof-summary" resource = "Icons.16x16.Profiling.Summary.png" />
+ <StockIcon stockid = "md-prof-summary" resource = "Icons.16x16.Profiling.Summary.png" /> </Extension> <Extension path = "/MonoDevelop/Ide/WorkbenchContexts"> diff --git a/extras/PyBinding/Makefile b/extras/PyBinding/Makefile index 18396363f0..32d56f11de 100644 --- a/extras/PyBinding/Makefile +++ b/extras/PyBinding/Makefile @@ -56,7 +56,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook "distsir=$$distdir" tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/extras/PyBinding/PyBinding/Makefile b/extras/PyBinding/PyBinding/Makefile index 31c563a9b0..f2f98f2fc8 100644 --- a/extras/PyBinding/PyBinding/Makefile +++ b/extras/PyBinding/PyBinding/Makefile @@ -88,9 +88,11 @@ FILES = \ PyBinding.Parser/PythonResolver.cs \ PyBinding.Runtime/AbstractPythonRuntime.cs \ PyBinding.Runtime/IPythonRuntime.cs \ + PyBinding.Runtime/IronPythonRuntime.cs \ PyBinding.Runtime/Python25Runtime.cs \ PyBinding.Runtime/Python26Runtime.cs \ PyBinding.Runtime/Python27Runtime.cs \ + PyBinding/IronPythonExecutionHandler.cs \ PyBinding/PythonConfiguration.cs \ PyBinding/PythonExecutionCommand.cs \ PyBinding/PythonExecutionHandler.cs \ diff --git a/extras/PyBinding/PyBinding/PyBinding.Gui/PythonOptionsPanel.cs b/extras/PyBinding/PyBinding/PyBinding.Gui/PythonOptionsPanel.cs index deb787bf18..88258c98b5 100644 --- a/extras/PyBinding/PyBinding/PyBinding.Gui/PythonOptionsPanel.cs +++ b/extras/PyBinding/PyBinding/PyBinding.Gui/PythonOptionsPanel.cs @@ -53,9 +53,12 @@ namespace PyBinding.Gui { PythonConfiguration config = CurrentConfiguration as PythonConfiguration; + var runtime = widget.Runtime; + runtime.Path = widget.RuntimePath; + + config.Runtime = runtime; config.Module = widget.DefaultModule; config.Optimize = widget.Optimize; - config.Runtime = widget.Runtime; config.PythonOptions = widget.PythonOptions; var paths = new List<string> (widget.PythonPaths); diff --git a/extras/PyBinding/PyBinding/PyBinding.Gui/PythonOptionsWidget.cs b/extras/PyBinding/PyBinding/PyBinding.Gui/PythonOptionsWidget.cs index 5739f1261c..06fda7b544 100644 --- a/extras/PyBinding/PyBinding/PyBinding.Gui/PythonOptionsWidget.cs +++ b/extras/PyBinding/PyBinding/PyBinding.Gui/PythonOptionsWidget.cs @@ -60,6 +60,11 @@ namespace PyBinding.Gui m_RuntimeListStore.AppendValues ("Python 2.5", typeof (Python25Runtime)); m_RuntimeListStore.AppendValues ("Python 2.6", typeof (Python26Runtime)); m_RuntimeListStore.AppendValues ("Python 2.7", typeof (Python27Runtime)); + m_RuntimeListStore.AppendValues ("IronPython", typeof (IronPythonRuntime)); + + m_RuntimeCombo.Changed += delegate { + m_RuntimeFileEntry.Path = String.Empty; + }; } public string DefaultModule { @@ -131,12 +136,19 @@ namespace PyBinding.Gui Type t = this.m_RuntimeListStore.GetValue (iter, 1) as Type; if (t == value.GetType ()) { this.m_RuntimeCombo.SetActiveIter (iter); + this.m_RuntimeFileEntry.Path = value.Path; break; } } while (m_RuntimeListStore.IterNext (ref iter)); } } } + + public string RuntimePath { + get { + return m_RuntimeFileEntry.Path; + } + } protected virtual void AddPath_Clicked (object sender, System.EventArgs e) { diff --git a/extras/PyBinding/PyBinding/PyBinding.Runtime/AbstractPythonRuntime.cs b/extras/PyBinding/PyBinding/PyBinding.Runtime/AbstractPythonRuntime.cs index aabc0d3ab7..417748f03c 100644 --- a/extras/PyBinding/PyBinding/PyBinding.Runtime/AbstractPythonRuntime.cs +++ b/extras/PyBinding/PyBinding/PyBinding.Runtime/AbstractPythonRuntime.cs @@ -28,6 +28,7 @@ using System.Text; using MonoDevelop.Core; using MonoDevelop.Core.Serialization; +using MonoDevelop.Core.Execution; using MonoDevelop.Projects; using PyBinding; @@ -66,6 +67,7 @@ namespace PyBinding.Runtime public abstract object Clone (); public abstract string[] GetArguments (PythonConfiguration config); + public abstract IExecutionHandler GetExecutionHandler (); protected virtual string Resolve (string commandName) { diff --git a/extras/PyBinding/PyBinding/PyBinding.Runtime/IPythonRuntime.cs b/extras/PyBinding/PyBinding/PyBinding.Runtime/IPythonRuntime.cs index 3c1696d1c1..7a93c7b31b 100644 --- a/extras/PyBinding/PyBinding/PyBinding.Runtime/IPythonRuntime.cs +++ b/extras/PyBinding/PyBinding/PyBinding.Runtime/IPythonRuntime.cs @@ -21,6 +21,7 @@ // THE SOFTWARE. using System; +using MonoDevelop.Core.Execution; using PyBinding.Compiler; @@ -59,6 +60,11 @@ namespace PyBinding.Runtime } /// <summary> + /// Gets the associated execution handler for this specific runtime. + /// </summary> + IExecutionHandler GetExecutionHandler (); + + /// <summary> /// Builds a list of arguments to pass to the runtime for running /// a project with the passed configuration. /// </summary> diff --git a/extras/PyBinding/PyBinding/PyBinding.Runtime/IronPythonRuntime.cs b/extras/PyBinding/PyBinding/PyBinding.Runtime/IronPythonRuntime.cs new file mode 100644 index 0000000000..cc937b1928 --- /dev/null +++ b/extras/PyBinding/PyBinding/PyBinding.Runtime/IronPythonRuntime.cs @@ -0,0 +1,96 @@ +// IronPythonRuntime.cs +// +// Copyright (c) 2011 Carlos Alberto Cortez <calberto.cortez@gmail.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Collections.Generic; +using MonoDevelop.Core; +using MonoDevelop.Core.Execution; +using MonoDevelop.Core.Serialization; +using MonoDevelop.Projects; + +using PyBinding.Compiler; + +namespace PyBinding.Runtime +{ + public class IronPythonRuntime : AbstractPythonRuntime + { + static readonly string RuntimeName = "IronPython"; + + [ItemProperty ("path")] + string path = String.Empty; + + public override IPythonCompiler Compiler { + get { + return null; + } + } + + public override string Name { + get { + return RuntimeName; + } + } + + public override string Path { + get { + if (String.IsNullOrEmpty (path)) + path = Resolve ("ipy.exe"); + + return path; + } + set { + path = value; + } + } + + public override object Clone () + { + return new IronPythonRuntime () { + Path = path + }; + } + + IExecutionHandler handler; + + public override IExecutionHandler GetExecutionHandler () + { + if (handler == null) + handler = new IronPythonExecutionHandler (); + + return handler; + } + + + public override string[] GetArguments (PythonConfiguration config) + { + var args = new List<string> (); + + if (!String.IsNullOrEmpty (config.Module)) + args.Add (System.IO.Path.ChangeExtension (config.Module, "py")); + + if (!String.IsNullOrEmpty (config.CommandLineParameters)) + args.Add (config.CommandLineParameters); + + return args.ToArray (); + } + } +} + diff --git a/extras/PyBinding/PyBinding/PyBinding.Runtime/Python25Runtime.cs b/extras/PyBinding/PyBinding/PyBinding.Runtime/Python25Runtime.cs index 2235a0d838..0813ef9722 100644 --- a/extras/PyBinding/PyBinding/PyBinding.Runtime/Python25Runtime.cs +++ b/extras/PyBinding/PyBinding/PyBinding.Runtime/Python25Runtime.cs @@ -25,6 +25,7 @@ using System.Collections.Generic; using System.IO; using MonoDevelop.Core; +using MonoDevelop.Core.Execution; using MonoDevelop.Projects; using MonoDevelop.Core.Serialization; using MonoDevelop.Projects.CodeGeneration; @@ -81,6 +82,16 @@ namespace PyBinding.Runtime }; } + IExecutionHandler handler; + + public override IExecutionHandler GetExecutionHandler () + { + if (handler == null) + handler = new CPythonExecutionHandler (); + + return handler; + } + public override string[] GetArguments (PythonConfiguration config) { List<string> args = new List<string> (); diff --git a/extras/PyBinding/PyBinding/PyBinding.Runtime/Python26Runtime.cs b/extras/PyBinding/PyBinding/PyBinding.Runtime/Python26Runtime.cs index 346718bb83..f044fb4fa5 100644 --- a/extras/PyBinding/PyBinding/PyBinding.Runtime/Python26Runtime.cs +++ b/extras/PyBinding/PyBinding/PyBinding.Runtime/Python26Runtime.cs @@ -25,6 +25,7 @@ using System.Collections.Generic; using System.IO; using MonoDevelop.Core; +using MonoDevelop.Core.Execution; using MonoDevelop.Projects; using MonoDevelop.Core.Serialization; using MonoDevelop.Projects.CodeGeneration; @@ -81,6 +82,16 @@ namespace PyBinding.Runtime Path = this.Path }; } + + IExecutionHandler handler; + + public override IExecutionHandler GetExecutionHandler () + { + if (handler == null) + handler = new CPythonExecutionHandler (); + + return handler; + } public override string[] GetArguments (PythonConfiguration config) { diff --git a/extras/PyBinding/PyBinding/PyBinding.Runtime/Python27Runtime.cs b/extras/PyBinding/PyBinding/PyBinding.Runtime/Python27Runtime.cs index 27260a34e7..860aed7120 100644 --- a/extras/PyBinding/PyBinding/PyBinding.Runtime/Python27Runtime.cs +++ b/extras/PyBinding/PyBinding/PyBinding.Runtime/Python27Runtime.cs @@ -26,6 +26,7 @@ using System.Collections.Generic; using System.IO; using MonoDevelop.Core; +using MonoDevelop.Core.Execution; using MonoDevelop.Projects; using MonoDevelop.Core.Serialization; using MonoDevelop.Projects.CodeGeneration; @@ -82,6 +83,16 @@ namespace PyBinding.Runtime Path = this.Path }; } + + IExecutionHandler handler; + + public override IExecutionHandler GetExecutionHandler () + { + if (handler == null) + handler = new CPythonExecutionHandler (); + + return handler; + } public override string[] GetArguments (PythonConfiguration config) { diff --git a/extras/PyBinding/PyBinding/PyBinding.addin.xml b/extras/PyBinding/PyBinding/PyBinding.addin.xml index e2f846118e..e54d186fa1 100644 --- a/extras/PyBinding/PyBinding/PyBinding.addin.xml +++ b/extras/PyBinding/PyBinding/PyBinding.addin.xml @@ -99,6 +99,7 @@ <DataType class = "PyBinding.Runtime.Python25Runtime"/> <DataType class = "PyBinding.Runtime.Python26Runtime"/> <DataType class = "PyBinding.Runtime.Python27Runtime"/> + <DataType class = "PyBinding.Runtime.IronPythonRuntime"/> <DataType class = "PyBinding.Compiler.Python25Compiler"/> </Extension> diff --git a/extras/PyBinding/PyBinding/PyBinding.csproj b/extras/PyBinding/PyBinding/PyBinding.csproj index 95d5ee4570..364fc4382e 100644 --- a/extras/PyBinding/PyBinding/PyBinding.csproj +++ b/extras/PyBinding/PyBinding/PyBinding.csproj @@ -183,6 +183,8 @@ <Compile Include="PyBinding.Parser\PythonResolver.cs" /> <Compile Include="PyBinding.Parser\PythonExpressionFinder.cs" /> <Compile Include="PyBinding.Runtime\Python27Runtime.cs" /> + <Compile Include="PyBinding.Runtime\IronPythonRuntime.cs" /> + <Compile Include="PyBinding\IronPythonExecutionHandler.cs" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="Resources\EmptyPyProject.xpt.xml"> @@ -245,4 +247,4 @@ </Properties> </MonoDevelop> </ProjectExtensions> -</Project>
\ No newline at end of file +</Project> diff --git a/extras/PyBinding/PyBinding/PyBinding/IronPythonExecutionHandler.cs b/extras/PyBinding/PyBinding/PyBinding/IronPythonExecutionHandler.cs new file mode 100644 index 0000000000..2d066bc59c --- /dev/null +++ b/extras/PyBinding/PyBinding/PyBinding/IronPythonExecutionHandler.cs @@ -0,0 +1,51 @@ +// IronPythonExecutionHandler.cs +// +// Copyright (c) 2011 Carlos Alberto Cortez <calberto.cortez@gmail.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using System; +using System.IO; +using MonoDevelop.Core; +using MonoDevelop.Core.Execution; + +using PyBinding.Runtime; + +namespace PyBinding +{ + public class IronPythonExecutionHandler : IExecutionHandler + { + public bool CanExecute (ExecutionCommand command) + { + return command is PythonExecutionCommand; + } + + public IProcessAsyncOperation Execute (ExecutionCommand command, IConsole console) + { + var config = ((PythonExecutionCommand)command).Configuration; + var runtime = (IronPythonRuntime)config.Runtime; + + var args = runtime.GetArguments (config); + string dir = Path.GetFullPath (config.ParentItem.BaseDirectory); + + var cmd = new DotNetExecutionCommand (runtime.Path, String.Join (" ", args), dir, config.EnvironmentVariables); + return cmd.TargetRuntime.GetExecutionHandler ().Execute (cmd, console); + } + } +} diff --git a/extras/PyBinding/PyBinding/PyBinding/PythonExecutionHandler.cs b/extras/PyBinding/PyBinding/PyBinding/PythonExecutionHandler.cs index e9a4b9ce06..dd718f880b 100644 --- a/extras/PyBinding/PyBinding/PyBinding/PythonExecutionHandler.cs +++ b/extras/PyBinding/PyBinding/PyBinding/PythonExecutionHandler.cs @@ -30,7 +30,23 @@ using MonoDevelop.Core.Execution; namespace PyBinding { - public class PythonExecutionHandler: NativePlatformExecutionHandler + public class PythonExecutionHandler: IExecutionHandler + { + public bool CanExecute (ExecutionCommand command) + { + return command is PythonExecutionCommand; + } + + public IProcessAsyncOperation Execute (ExecutionCommand command, IConsole console) + { + var config = ((PythonExecutionCommand)command).Configuration; + return config.Runtime.GetExecutionHandler ().Execute (command, console); + } + + } + + // This is our default handler (used by Python2.5/2.6/2.7) + public class CPythonExecutionHandler : NativePlatformExecutionHandler { public override bool CanExecute (ExecutionCommand command) { @@ -38,11 +54,11 @@ namespace PyBinding } public override IProcessAsyncOperation Execute (ExecutionCommand command, IConsole console) - { + { PythonExecutionCommand cmd = (PythonExecutionCommand) command; string[] args = cmd.Configuration.Runtime.GetArguments (cmd.Configuration); - string dir = Path.GetFullPath (cmd.Configuration.OutputDirectory); + string dir = Path.GetFullPath (cmd.Configuration.OutputDirectory); NativeExecutionCommand ncmd = new NativeExecutionCommand (cmd.Configuration.Runtime.Path, string.Join (" ", args), dir, cmd.Configuration.EnvironmentVariables); return base.Execute (ncmd, console); diff --git a/extras/PyBinding/PyBinding/PyBinding/PythonHelper.cs b/extras/PyBinding/PyBinding/PyBinding/PythonHelper.cs index 194755229c..7fb3cb575d 100644 --- a/extras/PyBinding/PyBinding/PyBinding/PythonHelper.cs +++ b/extras/PyBinding/PyBinding/PyBinding/PythonHelper.cs @@ -129,6 +129,13 @@ namespace PyBinding } catch {} + try { + return new IronPythonRuntime () { + Path = Which ("ipy.exe") + }; + } + catch {} + // look for "python" and what version it is return null; @@ -145,4 +152,4 @@ namespace PyBinding throw new FileNotFoundException ("Could not locate python executable"); } } -}
\ No newline at end of file +} diff --git a/extras/PyBinding/PyBinding/gtk-gui/PyBinding.Gui.PythonOptionsWidget.cs b/extras/PyBinding/PyBinding/gtk-gui/PyBinding.Gui.PythonOptionsWidget.cs index b50687ed13..ac6a20136c 100644 --- a/extras/PyBinding/PyBinding/gtk-gui/PyBinding.Gui.PythonOptionsWidget.cs +++ b/extras/PyBinding/PyBinding/gtk-gui/PyBinding.Gui.PythonOptionsWidget.cs @@ -5,41 +5,26 @@ namespace PyBinding.Gui public partial class PythonOptionsWidget { private global::Gtk.VBox vbox1; - private global::Gtk.Label label1; - private global::Gtk.Alignment alignment1; - private global::Gtk.Table table1; - + private global::Gtk.Label label2; private global::Gtk.Label label4; - private global::Gtk.Label label5; - private global::Gtk.Entry m_ModuleEntry; - private global::Gtk.CheckButton m_OptimizeCheckBox; - private global::Gtk.Entry m_PythonOptions; - private global::Gtk.ComboBox m_RuntimeCombo; - + private global::MonoDevelop.Components.FileEntry m_RuntimeFileEntry; private global::Gtk.Label label3; - private global::Gtk.Alignment alignment2; - private global::Gtk.HBox hbox1; - private global::Gtk.ScrolledWindow scrolledwindow1; - private global::Gtk.TreeView m_PathsTreeView; - private global::Gtk.VBox vbox2; - private global::Gtk.Button m_AddPathButton; - private global::Gtk.Button m_RemovePathButton; - + protected virtual void Build () { global::Stetic.Gui.Initialize (this); @@ -53,45 +38,55 @@ namespace PyBinding.Gui // Container child vbox1.Gtk.Box+BoxChild this.label1 = new global::Gtk.Label (); this.label1.Name = "label1"; - this.label1.Xalign = 0f; + this.label1.Xalign = 0F; this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("<span weight=\"bold\">Runtime</span>"); this.label1.UseMarkup = true; this.vbox1.Add (this.label1); - global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.label1])); + global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.label1])); w1.Position = 0; w1.Expand = false; w1.Fill = false; // Container child vbox1.Gtk.Box+BoxChild - this.alignment1 = new global::Gtk.Alignment (0.5f, 0.5f, 1f, 1f); + this.alignment1 = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F); this.alignment1.Name = "alignment1"; this.alignment1.LeftPadding = ((uint)(12)); // Container child alignment1.Gtk.Container+ContainerChild - this.table1 = new global::Gtk.Table (((uint)(5)), ((uint)(2)), false); + this.table1 = new global::Gtk.Table (((uint)(6)), ((uint)(2)), false); this.table1.Name = "table1"; this.table1.RowSpacing = ((uint)(6)); this.table1.ColumnSpacing = ((uint)(6)); // Container child table1.Gtk.Table+TableChild + this.label2 = new global::Gtk.Label (); + this.label2.Name = "label2"; + this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Runtime location:"); + this.table1.Add (this.label2); + global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.label2])); + w2.TopAttach = ((uint)(1)); + w2.BottomAttach = ((uint)(2)); + w2.XOptions = ((global::Gtk.AttachOptions)(4)); + w2.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild this.label4 = new global::Gtk.Label (); this.label4.Name = "label4"; this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("Python _Options:"); this.label4.UseUnderline = true; this.table1.Add (this.label4); - global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1[this.label4])); - w2.TopAttach = ((uint)(1)); - w2.BottomAttach = ((uint)(2)); - w2.XOptions = ((global::Gtk.AttachOptions)(4)); - w2.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.label4])); + w3.TopAttach = ((uint)(2)); + w3.BottomAttach = ((uint)(3)); + w3.XOptions = ((global::Gtk.AttachOptions)(4)); + w3.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.label5 = new global::Gtk.Label (); this.label5.Name = "label5"; this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Default _Module:"); this.label5.UseUnderline = true; this.table1.Add (this.label5); - global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1[this.label5])); - w3.TopAttach = ((uint)(2)); - w3.BottomAttach = ((uint)(3)); - w3.XOptions = ((global::Gtk.AttachOptions)(4)); - w3.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.label5])); + w4.TopAttach = ((uint)(3)); + w4.BottomAttach = ((uint)(4)); + w4.XOptions = ((global::Gtk.AttachOptions)(4)); + w4.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.m_ModuleEntry = new global::Gtk.Entry (); this.m_ModuleEntry.CanFocus = true; @@ -99,12 +94,12 @@ namespace PyBinding.Gui this.m_ModuleEntry.IsEditable = true; this.m_ModuleEntry.InvisibleChar = '●'; this.table1.Add (this.m_ModuleEntry); - global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1[this.m_ModuleEntry])); - w4.TopAttach = ((uint)(2)); - w4.BottomAttach = ((uint)(3)); - w4.LeftAttach = ((uint)(1)); - w4.RightAttach = ((uint)(2)); - w4.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.m_ModuleEntry])); + w5.TopAttach = ((uint)(3)); + w5.BottomAttach = ((uint)(4)); + w5.LeftAttach = ((uint)(1)); + w5.RightAttach = ((uint)(2)); + w5.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.m_OptimizeCheckBox = new global::Gtk.CheckButton (); this.m_OptimizeCheckBox.CanFocus = true; @@ -113,11 +108,11 @@ namespace PyBinding.Gui this.m_OptimizeCheckBox.DrawIndicator = true; this.m_OptimizeCheckBox.UseUnderline = true; this.table1.Add (this.m_OptimizeCheckBox); - global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1[this.m_OptimizeCheckBox])); - w5.TopAttach = ((uint)(3)); - w5.BottomAttach = ((uint)(4)); - w5.RightAttach = ((uint)(2)); - w5.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.m_OptimizeCheckBox])); + w6.TopAttach = ((uint)(4)); + w6.BottomAttach = ((uint)(5)); + w6.RightAttach = ((uint)(2)); + w6.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.m_PythonOptions = new global::Gtk.Entry (); this.m_PythonOptions.CanFocus = true; @@ -125,39 +120,50 @@ namespace PyBinding.Gui this.m_PythonOptions.IsEditable = true; this.m_PythonOptions.InvisibleChar = '●'; this.table1.Add (this.m_PythonOptions); - global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1[this.m_PythonOptions])); - w6.TopAttach = ((uint)(1)); - w6.BottomAttach = ((uint)(2)); - w6.LeftAttach = ((uint)(1)); - w6.RightAttach = ((uint)(2)); - w6.XOptions = ((global::Gtk.AttachOptions)(4)); - w6.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 [this.m_PythonOptions])); + w7.TopAttach = ((uint)(2)); + w7.BottomAttach = ((uint)(3)); + w7.LeftAttach = ((uint)(1)); + w7.RightAttach = ((uint)(2)); + w7.XOptions = ((global::Gtk.AttachOptions)(4)); + w7.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.m_RuntimeCombo = global::Gtk.ComboBox.NewText (); this.m_RuntimeCombo.Name = "m_RuntimeCombo"; this.table1.Add (this.m_RuntimeCombo); - global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1[this.m_RuntimeCombo])); - w7.RightAttach = ((uint)(2)); - w7.XOptions = ((global::Gtk.AttachOptions)(4)); - w7.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table1 [this.m_RuntimeCombo])); + w8.RightAttach = ((uint)(2)); + w8.XOptions = ((global::Gtk.AttachOptions)(4)); + w8.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.m_RuntimeFileEntry = new global::MonoDevelop.Components.FileEntry (); + this.m_RuntimeFileEntry.Name = "m_RuntimeFileEntry"; + this.table1.Add (this.m_RuntimeFileEntry); + global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table1 [this.m_RuntimeFileEntry])); + w9.TopAttach = ((uint)(1)); + w9.BottomAttach = ((uint)(2)); + w9.LeftAttach = ((uint)(1)); + w9.RightAttach = ((uint)(2)); + w9.XOptions = ((global::Gtk.AttachOptions)(4)); + w9.YOptions = ((global::Gtk.AttachOptions)(4)); this.alignment1.Add (this.table1); this.vbox1.Add (this.alignment1); - global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.alignment1])); - w9.Position = 1; - w9.Expand = false; + global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.alignment1])); + w11.Position = 1; + w11.Expand = false; // Container child vbox1.Gtk.Box+BoxChild this.label3 = new global::Gtk.Label (); this.label3.Name = "label3"; - this.label3.Xalign = 0f; + this.label3.Xalign = 0F; this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("<span weight=\"bold\">Module Paths</span>"); this.label3.UseMarkup = true; this.vbox1.Add (this.label3); - global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.label3])); - w10.Position = 2; - w10.Expand = false; - w10.Fill = false; + global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.label3])); + w12.Position = 2; + w12.Expand = false; + w12.Fill = false; // Container child vbox1.Gtk.Box+BoxChild - this.alignment2 = new global::Gtk.Alignment (0.5f, 0.5f, 1f, 1f); + this.alignment2 = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F); this.alignment2.Name = "alignment2"; this.alignment2.LeftPadding = ((uint)(12)); // Container child alignment2.Gtk.Container+ContainerChild @@ -170,17 +176,17 @@ namespace PyBinding.Gui this.scrolledwindow1.Name = "scrolledwindow1"; this.scrolledwindow1.ShadowType = ((global::Gtk.ShadowType)(1)); // Container child scrolledwindow1.Gtk.Container+ContainerChild - global::Gtk.Viewport w11 = new global::Gtk.Viewport (); - w11.ShadowType = ((global::Gtk.ShadowType)(0)); + global::Gtk.Viewport w13 = new global::Gtk.Viewport (); + w13.ShadowType = ((global::Gtk.ShadowType)(0)); // Container child GtkViewport.Gtk.Container+ContainerChild this.m_PathsTreeView = new global::Gtk.TreeView (); this.m_PathsTreeView.CanFocus = true; this.m_PathsTreeView.Name = "m_PathsTreeView"; - w11.Add (this.m_PathsTreeView); - this.scrolledwindow1.Add (w11); + w13.Add (this.m_PathsTreeView); + this.scrolledwindow1.Add (w13); this.hbox1.Add (this.scrolledwindow1); - global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.scrolledwindow1])); - w14.Position = 0; + global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.scrolledwindow1])); + w16.Position = 0; // Container child hbox1.Gtk.Box+BoxChild this.vbox2 = new global::Gtk.VBox (); this.vbox2.Name = "vbox2"; @@ -193,10 +199,10 @@ namespace PyBinding.Gui this.m_AddPathButton.UseUnderline = true; this.m_AddPathButton.Label = "gtk-add"; this.vbox2.Add (this.m_AddPathButton); - global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.m_AddPathButton])); - w15.Position = 0; - w15.Expand = false; - w15.Fill = false; + global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.m_AddPathButton])); + w17.Position = 0; + w17.Expand = false; + w17.Fill = false; // Container child vbox2.Gtk.Box+BoxChild this.m_RemovePathButton = new global::Gtk.Button (); this.m_RemovePathButton.Sensitive = false; @@ -206,23 +212,24 @@ namespace PyBinding.Gui this.m_RemovePathButton.UseUnderline = true; this.m_RemovePathButton.Label = "gtk-remove"; this.vbox2.Add (this.m_RemovePathButton); - global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.m_RemovePathButton])); - w16.Position = 1; - w16.Expand = false; - w16.Fill = false; + global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.m_RemovePathButton])); + w18.Position = 1; + w18.Expand = false; + w18.Fill = false; this.hbox1.Add (this.vbox2); - global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.vbox2])); - w17.Position = 1; - w17.Expand = false; - w17.Fill = false; + global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox2])); + w19.Position = 1; + w19.Expand = false; + w19.Fill = false; this.alignment2.Add (this.hbox1); this.vbox1.Add (this.alignment2); - global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.alignment2])); - w19.Position = 3; + global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.alignment2])); + w21.Position = 3; this.Add (this.vbox1); if ((this.Child != null)) { this.Child.ShowAll (); } + this.label2.MnemonicWidget = this.alignment2; this.label4.MnemonicWidget = this.m_PythonOptions; this.label5.MnemonicWidget = this.m_ModuleEntry; this.Show (); diff --git a/extras/PyBinding/PyBinding/gtk-gui/gui.stetic b/extras/PyBinding/PyBinding/gtk-gui/gui.stetic index d849edb1b8..36ebd72825 100644 --- a/extras/PyBinding/PyBinding/gtk-gui/gui.stetic +++ b/extras/PyBinding/PyBinding/gtk-gui/gui.stetic @@ -6,28 +6,24 @@ </configuration> <import> <widget-library name="Mono.TextEditor, Version=1.0.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Gettext, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Ide, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Projects.Gui, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Components, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.GtkCore, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Core.Gui, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Autotools, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.SourceEditor2, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Debugger, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Refactoring, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.VersionControl, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.NUnit, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.XmlEditor, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.AspNet, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Deployment, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Deployment.Linux, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.DesignerSupport, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.VBNetBinding, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.CBinding, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.CSharpBinding, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Moonlight, Version=2.2.0.0, Culture=neutral" /> - <widget-library name="MonoDevelop.Debugger.Soft, Version=2.2.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.Gettext, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.Ide, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.GtkCore, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.SourceEditor2, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.Debugger, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.Refactoring, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.VersionControl, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.NUnit, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.XmlEditor, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.AspNet, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.Deployment, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.Deployment.Linux, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.DesignerSupport, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.VBNetBinding, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.CBinding, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.CSharpBinding, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.Moonlight, Version=2.6.0.0, Culture=neutral" /> + <widget-library name="MonoDevelop.Debugger.Soft, Version=2.6.0.0, Culture=neutral" /> <widget-library name="../../build/PyBinding.dll" internal="true" /> </import> <widget class="Gtk.Bin" id="PyBinding.Gui.PythonOptionsWidget" design-size="491 382"> @@ -57,7 +53,7 @@ <child> <widget class="Gtk.Table" id="table1"> <property name="MemberName" /> - <property name="NRows">5</property> + <property name="NRows">6</property> <property name="NColumns">2</property> <property name="RowSpacing">6</property> <property name="ColumnSpacing">6</property> @@ -68,6 +64,26 @@ <placeholder /> </child> <child> + <widget class="Gtk.Label" id="label2"> + <property name="MemberName" /> + <property name="LabelProp" translatable="yes">Runtime location:</property> + <property name="MnemonicWidget">alignment2</property> + </widget> + <packing> + <property name="TopAttach">1</property> + <property name="BottomAttach">2</property> + <property name="AutoSize">True</property> + <property name="XOptions">Fill</property> + <property name="YOptions">Fill</property> + <property name="XExpand">False</property> + <property name="XFill">True</property> + <property name="XShrink">False</property> + <property name="YExpand">False</property> + <property name="YFill">True</property> + <property name="YShrink">False</property> + </packing> + </child> + <child> <widget class="Gtk.Label" id="label4"> <property name="MemberName" /> <property name="LabelProp" translatable="yes">Python _Options:</property> @@ -75,8 +91,8 @@ <property name="MnemonicWidget">m_PythonOptions</property> </widget> <packing> - <property name="TopAttach">1</property> - <property name="BottomAttach">2</property> + <property name="TopAttach">2</property> + <property name="BottomAttach">3</property> <property name="AutoSize">True</property> <property name="XOptions">Fill</property> <property name="YOptions">Fill</property> @@ -96,8 +112,8 @@ <property name="MnemonicWidget">m_ModuleEntry</property> </widget> <packing> - <property name="TopAttach">2</property> - <property name="BottomAttach">3</property> + <property name="TopAttach">3</property> + <property name="BottomAttach">4</property> <property name="AutoSize">False</property> <property name="XOptions">Fill</property> <property name="YOptions">Fill</property> @@ -117,8 +133,8 @@ <property name="InvisibleChar">●</property> </widget> <packing> - <property name="TopAttach">2</property> - <property name="BottomAttach">3</property> + <property name="TopAttach">3</property> + <property name="BottomAttach">4</property> <property name="LeftAttach">1</property> <property name="RightAttach">2</property> <property name="AutoSize">False</property> @@ -141,8 +157,8 @@ <property name="UseUnderline">True</property> </widget> <packing> - <property name="TopAttach">3</property> - <property name="BottomAttach">4</property> + <property name="TopAttach">4</property> + <property name="BottomAttach">5</property> <property name="RightAttach">2</property> <property name="AutoSize">False</property> <property name="YOptions">Fill</property> @@ -162,8 +178,8 @@ <property name="InvisibleChar">●</property> </widget> <packing> - <property name="TopAttach">1</property> - <property name="BottomAttach">2</property> + <property name="TopAttach">2</property> + <property name="BottomAttach">3</property> <property name="LeftAttach">1</property> <property name="RightAttach">2</property> <property name="AutoSize">True</property> @@ -196,6 +212,26 @@ <property name="YShrink">False</property> </packing> </child> + <child> + <widget class="MonoDevelop.Components.FileEntry" id="m_RuntimeFileEntry"> + <property name="MemberName" /> + </widget> + <packing> + <property name="TopAttach">1</property> + <property name="BottomAttach">2</property> + <property name="LeftAttach">1</property> + <property name="RightAttach">2</property> + <property name="AutoSize">True</property> + <property name="XOptions">Fill</property> + <property name="YOptions">Fill</property> + <property name="XExpand">False</property> + <property name="XFill">True</property> + <property name="XShrink">False</property> + <property name="YExpand">False</property> + <property name="YFill">True</property> + <property name="YShrink">False</property> + </packing> + </child> </widget> </child> </widget> diff --git a/extras/WebKitWebBrowser/Makefile b/extras/WebKitWebBrowser/Makefile index b17cc863e9..f60f1c4e1a 100644 --- a/extras/WebKitWebBrowser/Makefile +++ b/extras/WebKitWebBrowser/Makefile @@ -57,7 +57,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook distsir=$$distdir tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/main/Main.sln b/main/Main.sln index 16e64876f1..27c5e248ac 100644 --- a/main/Main.sln +++ b/main/Main.sln @@ -195,6 +195,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{78C10DAE EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "tests\UnitTests\UnitTests.csproj", "{1497D0A8-AFF1-4938-BC22-BE79B358BA5B}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UserInterfaceTests", "tests\UserInterfaceTests\UserInterfaceTests.csproj", "{07F55155-51A8-4072-9F80-FA473666F086}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -228,6 +230,18 @@ Global {07CC7654-27D6-421D-A64C-0FFA40456FA2}.DebugWin32|x86.Build.0 = Debug|Any CPU
{07CC7654-27D6-421D-A64C-0FFA40456FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{07CC7654-27D6-421D-A64C-0FFA40456FA2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.Debug|x86.Build.0 = Debug|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.DebugMac|Any CPU.ActiveCfg = Debug|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.DebugMac|Any CPU.Build.0 = Debug|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.DebugWin32|x86.ActiveCfg = Debug|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.DebugWin32|x86.Build.0 = Debug|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.Release|Any CPU.Build.0 = Release|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.Release|x86.ActiveCfg = Release|Any CPU
+ {07F55155-51A8-4072-9F80-FA473666F086}.Release|x86.Build.0 = Release|Any CPU
{0AF16AF1-0876-413E-9803-08BD33C19E00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0AF16AF1-0876-413E-9803-08BD33C19E00}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0AF16AF1-0876-413E-9803-08BD33C19E00}.DebugMac|Any CPU.ActiveCfg = Debug|Any CPU
@@ -899,6 +913,7 @@ Global {D90DF5C6-0ABE-4E13-930D-C3AE95FBE5C4} = {5D3F7E65-E55B-45CA-A83B-D1E10040281E}
{E414CD46-33C8-4CE1-986F-B601F941EBB9} = {5D3F7E65-E55B-45CA-A83B-D1E10040281E}
{1497D0A8-AFF1-4938-BC22-BE79B358BA5B} = {78C10DAE-D3D7-44FC-93DF-831D8D54ECF9}
+ {07F55155-51A8-4072-9F80-FA473666F086} = {78C10DAE-D3D7-44FC-93DF-831D8D54ECF9}
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
StartupItem = src\core\MonoDevelop.Startup\MonoDevelop.Startup.csproj
diff --git a/main/build/MacOSX/release-info b/main/build/MacOSX/release-info index 7d1ddcf456..889c8bf7f0 100644 --- a/main/build/MacOSX/release-info +++ b/main/build/MacOSX/release-info @@ -1 +1,2 @@ 20901000 + diff --git a/main/contrib/Mono.Cecil/Mono.Cecil.Mdb.csproj b/main/contrib/Mono.Cecil/Mono.Cecil.Mdb.csproj index 657762bb75..2cd015d91e 100644 --- a/main/contrib/Mono.Cecil/Mono.Cecil.Mdb.csproj +++ b/main/contrib/Mono.Cecil/Mono.Cecil.Mdb.csproj @@ -42,10 +42,6 @@ <Content Include="Mono.Cecil.Mdb\Mono.Cecil.Mdb.dll.sources" /> </ItemGroup> <ItemGroup> - <None Include="Mono.CompilerServices.SymbolWriter\ChangeLog" /> - <None Include="ChangeLog" /> - </ItemGroup> - <ItemGroup> <Compile Include="Mono.Cecil.Mdb\Mono.Cecil.Mdb\AssemblyInfo.cs" /> <Compile Include="Mono.Cecil.Mdb\Mono.Cecil.Mdb\MdbReader.cs" /> <Compile Include="Mono.Cecil.Mdb\Mono.Cecil.Mdb\MdbWriter.cs" /> diff --git a/main/contrib/Mono.Cecil/Mono.Cecil.csproj b/main/contrib/Mono.Cecil/Mono.Cecil.csproj index 574f375bae..92327813ec 100644 --- a/main/contrib/Mono.Cecil/Mono.Cecil.csproj +++ b/main/contrib/Mono.Cecil/Mono.Cecil.csproj @@ -38,7 +38,6 @@ <DefineConstants>NET_3_5</DefineConstants> </PropertyGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="cecil.snk" /> </ItemGroup> <ItemGroup> diff --git a/main/contrib/Mono.Debugger.Soft/Locale.cs b/main/contrib/Mono.Debugger.Soft/Locale.cs new file mode 100644 index 0000000000..7293ab2daf --- /dev/null +++ b/main/contrib/Mono.Debugger.Soft/Locale.cs @@ -0,0 +1,51 @@ +// +// Locale.cs +// +// Author: +// Miguel de Icaza (miguel@ximian.com) +// Andreas Nahr (ClassDevelopment@A-SoftTech.com) +// +// (C) 2001 - 2003 Ximian, Inc (http://www.ximian.com) +// + +// +// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System; + +internal sealed class Locale { + + private Locale () + { + } + + public static string GetText (string msg) + { + return msg; + } + + public static string GetText (string fmt, params object [] args) + { + return String.Format (fmt, args); + } +} diff --git a/main/contrib/Mono.Debugger.Soft/Makefile.am b/main/contrib/Mono.Debugger.Soft/Makefile.am index e32fc147c2..67fb3f2e59 100644 --- a/main/contrib/Mono.Debugger.Soft/Makefile.am +++ b/main/contrib/Mono.Debugger.Soft/Makefile.am @@ -10,6 +10,7 @@ DEPS = ../../build/bin/Mono.Cecil.dll SIGNING_KEY=$(srcdir)/mono.snk FILES = \ + Locale.cs \ Mono.Debugger.Soft/AbsentInformationException.cs \ Mono.Debugger.Soft/AppDomainCreateEvent.cs \ Mono.Debugger.Soft/AppDomainMirror.cs \ diff --git a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft.csproj b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft.csproj index 1a84d282d1..9cf873e765 100644 --- a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft.csproj +++ b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft.csproj @@ -105,9 +105,9 @@ <Compile Include="Mono.Debugger.Soft\VMMismatchException.cs" /> <Compile Include="Mono.Debugger.Soft\VMStartEvent.cs" /> <Compile Include="Mono.Debugger.Soft\AssemblyLoadEventRequest.cs" /> + <Compile Include="Locale.cs" /> </ItemGroup> <ItemGroup> - <None Include="Mono.Debugger.Soft\ChangeLog" /> <None Include="Makefile.am" /> <None Include="mono-git-revision" /> </ItemGroup> @@ -136,4 +136,4 @@ </Properties> </MonoDevelop> </ProjectExtensions> -</Project>
\ No newline at end of file +</Project> diff --git a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs index c8b3132f1a..c4ee6a5be7 100644 --- a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs +++ b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs @@ -353,7 +353,7 @@ namespace Mono.Debugger.Soft * with newer runtimes, and vice versa. */ internal const int MAJOR_VERSION = 2; - internal const int MINOR_VERSION = 9; + internal const int MINOR_VERSION = 10; enum WPSuspendPolicy { NONE = 0, @@ -515,7 +515,9 @@ namespace Mono.Debugger.Soft } enum CmdStringRef { - GET_VALUE = 1 + GET_VALUE = 1, + GET_LENGTH = 2, + GET_CHARS = 3 } enum CmdObjectRef { @@ -2055,6 +2057,18 @@ namespace Mono.Debugger.Soft return SendReceive (CommandSet.STRING_REF, (int)CmdStringRef.GET_VALUE, new PacketWriter ().WriteId (id)).ReadString (); } + internal int String_GetLength (long id) { + return (int)SendReceive (CommandSet.STRING_REF, (int)CmdStringRef.GET_LENGTH, new PacketWriter ().WriteId (id)).ReadLong (); + } + + internal char[] String_GetChars (long id, int index, int length) { + var r = SendReceive (CommandSet.STRING_REF, (int)CmdStringRef.GET_CHARS, new PacketWriter ().WriteId (id).WriteLong (index).WriteLong (length)); + var res = new char [length]; + for (int i = 0; i < length; ++i) + res [i] = (char)r.ReadShort (); + return res; + } + /* * OBJECTS */ diff --git a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/StringMirror.cs b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/StringMirror.cs index e2e65f68d6..dea12b5eb8 100644 --- a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/StringMirror.cs +++ b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/StringMirror.cs @@ -5,10 +5,14 @@ namespace Mono.Debugger.Soft { public class StringMirror : ObjectMirror { + int length; + internal StringMirror (VirtualMachine vm, long id) : base (vm, id) { + length = -1; } internal StringMirror (VirtualMachine vm, long id, TypeMirror type, AppDomainMirror domain) : base (vm, id, type, domain) { + length = -1; } public string Value { @@ -16,5 +20,24 @@ namespace Mono.Debugger.Soft return vm.conn.String_GetValue (id); } } + + // Since protocol version 2.10 + public int Length { + get { + if (length == -1) + length = vm.conn.String_GetLength (id); + return length; + } + } + + // Since protocol version 2.10 + public char[] GetChars (int index, int length) { + // re-ordered to avoid possible integer overflow + if (index > Length - length) + throw new ArgumentException (Locale.GetText ( + "index and length do not specify a valid range in string.")); + + return vm.conn.String_GetChars (id, index, length); + } } } diff --git a/main/contrib/Mono.Debugger.Soft/mono-git-revision b/main/contrib/Mono.Debugger.Soft/mono-git-revision index 2b5372ba57..be0287ce5f 100644 --- a/main/contrib/Mono.Debugger.Soft/mono-git-revision +++ b/main/contrib/Mono.Debugger.Soft/mono-git-revision @@ -1 +1 @@ -4d71a7c9776b7cd56db9285dfdeb795cc0f6607c +f42ba4a168e7cb9b9486b8a96c53752e4467be8a diff --git a/main/src/addins/AspNet/MonoDevelop.AspNet/MonoDevelop.AspNet.addin.xml b/main/src/addins/AspNet/MonoDevelop.AspNet/MonoDevelop.AspNet.addin.xml index 0fe7394b94..44062bc6e7 100644 --- a/main/src/addins/AspNet/MonoDevelop.AspNet/MonoDevelop.AspNet.addin.xml +++ b/main/src/addins/AspNet/MonoDevelop.AspNet/MonoDevelop.AspNet.addin.xml @@ -8,8 +8,8 @@ category = "Web Development" version = "2.9.1"> - <Runtime>
- <Import file="Schemas/xhtml1-strict.xsd" />
+ <Runtime> + <Import file="Schemas/xhtml1-strict.xsd" /> <Import file="Schemas/xhtml1-transitional.xsd" /> <Import file="Schemas/xhtml1-frameset.xsd" /> </Runtime> diff --git a/main/src/addins/AspNet/MonoDevelop.AspNet/MonoDevelop.AspNet.csproj b/main/src/addins/AspNet/MonoDevelop.AspNet/MonoDevelop.AspNet.csproj index deb3461c84..17a7cc1180 100644 --- a/main/src/addins/AspNet/MonoDevelop.AspNet/MonoDevelop.AspNet.csproj +++ b/main/src/addins/AspNet/MonoDevelop.AspNet/MonoDevelop.AspNet.csproj @@ -306,7 +306,6 @@ </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> - <None Include="ChangeLog" /> </ItemGroup> <ItemGroup> <Content Include="Schemas\xhtml1-frameset.xsd"> diff --git a/main/src/addins/CBinding/CBinding.csproj b/main/src/addins/CBinding/CBinding.csproj index b3715c94fa..b35dae9837 100644 --- a/main/src/addins/CBinding/CBinding.csproj +++ b/main/src/addins/CBinding/CBinding.csproj @@ -106,7 +106,6 @@ </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> - <None Include="ChangeLog" /> <None Include="README" /> </ItemGroup> <ItemGroup> diff --git a/main/src/addins/CSharpBinding/CSharpBinding.csproj b/main/src/addins/CSharpBinding/CSharpBinding.csproj index 9c71dd7841..c07f8d0108 100644 --- a/main/src/addins/CSharpBinding/CSharpBinding.csproj +++ b/main/src/addins/CSharpBinding/CSharpBinding.csproj @@ -253,7 +253,6 @@ <Compile Include="MonoDevelop.CSharp.Inspection\Inspectors\RedundantNamespaceUsageInspector.cs" /> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="Makefile.am" /> <None Include="MonoDevelop.CSharp.Refactoring\CSharpRefactorer.cs" /> <None Include="MonoDevelop.CSharp.Completion\NRefactoryTemplateParameterDataProvider.cs" /> diff --git a/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.addin.xml b/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.addin.xml index 7ae13a21c3..16a6a695c5 100644 --- a/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.addin.xml +++ b/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.addin.xml @@ -18,10 +18,10 @@ <Addin id="VersionControl" version="2.9.1"/> </Dependencies> - <Extension path = "/MonoDevelop/VersionControl/CommitDialogExtensions">
+ <Extension path = "/MonoDevelop/VersionControl/CommitDialogExtensions"> <Class class="MonoDevelop.ChangeLogAddIn.CommitDialogExtensionWidget" /> </Extension> -
+ <Extension path = "/MonoDevelop/Ide/Commands"> <Command id = "MonoDevelop.ChangeLogAddIn.ChangeLogCommands.InsertEntry" defaultHandler = "MonoDevelop.ChangeLogAddIn.InsertEntryHandler" diff --git a/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.csproj b/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.csproj index 7639620092..726fce627f 100644 --- a/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.csproj +++ b/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.csproj @@ -106,7 +106,6 @@ </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> - <None Include="ChangeLog" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux.csproj b/main/src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux.csproj index 367ef95fe1..40cc4ccb3e 100644 --- a/main/src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux.csproj +++ b/main/src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux.csproj @@ -111,7 +111,6 @@ </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> - <None Include="ChangeLog" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.csproj b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.csproj index 0a6974f104..88b304adb0 100644 --- a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.csproj +++ b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.csproj @@ -78,7 +78,6 @@ </ProjectReference> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="Makefile.am" /> </ItemGroup> <ItemGroup> diff --git a/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml b/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml index 987c22bb70..bdc6fe66f3 100644 --- a/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml +++ b/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml @@ -42,4 +42,4 @@ <DotNetProject language="IL" extension="ilproj" guid="{B4EC64DC-6D44-11DD-AAB0-C9A155D89593}"/> </Extension> -</Addin>
\ No newline at end of file +</Addin> diff --git a/main/src/addins/MacPlatform/MacPlatform.cs b/main/src/addins/MacPlatform/MacPlatform.cs index d10679e6f6..21e8ee50db 100644 --- a/main/src/addins/MacPlatform/MacPlatform.cs +++ b/main/src/addins/MacPlatform/MacPlatform.cs @@ -460,17 +460,16 @@ end tell", directory.ToString ().Replace ("\"", "\\\""))); public override Gdk.Rectangle GetUsableMonitorGeometry (Gdk.Screen screen, int monitor_id) { - Gdk.Rectangle geometry = screen.GetMonitorGeometry (0); + Gdk.Rectangle ygeometry = screen.GetMonitorGeometry (monitor_id); + Gdk.Rectangle xgeometry = screen.GetMonitorGeometry (0); NSScreen monitor = NSScreen.Screens[monitor_id]; RectangleF visible = monitor.VisibleFrame; RectangleF frame = monitor.Frame; // Note: Frame and VisibleFrame rectangles are relative to monitor 0, but we need absolute // coordinates. - visible.X += geometry.X; - visible.Y += geometry.Y; - frame.X += geometry.X; - frame.Y += geometry.Y; + visible.X += xgeometry.X; + frame.X += xgeometry.X; // VisibleFrame.Y is the height of the Dock if it is at the bottom of the screen, so in order // to get the menu height, we just figure out the difference between the visibleFrame height @@ -485,10 +484,10 @@ end tell", directory.ToString ().Replace ("\"", "\\\""))); float menubarHeight = (frame.Height - visible.Height) - dockHeight; height = frame.Height - menubarHeight - dockHeight; - y = menubarHeight; + y = ygeometry.Y + menubarHeight; } else { height = frame.Height; - y = frame.Y; + y = ygeometry.Y; } // Takes care of the possibility of the Dock being positioned on the left or right edge of the screen. diff --git a/main/src/addins/MacPlatform/MacPlatform.csproj b/main/src/addins/MacPlatform/MacPlatform.csproj index 0cd83b3172..313dc5e896 100644 --- a/main/src/addins/MacPlatform/MacPlatform.csproj +++ b/main/src/addins/MacPlatform/MacPlatform.csproj @@ -89,7 +89,6 @@ <Compile Include="MacInterop\AppleEvents\Native.cs" /> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="Makefile.am" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj index a3aec31d19..d1260bc692 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser.csproj @@ -150,9 +150,6 @@ <LogicalName>MonoDevelop.AssemblyBrowser.addin.xml</LogicalName> </EmbeddedResource> </ItemGroup> - <ItemGroup> - <None Include="ChangeLog" /> - </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> <MonoDevelop> diff --git a/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.csproj b/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.csproj index abc8e1a2e6..b7924c87dc 100644 --- a/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.csproj +++ b/main/src/addins/MonoDevelop.Autotools/MonoDevelop.Autotools.csproj @@ -120,7 +120,6 @@ </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> - <None Include="ChangeLog" /> </ItemGroup> <ItemGroup> <Content Include="templates\Makefile.am.project.template"> diff --git a/main/src/addins/MonoDevelop.Autotools/templates/make-dist.targets b/main/src/addins/MonoDevelop.Autotools/templates/make-dist.targets index fbb040155b..316ca728a6 100644 --- a/main/src/addins/MonoDevelop.Autotools/templates/make-dist.targets +++ b/main/src/addins/MonoDevelop.Autotools/templates/make-dist.targets @@ -11,7 +11,6 @@ dist: $(CONFIG_MAKE) esac \ done (make dist-local distdir=$(PACKAGE)-$(VERSION)) - make make post-dist-hook "distsir=$$distdir" tar czvf $(PACKAGE)-$(VERSION).tar.gz $(PACKAGE)-$(VERSION) rm -rf $(PACKAGE)-$(VERSION) diff --git a/main/src/addins/MonoDevelop.CodeMetrics/MonoDevelop.CodeMetrics.addin.xml b/main/src/addins/MonoDevelop.CodeMetrics/MonoDevelop.CodeMetrics.addin.xml index f0cd4e5d0e..c50ef7a5ed 100644 --- a/main/src/addins/MonoDevelop.CodeMetrics/MonoDevelop.CodeMetrics.addin.xml +++ b/main/src/addins/MonoDevelop.CodeMetrics/MonoDevelop.CodeMetrics.addin.xml @@ -18,23 +18,23 @@ <Addin id="Ide" version="2.9.1"/> </Dependencies> - <Extension path = "/MonoDevelop/Ide/Commands">
+ <Extension path = "/MonoDevelop/Ide/Commands"> <Command id = "MonoDevelop.CodeMetrics.Commands.ShowMetrics" defaultHandler = "MonoDevelop.CodeMetrics.ShowMetricsHandler" - _label = "_Code Metrics" />
+ _label = "_Code Metrics" /> </Extension> <Extension path = "/MonoDevelop/Ide/MainMenu/Project"> <CommandItem id = "MonoDevelop.CodeMetrics.Commands.ShowMetrics" insertbefore="OptionsSeparator"/> </Extension> - <Extension path = "/MonoDevelop/Ide/Pads/ProjectPad">
- <NodeBuilder id = "CodeMetricsNodeExtension" class = "MonoDevelop.CodeMetrics.CodeMetricsNodeExtension"/>
- </Extension>
+ <Extension path = "/MonoDevelop/Ide/Pads/ProjectPad"> + <NodeBuilder id = "CodeMetricsNodeExtension" class = "MonoDevelop.CodeMetrics.CodeMetricsNodeExtension"/> + </Extension> <Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad/Tools"> - <Condition id="ItemType" value="Solution|SolutionFolder|Project|ProjectFile|MonoDevelop.Ide.Gui.Pads.ProjectPad.ProjectFolder">
+ <Condition id="ItemType" value="Solution|SolutionFolder|Project|ProjectFile|MonoDevelop.Ide.Gui.Pads.ProjectPad.ProjectFolder"> <CommandItem id = "MonoDevelop.CodeMetrics.Commands.ShowMetrics" insertafter="FindInFilesSeparator" insertbefore="CombineOptionsSeparator"/> - </Condition>
+ </Condition> </Extension> </Addin> diff --git a/main/src/addins/MonoDevelop.CodeMetrics/MonoDevelop.CodeMetrics.csproj b/main/src/addins/MonoDevelop.CodeMetrics/MonoDevelop.CodeMetrics.csproj index e1ede6519d..9b97729e77 100644 --- a/main/src/addins/MonoDevelop.CodeMetrics/MonoDevelop.CodeMetrics.csproj +++ b/main/src/addins/MonoDevelop.CodeMetrics/MonoDevelop.CodeMetrics.csproj @@ -132,9 +132,6 @@ <Compile Include="MonoDevelop.CodeMetrics\IProperties.cs" /> <Compile Include="MonoDevelop.CodeMetrics\AssociationBetweenClasses.cs" /> </ItemGroup> - <ItemGroup> - <None Include="ChangeLog" /> - </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> <MonoDevelop> diff --git a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs index 3febf3ebac..b734f3d0f7 100644 --- a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs +++ b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs @@ -1032,9 +1032,29 @@ namespace Mono.Debugging.Soft public override object TargetObjectToObject (EvaluationContext gctx, object obj) { - if (obj is StringMirror) - return ((StringMirror)obj).Value; - else if (obj is PrimitiveValue) + if (obj is StringMirror) { + StringMirror mirror = (StringMirror) obj; + string str; + + if (gctx.Options.EllipsizeStrings) { + if (mirror.VirtualMachine.Version.AtLeast (2, 10)) { + int length = mirror.Length; + + if (length > gctx.Options.EllipsizedLength) + str = new string (mirror.GetChars (0, gctx.Options.EllipsizedLength)) + EvaluationOptions.Ellipsis; + else + str = mirror.Value; + } else { + str = mirror.Value; + if (str.Length > gctx.Options.EllipsizedLength) + str = str.Substring (0, gctx.Options.EllipsizedLength) + EvaluationOptions.Ellipsis; + } + } else { + str = mirror.Value; + } + + return str; + } else if (obj is PrimitiveValue) return ((PrimitiveValue)obj).Value; else if ((obj is StructMirror) && ((StructMirror)obj).Type.IsPrimitive) { // Boxed primitive diff --git a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerSession.cs b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerSession.cs index a15bfd771c..e67fbaee8f 100644 --- a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerSession.cs +++ b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerSession.cs @@ -1115,8 +1115,6 @@ namespace Mono.Debugging.Soft var t = ((TypeLoadEvent)e).Type; string typeName = t.FullName; - - Console.WriteLine (typeName); if (types.ContainsKey (typeName)) { if (typeName != "System.Exception" && typeName != "<Module>") @@ -1319,7 +1317,7 @@ namespace Mono.Debugging.Soft MDB.StackFrame[] frames = thread.GetFrames (); if (frames.Length == 0) return string.Empty; - EvaluationOptions ops = Options.EvaluationOptions; + EvaluationOptions ops = Options.EvaluationOptions.Clone (); ops.AllowTargetInvoke = true; var ctx = new SoftEvaluationContext (this, frames[0], ops); ValueReference val = ctx.Evaluator.Evaluate (ctx, exp); diff --git a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/VariableValueReference.cs b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/VariableValueReference.cs index 29b3f45f9e..eee0e7a825 100644 --- a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/VariableValueReference.cs +++ b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/VariableValueReference.cs @@ -64,7 +64,14 @@ namespace Mono.Debugging.Soft public override object Value { get { SoftEvaluationContext ctx = (SoftEvaluationContext) Context; - return ctx.Frame.GetValue (variable); + try { + return ctx.Frame.GetValue (variable); + } catch (AbsentInformationException) { + if (((SoftDebuggerSession) ctx.Session).IsExternalCode (ctx.Frame)) + throw new EvaluatorException ("Value not available"); + + throw; + } } set { SoftEvaluationContext ctx = (SoftEvaluationContext) Context; diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs index d141da976f..95c50b7bd1 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs @@ -35,6 +35,7 @@ using MonoDevelop.Ide.Gui; using MonoDevelop.Components.Commands; using MonoDevelop.Projects; using MonoDevelop.Ide; +using System.Linq; namespace MonoDevelop.Debugger { @@ -348,7 +349,7 @@ namespace MonoDevelop.Debugger protected override void Update (CommandInfo info) { - info.Enabled = !DebuggingService.Breakpoints.IsReadOnly; + info.Enabled = !DebuggingService.Breakpoints.IsReadOnly && DebuggingService.Breakpoints.Count > 0; info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints); } } @@ -435,7 +436,8 @@ namespace MonoDevelop.Debugger protected override void Update (CommandInfo info) { - info.Enabled = !DebuggingService.Breakpoints.IsReadOnly; + info.Enabled = !DebuggingService.Breakpoints.IsReadOnly + && DebuggingService.Breakpoints.Any (b => b.Enabled); info.Visible = DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints); } } diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs index 75d2653ae1..eb3d63c0f7 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs @@ -584,8 +584,6 @@ namespace MonoDevelop.Debugger static void OnTargetEvent (object sender, TargetEventArgs args) { try { - Console.WriteLine ("OnTargetEvent, type - {0}", args.Type); - switch (args.Type) { case TargetEventType.TargetExited: Cleanup (); @@ -603,8 +601,8 @@ namespace MonoDevelop.Debugger default: break; } - } catch (Exception e) { - Console.WriteLine ("OnTargetEvent, {0}", e.ToString ()); + } catch (Exception ex) { + LoggingService.LogError ("Error handling debugger target event", ex); } } diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs index de3fdd0ba2..0abdafa6cc 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs @@ -72,6 +72,7 @@ namespace MonoDevelop.Debugger ops.AllowMethodEvaluation = true; ops.AllowTargetInvoke = true; ops.EvaluationTimeout = 20000; + ops.EllipsizeStrings = false; var ff = DebuggingService.CurrentFrame; string tt = e.Text; ValidationResult vres = ff.ValidateExpression (tt, ops); diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs index c0a0c5f2eb..70df7dfc34 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs @@ -48,7 +48,7 @@ namespace MonoDevelop.Debugger List<string> valueNames = new List<string> (); Dictionary<string,string> oldValues = new Dictionary<string,string> (); List<ObjectValue> values = new List<ObjectValue> (); - Dictionary<ObjectValue,TreeIter> nodes = new Dictionary<ObjectValue, TreeIter> (); + Dictionary<ObjectValue,TreeRowReference> nodes = new Dictionary<ObjectValue, TreeRowReference> (); Dictionary<string,ObjectValue> cachedValues = new Dictionary<string,ObjectValue> (); TreeStore store; TreeViewState state; @@ -497,9 +497,10 @@ namespace MonoDevelop.Debugger if (!store.IterParent (out parent, it)) parent = TreeIter.Zero; - EvaluationOptions ops = frame.DebuggerSession.Options.EvaluationOptions; + EvaluationOptions ops = frame.DebuggerSession.Options.EvaluationOptions.Clone (); ops.AllowMethodEvaluation = true; ops.AllowTargetInvoke = true; + ops.EllipsizeStrings = false; string oldName = val.Name; val.Refresh (ops); @@ -527,7 +528,7 @@ namespace MonoDevelop.Debugger void RegisterValue (ObjectValue val, TreeIter it) { if (val.IsEvaluating) { - nodes [val] = it; + nodes [val] = new TreeRowReference (store, store.GetPath (it)); val.ValueChanged += OnValueUpdated; } } @@ -578,7 +579,14 @@ namespace MonoDevelop.Debugger bool FindValue (ObjectValue val, out TreeIter it) { - return nodes.TryGetValue (val, out it); + TreeRowReference row; + + if (!nodes.TryGetValue (val, out row)) { + it = TreeIter.Zero; + return false; + } + + return store.GetIter (out it, row.Path); } public void ResetChangeTracking () @@ -747,23 +755,22 @@ namespace MonoDevelop.Debugger { if (!allowExpanding) return true; - bool expanded = (bool) store.GetValue (iter, ExpandedCol); - if (!expanded) { - store.SetValue (iter, ExpandedCol, true); - TreeIter it; - store.IterChildren (out it, iter); - store.Remove (ref it); - ObjectValue val = (ObjectValue) store.GetValue (iter, ObjectCol); - foreach (ObjectValue cval in val.GetAllChildren ()) - AppendValue (iter, null, cval); - return base.OnTestExpandRow (iter, path); + + if (GetRowExpanded (path)) + return true; + + TreeIter parent; + if (store.IterParent (out parent, iter)) { + if (!GetRowExpanded (store.GetPath (parent))) + return true; } - else - return false; + + return base.OnTestExpandRow (iter, path); } protected override void OnRowCollapsed (TreeIter iter, TreePath path) { + store.SetValue (iter, ExpandedCol, false); base.OnRowCollapsed (iter, path); if (compact) ColumnsAutosize (); @@ -771,7 +778,27 @@ namespace MonoDevelop.Debugger protected override void OnRowExpanded (TreeIter iter, TreePath path) { + store.SetValue (iter, ExpandedCol, true); + TreeIter it; + + if (store.IterChildren (out it, iter)) { + ObjectValue val = (ObjectValue) store.GetValue (it, ObjectCol); + if (val == null) { + val = (ObjectValue) store.GetValue (iter, ObjectCol); + bool first = true; + + foreach (ObjectValue cval in val.GetAllChildren ()) { + SetValues (iter, it, null, cval); + RegisterValue (cval, it); + it = store.InsertNodeAfter (it); + } + + store.Remove (ref it); + } + } + base.OnRowExpanded (iter, path); + if (compact) ColumnsAutosize (); } @@ -1121,7 +1148,7 @@ namespace MonoDevelop.Debugger TreePath[] sel = Selection.GetSelectedRows (); if (store.GetIter (out it, sel[0])) { ObjectValue val = (ObjectValue) store.GetValue (it, ObjectCol); - if (val.Name == DebuggingService.DebuggerSession.EvaluationOptions.CurrentExceptionTag) + if (val != null && val.Name == DebuggingService.DebuggerSession.EvaluationOptions.CurrentExceptionTag) DebuggingService.ShowExceptionCaughtDialog (); } } diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.csproj b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.csproj index 7b23db8fb8..1bef603669 100644 --- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.csproj +++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.csproj @@ -170,7 +170,6 @@ </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> - <None Include="ChangeLog" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> diff --git a/main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood.csproj b/main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood.csproj index 978046f9f3..18704fb18a 100644 --- a/main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood.csproj +++ b/main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood.csproj @@ -134,7 +134,4 @@ <Private>False</Private> </ProjectReference> </ItemGroup> - <ItemGroup> - <None Include="ChangeLog" /> - </ItemGroup> </Project> diff --git a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.csproj b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.csproj index 8d5d329b97..2ec1a61bd5 100644 --- a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.csproj +++ b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.csproj @@ -187,7 +187,6 @@ </EmbeddedResource> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="Makefile.am" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.csproj b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.csproj index 193630ae70..0b4f1978c7 100644 --- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.csproj +++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.csproj @@ -110,7 +110,6 @@ </ProjectReference> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="Makefile.am" /> <None Include="icons\window.png" /> <None Include="icons\dialog.png" /> diff --git a/main/src/addins/MonoDevelop.HexEditor/MonoDevelop.HexEditor.csproj b/main/src/addins/MonoDevelop.HexEditor/MonoDevelop.HexEditor.csproj index 48da72ec0a..098403877d 100644 --- a/main/src/addins/MonoDevelop.HexEditor/MonoDevelop.HexEditor.csproj +++ b/main/src/addins/MonoDevelop.HexEditor/MonoDevelop.HexEditor.csproj @@ -168,7 +168,4 @@ </Properties> </MonoDevelop> </ProjectExtensions> - <ItemGroup> - <None Include="ChangeLog" /> - </ItemGroup> </Project> diff --git a/main/src/addins/MonoDevelop.MacDev/XcodeInterfaceBuilderDisplayBinding.cs b/main/src/addins/MonoDevelop.MacDev/XcodeInterfaceBuilderDisplayBinding.cs index 0eef51b439..9a8b57066e 100644 --- a/main/src/addins/MonoDevelop.MacDev/XcodeInterfaceBuilderDisplayBinding.cs +++ b/main/src/addins/MonoDevelop.MacDev/XcodeInterfaceBuilderDisplayBinding.cs @@ -70,9 +70,9 @@ namespace MonoDevelop.MacDev public override void Launch (params string[] files) { if (!AppleSdkSettings.IsXcode42) - throw new UserException ("XCode 4.2 is required to open file {0}", files [0]); + throw new UserException (string.Format ("XCode 4.2 is required to open file {0}", files [0])); project.XcodeProjectTracker.OpenDocument (files[0]); } } -}
\ No newline at end of file +} diff --git a/main/src/addins/MonoDevelop.Moonlight/MonoDevelop.Moonlight.addin.xml b/main/src/addins/MonoDevelop.Moonlight/MonoDevelop.Moonlight.addin.xml index 3d6846e404..ea6e8deb27 100644 --- a/main/src/addins/MonoDevelop.Moonlight/MonoDevelop.Moonlight.addin.xml +++ b/main/src/addins/MonoDevelop.Moonlight/MonoDevelop.Moonlight.addin.xml @@ -16,7 +16,7 @@ <Addin id="AspNet" version="2.9.1" /> </Dependencies> - <Runtime>
+ <Runtime> <Import file="Templates/Silverlight.js" /> </Runtime> diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj index 7a2dfe6b8d..84c128b071 100644 --- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj +++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj @@ -195,7 +195,6 @@ </MonoDevelop> </ProjectExtensions> <ItemGroup> - <None Include="ChangeLog" /> <None Include="MonoDevelop.AnalysisCore\README.txt" /> <None Include="MonoDevelop.AnalysisCore\TODO.txt" /> <None Include="MonoDevelop.Refactoring.IntroduceConstant\IntroduceConstantRefactoring.cs" /> diff --git a/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit.csproj b/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit.csproj index 1f5f11fe52..e7c4f3f754 100644 --- a/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit.csproj +++ b/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit.csproj @@ -99,7 +99,6 @@ </EmbeddedResource> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="Makefile.am" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj index 147143cd6c..44428ae167 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj @@ -108,9 +108,6 @@ <Reference Include="Mono.Cairo" /> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> - </ItemGroup> - <ItemGroup> <Compile Include="AssemblyInfo.cs" /> <Compile Include="gtk-gui\generated.cs" /> <Compile Include="MonoDevelop.SourceEditor\EditActions.cs" /> diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs index 96cba481f4..14a01de960 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs @@ -363,6 +363,9 @@ namespace MonoDevelop.SourceEditor { if (!widget.EnsureCorrectEolMarker (fileName, encoding)) return; + if (widget.HasMessageBar) + return; + if (!string.IsNullOrEmpty (ContentName)) AutoSave.RemoveAutoSaveFile (ContentName); @@ -515,7 +518,7 @@ namespace MonoDevelop.SourceEditor UpdateExecutionLocation (); UpdateBreakpoints (); UpdatePinnedWatches (); - this.IsDirty = false; + this.IsDirty = !didLoadCleanly; UpdateTasks (null, null); widget.TextEditor.VAdjustment.Changed += HandleTextEditorVAdjustmentChanged; if (didLoadCleanly) @@ -1106,13 +1109,17 @@ namespace MonoDevelop.SourceEditor public void SetCaretTo (int line, int column) { this.Document.RunWhenLoaded (() => widget.TextEditor.SetCaretTo (line, column, true)); - } public void SetCaretTo (int line, int column, bool highlight) { this.Document.RunWhenLoaded (() => widget.TextEditor.SetCaretTo (line, column, highlight)); } + + public void SetCaretTo (int line, int column, bool highlight, bool centerCaret) + { + this.Document.RunWhenLoaded (() => widget.TextEditor.SetCaretTo (line, column, highlight, centerCaret)); + } public void Redo() { diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs index e66e6e9cfc..76070d54ee 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs @@ -129,6 +129,10 @@ namespace MonoDevelop.SourceEditor } #endregion + public bool HasMessageBar { + get { return messageBar != null; } + } + Gtk.VBox vbox = new Gtk.VBox (); public Gtk.VBox Vbox { get { return this.vbox; } @@ -763,6 +767,7 @@ namespace MonoDevelop.SourceEditor messageBar.ActionArea.Add (b2); } + view.IsDirty = true; view.WarnOverwrite = true; vbox.PackStart (messageBar, false, false, CHILD_PADDING); vbox.ReorderChild (messageBar, 0); @@ -896,6 +901,7 @@ namespace MonoDevelop.SourceEditor messageBar.ActionArea.Add (b2); } + view.IsDirty = true; view.WarnOverwrite = true; vbox.PackStart (messageBar, false, false, CHILD_PADDING); vbox.ReorderChild (messageBar, 0); diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.csproj b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.csproj index 868f29ffec..e9616a228d 100644 --- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.csproj +++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.csproj @@ -127,7 +127,6 @@ </EmbeddedResource> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="TODO" /> </ItemGroup> <ItemGroup> diff --git a/main/src/addins/MonoDevelop.XmlEditor/MonoDevelop.XmlEditor.addin.xml b/main/src/addins/MonoDevelop.XmlEditor/MonoDevelop.XmlEditor.addin.xml index 471fec3135..86c6a8a816 100644 --- a/main/src/addins/MonoDevelop.XmlEditor/MonoDevelop.XmlEditor.addin.xml +++ b/main/src/addins/MonoDevelop.XmlEditor/MonoDevelop.XmlEditor.addin.xml @@ -1,21 +1,22 @@ <Addin name = "XML Editor" id = "XmlEditor" namespace = "MonoDevelop" - author = "Matt Ward, Michael Hutchinson"
- copyright = "MIT X11"
- url = "http://md-xed.sourceforge.net"
- description = "XML Editor"
+ author = "Matt Ward, Michael Hutchinson" + copyright = "MIT X11" + url = "http://md-xed.sourceforge.net" + description = "XML Editor" category = "IDE extensions" version = "2.9.1"> -
<Runtime>
- <Import assembly="MonoDevelop.XmlEditor.dll" />
- <Import file="schemas/appconfig.xsd" />
- <Import file="schemas/MonoDevelopAddIn.xsd" />
- <Import file="schemas/readme.txt" />
- <Import file="schemas/XMLSchema.xsd" />
- <Import file="schemas/W3C-License.html" />
- <Import file="schemas/xslt.xsd" />
- <Import file="schemas/manifest.xsd" />
+ + <Runtime> + <Import assembly="MonoDevelop.XmlEditor.dll" /> + <Import file="schemas/appconfig.xsd" /> + <Import file="schemas/MonoDevelopAddIn.xsd" /> + <Import file="schemas/readme.txt" /> + <Import file="schemas/XMLSchema.xsd" /> + <Import file="schemas/W3C-License.html" /> + <Import file="schemas/xslt.xsd" /> + <Import file="schemas/manifest.xsd" /> <Import file="schemas/nant.xsd" /> </Runtime> @@ -32,7 +33,7 @@ <ExtensionPoint path = "/MonoDevelop/XmlEditor/XmlSchemas"> <ExtensionNode name = "Schema" type = "MonoDevelop.XmlEditor.XmlSchemaNode" /> - </ExtensionPoint>
+ </ExtensionPoint> <!-- Additional file extensions that will be opened in the XML editor --> <Extension path = "/MonoDevelop/XmlEditor/XmlFileAssociations"> @@ -89,7 +90,7 @@ description = "Jumps to the schema definition"/> </Category> </Extension> -
+ <!-- XML menu --> <Extension path = "/MonoDevelop/Ide/MainMenu/Tools"> <ItemSet id = "XmlMenu" insertafter = "AddinManagerSeparator" _label = "_XML" > @@ -133,7 +134,7 @@ <Extension path = "/MonoDevelop/TypeSystem/Parser"> <Parser class = "MonoDevelop.XmlEditor.XmlDocumentParser" mimeType = "application/xml" id = "XmlParser"/> </Extension> -
+ <Extension path = "/MonoDevelop/Ide/CodeFormatters"> <Formatter mimeType="text/xml" class="MonoDevelop.Xml.Formatting.XmlFormatter" /> <Formatter mimeType="application/xml" class="MonoDevelop.Xml.Formatting.XmlFormatter" /> @@ -153,4 +154,4 @@ <!-- 2.6+ --> <Migration sourceVersion="2.6+" kind="UserData" path="XmlSchemas" isDirectory="true" /> </Extension> -</Addin>
+</Addin> diff --git a/main/src/addins/NUnit/MonoDevelop.NUnit.csproj b/main/src/addins/NUnit/MonoDevelop.NUnit.csproj index 3007f114e4..0c627c8d3d 100644 --- a/main/src/addins/NUnit/MonoDevelop.NUnit.csproj +++ b/main/src/addins/NUnit/MonoDevelop.NUnit.csproj @@ -195,7 +195,6 @@ </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> - <None Include="ChangeLog" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix.addin.xml b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix.addin.xml index aa1ca5962f..89fe6a2420 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix.addin.xml +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix.addin.xml @@ -1,5 +1,5 @@ <Addin id = "VersionControl.Subversion.Unix"
- namespace = "MonoDevelop" + namespace = "MonoDevelop"
name = "Subversion support"
author = "Joshua Tauberer, Lluis Sanchez"
copyright = "LGPL"
@@ -13,8 +13,8 @@ <Addin id="Ide" version="2.9.1"/>
<Addin id="VersionControl" version="2.9.1"/>
<Addin id="VersionControl.Subversion" version="2.9.1"/>
- </Dependencies> - + </Dependencies>
+
<Extension path = "/MonoDevelop/VersionControl/VersionControlSystems">
<Condition id="Platform" value="!windows">
<Class class = "MonoDevelop.VersionControl.Subversion.Unix.SvnClient" />
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/LibSvnClient.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/LibSvnClient.cs index c158995d0f..1df07ab2d8 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/LibSvnClient.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/LibSvnClient.cs @@ -61,6 +61,8 @@ namespace MonoDevelop.VersionControl.Subversion.Unix { int descend, int get_all, int update, int no_ignore, IntPtr ctx, IntPtr pool); + public abstract IntPtr client_root_url_from_path (ref IntPtr url, string path_or_url, IntPtr ctx, IntPtr pool); + public abstract IntPtr client_log (IntPtr apr_array_header_t_targets, ref Rev rev_start, ref Rev rev_end, int discover_changed_paths, @@ -585,6 +587,13 @@ namespace MonoDevelop.VersionControl.Subversion.Unix { public class LibSvnClient0 : LibSvnClient { private const string svnclientlib = "libsvn_client-1.so.0"; + [DllImport(svnclientlib)] static extern IntPtr svn_client_root_url_from_path (ref IntPtr url, string path_or_url, IntPtr ctx, IntPtr pool); + + public override IntPtr client_root_url_from_path (ref IntPtr url, string path_or_url, IntPtr ctx, IntPtr pool) + { + return svn_client_root_url_from_path (ref url, path_or_url, ctx, pool); + } + public override void config_ensure (string config_dir, IntPtr pool) { svn_config_ensure (config_dir, pool); @@ -960,6 +969,13 @@ namespace MonoDevelop.VersionControl.Subversion.Unix { public class LibSvnClient1 : LibSvnClient { private const string svnclientlib = "libsvn_client-1.so.1"; + [DllImport(svnclientlib)] static extern IntPtr svn_client_root_url_from_path (ref IntPtr url, string path_or_url, IntPtr ctx, IntPtr pool); + + public override IntPtr client_root_url_from_path (ref IntPtr url, string path_or_url, IntPtr ctx, IntPtr pool) + { + return svn_client_root_url_from_path (ref url, path_or_url, ctx, pool); + } + public override void config_ensure (string config_dir, IntPtr pool) { svn_config_ensure (config_dir, pool); diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs index f168a3c555..e3ebc0550d 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs @@ -420,7 +420,7 @@ namespace MonoDevelop.VersionControl.Subversion.Unix strptr = Marshal.StringToHGlobalAnsi (pathorurl); Marshal.WriteIntPtr (first, strptr); - LogCollector collector = new LogCollector (ret); + LogCollector collector = new LogCollector ((SubversionRepository)repo, ret); CheckError (svn.client_log (array, ref revisionStart, ref revisionEnd, 1, 0, new LibSvnClient.svn_log_message_receiver_t (collector.Func), @@ -880,9 +880,7 @@ namespace MonoDevelop.VersionControl.Subversion.Unix string npath1 = NormalizePath (path1, localpool); string npath2 = NormalizePath (path2, localpool); CheckError (svn.client_diff (options, npath1, ref revision1, npath2, ref revision2, (recursive ? 1 : 0), 0, 1, outfile, errfile, ctx, localpool));
- using (StreamReader sr = new StreamReader (fout)) {
- return sr.ReadToEnd ();
- } + return MonoDevelop.Projects.Text.TextFile.ReadFile (fout).Text; } else { throw new Exception ("Could not get diff information"); } @@ -949,7 +947,7 @@ namespace MonoDevelop.VersionControl.Subversion.Unix return IntPtr.Zero; } - private void CheckError (IntPtr error) + internal static void CheckError (IntPtr error) { if (error == IntPtr.Zero) return; @@ -970,7 +968,7 @@ namespace MonoDevelop.VersionControl.Subversion.Unix throw new SubversionException (msg); } - string GetErrorMessage (LibSvnClient.svn_error_t error) + static string GetErrorMessage (LibSvnClient.svn_error_t error) { if (error.message != null) return error.message; @@ -1246,8 +1244,9 @@ namespace MonoDevelop.VersionControl.Subversion.Unix static readonly DateTime Epoch = new DateTime (1970, 1, 1); List<SvnRevision> logs; + SubversionRepository repo; - public LogCollector (List<SvnRevision> logs) { this.logs = logs; } + public LogCollector (SubversionRepository repo, List<SvnRevision> logs) { this.repo = repo; this.logs = logs; } public IntPtr Func (IntPtr baton, IntPtr apr_hash_changed_paths, int revision, IntPtr author, IntPtr date, IntPtr message, IntPtr pool) { @@ -1280,7 +1279,13 @@ namespace MonoDevelop.VersionControl.Subversion.Unix case 'R': ac = RevisionAction.Replace; break; default: ac = RevisionAction.Modify; break; // should be an 'M' } - items.Add (new RevisionPath (name, ac, "")); + + IntPtr result = IntPtr.Zero; + SvnClient.CheckError (svn.client_root_url_from_path (ref result, repo.RootPath, IntPtr.Zero, pool)); + if (result == IntPtr.Zero) // Should never happen + items.Add (new RevisionPath (name, ac, "")); + else + items.Add (new RevisionPath (Marshal.PtrToStringAnsi (result) + "/" + name, ac, "")); } SvnRevision ent = new SvnRevision (null, revision, Epoch.AddTicks (time * 10), Marshal.PtrToStringAnsi (author), smessage, items.ToArray ()); diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.addin.xml b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.addin.xml index bdca4c7e49..7f7f6dc895 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.addin.xml +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.addin.xml @@ -1,5 +1,5 @@ <Addin id = "VersionControl.Subversion"
- namespace = "MonoDevelop" + namespace = "MonoDevelop"
name = "Subversion core engine"
author = "Joshua Tauberer"
copyright = "LGPL"
@@ -13,9 +13,9 @@ <Addin id="Core" version="2.9.1"/>
<Addin id="Ide" version="2.9.1"/>
<Addin id="VersionControl" version="2.9.1"/>
- </Dependencies> - - <Extension path = "/MonoDevelop/Ide/Commands/VersionControl"> + </Dependencies>
+
+ <Extension path = "/MonoDevelop/Ide/Commands/VersionControl">
<Command id = "MonoDevelop.VersionControl.Subversion.Commands.Resolve"
_label = "Resolve"
description = "Resolve conflicts on working copy files or directories."/>
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs index 0e4cfe6b4a..d0993809ad 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs @@ -66,7 +66,10 @@ namespace MonoDevelop.VersionControl.Subversion public override string GetBaseText (FilePath sourcefile)
{
- return File.ReadAllText (Svn.GetPathToBaseText (sourcefile));
+ // The base file will not exist if the file has just been
+ // added to svn and not committed
+ var baseFile = Svn.GetPathToBaseText (sourcefile);
+ return File.Exists (baseFile) ? File.ReadAllText (baseFile) : "";
}
public string GetPathToBaseText (FilePath sourcefile)
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs index 01d5dc51c5..281698aa98 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs @@ -346,15 +346,11 @@ namespace MonoDevelop.VersionControl.Views } } else { - string prevRevisionText; + string prevRevisionText = ""; try { prevRevisionText = info.Repository.GetTextAtRevision (path, prevRev); } catch (Exception e) { - Application.Invoke (delegate { - LoggingService.LogError ("Error while getting revision text", e); - MessageService.ShowError ("Error while getting revision text.", "The file may not be part of the working copy."); - }); - return; + // The file did not exist at this point in time, so just treat it as empty } var originalDocument = new Mono.TextEditor.Document (prevRevisionText); diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/PublishCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/PublishCommand.cs index 1c4ca36487..e5ae38e71f 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/PublishCommand.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/PublishCommand.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using MonoDevelop.Projects; using MonoDevelop.Core; @@ -56,8 +57,9 @@ namespace MonoDevelop.VersionControl static void GetFiles (List<FilePath> files, IWorkspaceObject entry) { + // Ensure that we strip out all linked files from outside of the solution/projects path. if (entry is IWorkspaceFileObject) - files.AddRange (((IWorkspaceFileObject)entry).GetItemFiles (true)); + files.AddRange (((IWorkspaceFileObject)entry).GetItemFiles (true).Where (file => file.IsChildPathOf (entry.BaseDirectory))); } public static bool CanPublish (Repository vc, string path, bool isDir) { diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform.addin.xml b/main/src/addins/WindowsPlatform/WindowsPlatform.addin.xml index 8f0980bdcc..e815c9997c 100644 --- a/main/src/addins/WindowsPlatform/WindowsPlatform.addin.xml +++ b/main/src/addins/WindowsPlatform/WindowsPlatform.addin.xml @@ -15,7 +15,7 @@ <Dependencies>
<Addin id="Core" version="2.9.1"/>
<Addin id="Ide" version="2.9.1"/>
- </Dependencies>
+ </Dependencies>
<Extension path = "/MonoDevelop/Core/PlatformService">
<Class class = "MonoDevelop.Platform.WindowsPlatform"/>
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform.csproj b/main/src/addins/WindowsPlatform/WindowsPlatform.csproj index 4448034a4b..6d5d358058 100644 --- a/main/src/addins/WindowsPlatform/WindowsPlatform.csproj +++ b/main/src/addins/WindowsPlatform/WindowsPlatform.csproj @@ -97,9 +97,6 @@ <Compile Include="JumpList.cs" /> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> - </ItemGroup> - <ItemGroup> <EmbeddedResource Include="Dialogs\CustomAddFilesDialog.resx"> <DependentUpon>CustomAddFilesDialog.cs</DependentUpon> <SubType>Designer</SubType> diff --git a/main/src/addins/prj2make-sharp-lib/prj2make-sharp-lib.csproj b/main/src/addins/prj2make-sharp-lib/prj2make-sharp-lib.csproj index 3203ff0142..7aa904a7a6 100644 --- a/main/src/addins/prj2make-sharp-lib/prj2make-sharp-lib.csproj +++ b/main/src/addins/prj2make-sharp-lib/prj2make-sharp-lib.csproj @@ -110,7 +110,6 @@ </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> - <None Include="ChangeLog" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> diff --git a/main/src/core/Mono.Debugging/Mono.Debugging.Client/EvaluationOptions.cs b/main/src/core/Mono.Debugging/Mono.Debugging.Client/EvaluationOptions.cs index f69b38967d..383c14f7ae 100644 --- a/main/src/core/Mono.Debugging/Mono.Debugging.Client/EvaluationOptions.cs +++ b/main/src/core/Mono.Debugging/Mono.Debugging.Client/EvaluationOptions.cs @@ -34,6 +34,8 @@ namespace Mono.Debugging.Client bool allowMethodEvaluation; bool allowToStringCalls; + public static readonly char Ellipsis = '…'; + public static EvaluationOptions DefaultOptions { get { EvaluationOptions ops = new EvaluationOptions (); @@ -50,6 +52,8 @@ namespace Mono.Debugging.Client ops.UseExternalTypeResolver = true; ops.IntegerDisplayFormat = IntegerDisplayFormat.Decimal; ops.CurrentExceptionTag = "$exception"; + ops.EllipsizeStrings = true; + ops.EllipsizedLength = 100; return ops; } } @@ -59,6 +63,9 @@ namespace Mono.Debugging.Client return (EvaluationOptions) MemberwiseClone (); } + public bool EllipsizeStrings { get; set; } + public int EllipsizedLength { get; set; } + public int EvaluationTimeout { get; set; } public int MemberEvaluationTimeout { get; set; } public bool AllowTargetInvoke { get; set; } diff --git a/main/src/core/Mono.Debugging/Mono.Debugging.Client/ObjectValue.cs b/main/src/core/Mono.Debugging/Mono.Debugging.Client/ObjectValue.cs index d02262e534..df3f881901 100644 --- a/main/src/core/Mono.Debugging/Mono.Debugging.Client/ObjectValue.cs +++ b/main/src/core/Mono.Debugging/Mono.Debugging.Client/ObjectValue.cs @@ -284,7 +284,10 @@ namespace Mono.Debugging.Client /// </remarks> public object GetRawValue () { - return GetRawValue (parentFrame.DebuggerSession.EvaluationOptions); + EvaluationOptions ops = parentFrame.DebuggerSession.EvaluationOptions.Clone (); + ops.EllipsizeStrings = false; + + return GetRawValue (ops); } /// <summary> diff --git a/main/src/core/Mono.Debugging/Mono.Debugging.Client/StackFrame.cs b/main/src/core/Mono.Debugging/Mono.Debugging.Client/StackFrame.cs index f10073d758..138390435b 100644 --- a/main/src/core/Mono.Debugging/Mono.Debugging.Client/StackFrame.cs +++ b/main/src/core/Mono.Debugging/Mono.Debugging.Client/StackFrame.cs @@ -192,7 +192,7 @@ namespace Mono.Debugging.Client public ObjectValue[] GetExpressionValues (string[] expressions, bool evaluateMethods) { - EvaluationOptions options = session.EvaluationOptions; + EvaluationOptions options = session.EvaluationOptions.Clone (); options.AllowMethodEvaluation = evaluateMethods; return GetExpressionValues (expressions, options); } @@ -218,7 +218,7 @@ namespace Mono.Debugging.Client public ObjectValue GetExpressionValue (string expression, bool evaluateMethods) { - EvaluationOptions options = session.EvaluationOptions; + EvaluationOptions options = session.EvaluationOptions.Clone (); options.AllowMethodEvaluation = evaluateMethods; return GetExpressionValue (expression, options); } diff --git a/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs b/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs index 1578003d22..f1afd8e082 100644 --- a/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs +++ b/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs @@ -71,6 +71,9 @@ namespace Mono.Debugging.Evaluation object res = ctx.Adapter.TargetObjectToObject (ctx, obj); if (res == null) return null; + + if (res is EvaluationResult) + return ((EvaluationResult) res).DisplayValue; else return res.ToString (); } diff --git a/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs b/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs index 5291d57b7c..a980486a4a 100644 --- a/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs +++ b/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs @@ -928,10 +928,20 @@ namespace Mono.Debugging.Evaluation string mem = exp.Substring (i, j - i).Trim (); if (mem.Length == 0) return exp; - - ValueReference member = GetMember (ctx, null, GetValueType (ctx, obj), obj, mem); + + string[] props = mem.Split (new char[] { '.' }); + ValueReference member = null; + object val = obj; + + for (int k = 0; k < props.Length; k++) { + member = GetMember (ctx, null, GetValueType (ctx, val), val, props[k]); + if (member == null) + break; + + val = member.Value; + } + if (member != null) { - object val = member.Value; sb.Append (ctx.Evaluator.TargetObjectToString (ctx, val)); } else { sb.Append ("{Unknown member '" + mem + "'}"); diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor.csproj b/main/src/core/Mono.Texteditor/Mono.TextEditor.csproj index fe2117135c..c4f1f35a22 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor.csproj +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor.csproj @@ -184,7 +184,6 @@ <Compile Include="Mono.TextEditor\Annotatable.cs" /> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="Mono.TextEditor.dll.config"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/GtkWorkarounds.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/GtkWorkarounds.cs index 892902ce5e..a24754014b 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/GtkWorkarounds.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/GtkWorkarounds.cs @@ -126,7 +126,8 @@ namespace Mono.TextEditor { IntPtr array = objc_msgSend_IntPtr (cls_NSScreen, sel_screens); IntPtr iter = objc_msgSend_IntPtr (array, sel_objectEnumerator); - Gdk.Rectangle geometry = screen.GetMonitorGeometry (0); + Gdk.Rectangle ygeometry = screen.GetMonitorGeometry (monitor); + Gdk.Rectangle xgeometry = screen.GetMonitorGeometry (0); RectangleF visible, frame; IntPtr scrn; int i = 0; @@ -142,10 +143,8 @@ namespace Mono.TextEditor // Note: Frame and VisibleFrame rectangles are relative to monitor 0, but we need absolute // coordinates. - visible.X += geometry.X; - visible.Y += geometry.Y; - frame.X += geometry.X; - frame.Y += geometry.Y; + visible.X += xgeometry.X; + frame.X += xgeometry.X; // VisibleFrame.Y is the height of the Dock if it is at the bottom of the screen, so in order // to get the menu height, we just figure out the difference between the visibleFrame height @@ -160,10 +159,10 @@ namespace Mono.TextEditor float menubarHeight = (frame.Height - visible.Height) - dockHeight; height = frame.Height - menubarHeight - dockHeight; - y = menubarHeight; + y = ygeometry.Y + menubarHeight; } else { height = frame.Height; - y = frame.Y; + y = ygeometry.Y; } // Takes care of the possibility of the Dock being positioned on the left or right edge of the screen. @@ -227,10 +226,13 @@ namespace Mono.TextEditor return true; if (Platform.IsMac) { - if (evt.Button == 1 && + if (!oldMacKeyHacks && + evt.Button == 1 && (evt.State & Gdk.ModifierType.ControlMask) != 0 && (evt.State & (Gdk.ModifierType.Button2Mask | Gdk.ModifierType.Button3Mask)) == 0) - return true; + { + return true; + } } return false; @@ -329,6 +331,7 @@ namespace Mono.TextEditor y -= y_over; } } + y = System.Math.Max (geometry.Top, System.Math.Min (y, geometry.Bottom - request.Height)); x = System.Math.Max (geometry.Left, System.Math.Min (x, geometry.Right - request.Width)); @@ -382,7 +385,7 @@ namespace Mono.TextEditor extern static bool gdk_quartz_set_fix_modifiers (bool fix); static Gdk.Keymap keymap = Gdk.Keymap.Default; - static Dictionary<long,MappedKeys> mappedKeys = new Dictionary<long,MappedKeys> (); + static Dictionary<ulong,MappedKeys> mappedKeys = new Dictionary<ulong,MappedKeys> (); /// <summary>Map raw GTK key input to work around platform bugs and decompose accelerator keys</summary> /// <param name='evt'>The raw key event</param> @@ -393,7 +396,10 @@ namespace Mono.TextEditor out KeyboardShortcut[] accels) { //this uniquely identifies the raw key - long id = (((long)evt.State)) | (((long)evt.HardwareKeycode) << 32) | ((long)evt.Group << 48); + ulong id; + unchecked { + id = (((ulong)(uint)evt.State) | (((ulong)evt.HardwareKeycode) << 32) | (((ulong)evt.Group) << 48)); + } MappedKeys mapped; if (!mappedKeys.TryGetValue (id, out mapped)) { @@ -415,21 +421,11 @@ namespace Mono.TextEditor gdk_keymap_add_virtual_modifiers (keymap.Handle, ref modifier); } - // Workaround for bug "Bug 688247 - Ctrl+Alt key not work on windows7 with bootcamp on a Mac Book Pro" - // Ctrl+Alt should behave like right alt key - unfortunately TranslateKeyboardState doesn't handle it. - if (Platform.IsWindows) { - const Gdk.ModifierType ctrlAlt = Gdk.ModifierType.ControlMask | Gdk.ModifierType.Mod1Mask; - if ((modifier & ctrlAlt) == ctrlAlt) { - modifier = (modifier & ~ctrlAlt) | Gdk.ModifierType.Mod2Mask; - grp = 1; - } - } - //full key mapping uint keyval; int effectiveGroup, level; Gdk.ModifierType consumedModifiers; - keymap.TranslateKeyboardState (keycode, modifier, grp, out keyval, out effectiveGroup, + TranslateKeyboardState (keycode, modifier, grp, out keyval, out effectiveGroup, out level, out consumedModifiers); mapped.Key = (Gdk.Key)keyval; mapped.State = FixMacModifiers (evt.State & ~consumedModifiers, grp); @@ -444,7 +440,7 @@ namespace Mono.TextEditor modifier &= ~Gdk.ModifierType.LockMask; //fully decomposed - keymap.TranslateKeyboardState (evt.HardwareKeycode, Gdk.ModifierType.None, 0, + TranslateKeyboardState (evt.HardwareKeycode, Gdk.ModifierType.None, 0, out keyval, out effectiveGroup, out level, out consumedModifiers); accelList.Add (new KeyboardShortcut ((Gdk.Key)keyval, FixMacModifiers (modifier, grp) & accelMods)); @@ -458,7 +454,7 @@ namespace Mono.TextEditor //with group 1 composed if (grp == 1) { - keymap.TranslateKeyboardState (evt.HardwareKeycode, modifier & ~Gdk.ModifierType.ShiftMask, 1, + TranslateKeyboardState (evt.HardwareKeycode, modifier & ~Gdk.ModifierType.ShiftMask, 1, out keyval, out effectiveGroup, out level, out consumedModifiers); //somehow GTK on mac manages to consume a shift that we don't even pass to it if (oldMacKeyHacks) { @@ -470,7 +466,7 @@ namespace Mono.TextEditor //with group 1 and shift composed if (grp == 1 && (modifier & Gdk.ModifierType.ShiftMask) != 0) { - keymap.TranslateKeyboardState (evt.HardwareKeycode, modifier, 1, + TranslateKeyboardState (evt.HardwareKeycode, modifier, 1, out keyval, out effectiveGroup, out level, out consumedModifiers); var m = FixMacModifiers ((modifier & ~consumedModifiers), 0) & accelMods; AddIfNotDuplicate (accelList, new KeyboardShortcut ((Gdk.Key)keyval, m)); @@ -483,6 +479,23 @@ namespace Mono.TextEditor return mapped; } + // Workaround for bug "Bug 688247 - Ctrl+Alt key not work on windows7 with bootcamp on a Mac Book Pro" + // Ctrl+Alt should behave like right alt key - unfortunately TranslateKeyboardState doesn't handle it. + static void TranslateKeyboardState (uint hardware_keycode, Gdk.ModifierType state, int group, out uint keyval, + out int effective_group, out int level, out Gdk.ModifierType consumed_modifiers) + { + if (Platform.IsWindows) { + const Gdk.ModifierType ctrlAlt = Gdk.ModifierType.ControlMask | Gdk.ModifierType.Mod1Mask; + if ((state & ctrlAlt) == ctrlAlt) { + state = (state & ~ctrlAlt) | Gdk.ModifierType.Mod2Mask; + group = 1; + } + } + + keymap.TranslateKeyboardState (hardware_keycode, state, group, out keyval, out effective_group, + out level, out consumed_modifiers); + } + static Gdk.ModifierType FixMacModifiers (Gdk.ModifierType mod, byte grp) { if (!oldMacKeyHacks) @@ -641,4 +654,4 @@ namespace Mono.TextEditor return other.key == key && other.mod == mod; } } -}
\ No newline at end of file +} diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditor.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditor.cs index 0919b06eec..106733ce4a 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditor.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditor.cs @@ -587,20 +587,22 @@ namespace Mono.TextEditor protected override void OnRealized () { WidgetFlags |= WidgetFlags.Realized; - WindowAttr attributes = new WindowAttr (); - attributes.WindowType = Gdk.WindowType.Child; - attributes.X = Allocation.X; - attributes.Y = Allocation.Y; - attributes.Width = Allocation.Width; - attributes.Height = Allocation.Height; - attributes.Wclass = WindowClass.InputOutput; - attributes.Visual = this.Visual; - attributes.Colormap = this.Colormap; - attributes.EventMask = (int)(this.Events | Gdk.EventMask.ExposureMask); - attributes.Mask = this.Events | Gdk.EventMask.ExposureMask; -// attributes.Mask = EventMask; - - WindowAttributesType mask = WindowAttributesType.X | WindowAttributesType.Y | WindowAttributesType.Colormap | WindowAttributesType.Visual; + WindowAttr attributes = new WindowAttr () { + WindowType = Gdk.WindowType.Child, + X = Allocation.X, + Y = Allocation.Y, + Width = Allocation.Width, + Height = Allocation.Height, + Wclass = WindowClass.InputOutput, + Visual = this.Visual, + Colormap = this.Colormap, + EventMask = (int)(this.Events | Gdk.EventMask.ExposureMask), + Mask = this.Events | Gdk.EventMask.ExposureMask, + //Mask = EventMask, + }; + + WindowAttributesType mask = WindowAttributesType.X | WindowAttributesType.Y + | WindowAttributesType.Colormap | WindowAttributesType.Visual; this.GdkWindow = new Gdk.Window (ParentWindow, attributes, mask); this.GdkWindow.UserData = this.Raw; this.Style = Style.Attach (this.GdkWindow); @@ -886,10 +888,15 @@ namespace Mono.TextEditor protected override bool OnKeyPressEvent (Gdk.EventKey evt) { - ModifierType mod; Gdk.Key key; - uint keyVal; - GtkWorkarounds.MapRawKeys (evt, out key, out mod, out keyVal); + Gdk.ModifierType mod; + KeyboardShortcut[] accels; + GtkWorkarounds.MapKeys (evt, out key, out mod, out accels); + + uint keyVal = (uint) key; + key = accels[0].Key; + mod = accels[0].Modifier; + if (key == Gdk.Key.F1 && (mod & (ModifierType.ControlMask | ModifierType.ShiftMask)) == ModifierType.ControlMask) { var p = LocationToPoint (Caret.Location); ShowTooltip (Gdk.ModifierType.None, Caret.Offset, p.X, p.Y); @@ -1367,10 +1374,10 @@ namespace Mono.TextEditor if (this.textEditorData.VAdjustment.Upper < Allocation.Height) { this.textEditorData.VAdjustment.Value = 0; } else { - double yMargin = 1 * this.LineHeight; + double yMargin = 3 * this.LineHeight; double caretPosition = LineToY (p.Line); if (this.textEditorData.VAdjustment.Value > caretPosition) { - this.textEditorData.VAdjustment.Value = caretPosition; + this.textEditorData.VAdjustment.Value = caretPosition - yMargin; } else if (this.textEditorData.VAdjustment.Value + this.textEditorData.VAdjustment.PageSize - this.LineHeight < caretPosition + yMargin) { this.textEditorData.VAdjustment.Value = caretPosition - this.textEditorData.VAdjustment.PageSize + this.LineHeight + yMargin; } @@ -2778,13 +2785,15 @@ namespace Mono.TextEditor TextEditor view; int line, column; bool highlightCaretLine; + bool centerCaret; - public SetCaret (TextEditor view, int line, int column, bool highlightCaretLine) + public SetCaret (TextEditor view, int line, int column, bool highlightCaretLine, bool centerCaret) { this.view = view; this.line = line; this.column = column; this.highlightCaretLine = highlightCaretLine; + this.centerCaret = centerCaret; } public void Run (object sender, EventArgs e) @@ -2796,7 +2805,8 @@ namespace Mono.TextEditor try { view.Caret.Location = new DocumentLocation (line, column); view.GrabFocus (); - view.CenterToCaret (); + if (centerCaret) + view.CenterToCaret (); if (view.TextViewMargin.XOffset == 0) view.HAdjustment.Value = 0; view.SizeAllocated -= Run; @@ -2814,19 +2824,24 @@ namespace Mono.TextEditor { SetCaretTo (line, column, true); } - + public void SetCaretTo (int line, int column, bool highlight) { + SetCaretTo (line, column, highlight, true); + } + + public void SetCaretTo (int line, int column, bool highlight, bool centerCaret) + { if (line < DocumentLocation.MinLine) throw new ArgumentException ("line < MinLine"); if (column < DocumentLocation.MinColumn) throw new ArgumentException ("column < MinColumn"); if (!IsRealized) { - SetCaret setCaret = new SetCaret (this, line, column, highlight); + SetCaret setCaret = new SetCaret (this, line, column, highlight, centerCaret); SizeAllocated += setCaret.Run; } else { - new SetCaret (this, line, column, highlight).Run (null, null); + new SetCaret (this, line, column, highlight, centerCaret).Run (null, null); } } } diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditorContainer.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditorContainer.cs index afe115868e..77b9197cd2 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditorContainer.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditorContainer.cs @@ -132,29 +132,6 @@ namespace Mono.TextEditor widget.GdkWindow.Raise (); } - protected override void OnRealized () - { - WidgetFlags |= WidgetFlags.Realized; - WindowAttr attributes = new WindowAttr (); - attributes.WindowType = Gdk.WindowType.Child; - attributes.X = Allocation.X; - attributes.Y = Allocation.Y; - attributes.Width = Allocation.Width; - attributes.Height = Allocation.Height; - attributes.Wclass = WindowClass.InputOutput; - attributes.Visual = this.Visual; - attributes.Colormap = this.Colormap; - attributes.EventMask = (int)(this.Events | Gdk.EventMask.ExposureMask); - attributes.Mask = this.Events | Gdk.EventMask.ExposureMask; -// attributes.Mask = EventMask; - - WindowAttributesType mask = WindowAttributesType.X | WindowAttributesType.Y | WindowAttributesType.Colormap | WindowAttributesType.Visual; - this.GdkWindow = new Gdk.Window (ParentWindow, attributes, mask); - this.GdkWindow.UserData = this.Raw; - this.Style = Style.Attach (this.GdkWindow); - this.WidgetFlags &= ~WidgetFlags.NoWindow; - } - protected override void OnAdded (Widget widget) { AddTopLevelWidget (widget, 0, 0); @@ -179,9 +156,6 @@ namespace Mono.TextEditor protected override void OnSizeAllocated (Rectangle allocation) { base.OnSizeAllocated (allocation); - if (this.GdkWindow != null) - this.GdkWindow.MoveResize (allocation); - allocation = new Rectangle (0, 0, allocation.Width, allocation.Height); if (textEditorWidget.Allocation != allocation) textEditorWidget.SizeAllocate (allocation); SetChildrenPositions (allocation); @@ -189,15 +163,19 @@ namespace Mono.TextEditor void SetChildrenPositions (Rectangle allocation) { - //Console.WriteLine (textEditorWidget.VAdjustment.Value +"/" + textEditorWidget.HAdjustment.Value); foreach (EditorContainerChild child in containerChildren.ToArray ()) { if (child.Child == textEditorWidget) continue; Requisition req = child.Child.SizeRequest (); - //Console.WriteLine (child.X + "x" + child.Y); - Rectangle childRectangle = new Gdk.Rectangle (/*allocation.X + */ (int)(child.FixedPosition ? child.X : child.X * textEditorWidget.Options.Zoom - textEditorWidget.HAdjustment.Value), - /*allocation.Y + */ (int)(child.FixedPosition ? child.Y : child.Y * textEditorWidget.Options.Zoom - textEditorWidget.VAdjustment.Value), req.Width, req.Height); - // if (childRectangle != child.Child.Allocation) + var childRectangle = new Gdk.Rectangle (child.X, child.Y, req.Width, req.Height); + if (!child.FixedPosition) { + double zoom = textEditorWidget.Options.Zoom; + childRectangle.X = (int)(child.X * zoom - textEditorWidget.HAdjustment.Value); + childRectangle.Y = (int)(child.Y * zoom - textEditorWidget.VAdjustment.Value); + } + childRectangle.X += allocation.X; + childRectangle.Y += allocation.Y; + child.Child.SizeAllocate (childRectangle); } } diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs index 6fdcdfa636..5c9d802202 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/TextEditorData.cs @@ -1162,11 +1162,16 @@ namespace Mono.TextEditor { SetCaretTo (line, column, true); } - + public void SetCaretTo (int line, int column, bool highlight) { + SetCaretTo (line, column, highlight, true); + } + + public void SetCaretTo (int line, int column, bool highlight, bool centerCaret) + { if (Parent != null) { - Parent.SetCaretTo (line, column, highlight); + Parent.SetCaretTo (line, column, highlight, centerCaret); } else { Caret.Location = new DocumentLocation (line, column); } diff --git a/main/src/core/MonoDevelop.Core/Makefile.am b/main/src/core/MonoDevelop.Core/Makefile.am index 3b923d5a75..7912b8c52c 100644 --- a/main/src/core/MonoDevelop.Core/Makefile.am +++ b/main/src/core/MonoDevelop.Core/Makefile.am @@ -76,6 +76,7 @@ FILES = \ MonoDevelop.Core.Execution/RemotingService.cs \ MonoDevelop.Core.FileSystem/DefaultFileSystemExtension.cs \ MonoDevelop.Core.FileSystem/FileSystemExtension.cs \ + MonoDevelop.Core.FileSystem/UnixFileSystemExtension.cs \ MonoDevelop.Core.Instrumentation/Counter.cs \ MonoDevelop.Core.Instrumentation/CounterCategory.cs \ MonoDevelop.Core.Instrumentation/InstrumentationService.cs \ diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/DefaultFileSystemExtension.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/DefaultFileSystemExtension.cs index c3a4074f2a..a03943e3d8 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/DefaultFileSystemExtension.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/DefaultFileSystemExtension.cs @@ -89,6 +89,11 @@ namespace MonoDevelop.Core.FileSystem Directory.Move (path, newName); } + public override FilePath ResolveFullPath (FilePath path) + { + return Path.GetFullPath (path); + } + public override void MoveDirectory (FilePath source, FilePath dest) { Directory.Move (source, dest); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/FileSystemExtension.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/FileSystemExtension.cs index 549c204e1e..0e3c3d509b 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/FileSystemExtension.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/FileSystemExtension.cs @@ -63,6 +63,11 @@ namespace MonoDevelop.Core.FileSystem GetNextForPath (file, false).RenameFile (file, newName); } + public virtual FilePath ResolveFullPath (FilePath path) + { + return GetNextForPath (path, true).ResolveFullPath (path); + } + public virtual void MoveFile (FilePath source, FilePath dest) { GetNextForPath (source, false).MoveFile (source, dest); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/UnixFileSystemExtension.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/UnixFileSystemExtension.cs new file mode 100644 index 0000000000..fa3fc03b14 --- /dev/null +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.FileSystem/UnixFileSystemExtension.cs @@ -0,0 +1,45 @@ +// UnixFileSystemExtension.cs +// +// Author: +// Alan McGovern <alan@xamarin.com> +// +// Copyright (c) 2011 Xamarin, Inc (http://www.xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +// + +using System; +using System.Runtime.InteropServices; + +namespace MonoDevelop.Core.FileSystem +{ + class UnixFileSystemExtension : DefaultFileSystemExtension + { + [DllImport ("libc")] + static extern string realpath (string path, IntPtr buffer); + + public override FilePath ResolveFullPath (FilePath path) + { + // Handle symlinks + return realpath (path, IntPtr.Zero); + } + } +} + diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/ConsoleProgressMonitor.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/ConsoleProgressMonitor.cs index 028ca4aaf4..c622e32ad8 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/ConsoleProgressMonitor.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/ConsoleProgressMonitor.cs @@ -45,7 +45,9 @@ namespace MonoDevelop.Core.ProgressMonitoring public ConsoleProgressMonitor () : this (Console.Out) { - wrap = true; + //FIXME: can we efficiently update Console.WindowWidth when it changes? + columns = Console.WindowWidth; + this.wrap = columns > 0; } public ConsoleProgressMonitor (TextWriter writer) diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj index ed4136b2d4..062a7e2f7f 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj @@ -396,9 +396,9 @@ <Compile Include="MonoDevelop.Core\LinuxSystemInformation.cs" /> <Compile Include="MonoDevelop.Core\UnixSystemInformation.cs" /> <Compile Include="MonoDevelop.Core\ISystemInformationProvider.cs" /> + <Compile Include="MonoDevelop.Core.FileSystem\UnixFileSystemExtension.cs" /> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="Makefile.am" /> <None Include="MonoDevelop.Projects.Formats.MSBuild.Conditions\InvalidProjectFileException.cs" /> </ItemGroup> diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs index 6ba2b46305..fe76764d5c 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs @@ -154,7 +154,10 @@ namespace MonoDevelop.Core if (file != null) return File.OpenRead (file); - return Assembly.GetCallingAssembly ().GetManifestResourceStream (name); + if (lookInCallingAssembly) + return Assembly.GetCallingAssembly ().GetManifestResourceStream (name); + + return null; } } }
\ No newline at end of file diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/FileService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/FileService.cs index 812eda1d9c..9641916778 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/FileService.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/FileService.cs @@ -47,7 +47,7 @@ namespace MonoDevelop.Core static FileServiceErrorHandler errorHandler; static FileSystemExtension fileSystemChain; - static FileSystemExtension defaultExtension = new DefaultFileSystemExtension (); + static FileSystemExtension defaultExtension = Platform.IsWindows ? new DefaultFileSystemExtension () : new UnixFileSystemExtension () ; static EventQueue eventQueue = new EventQueue (); @@ -86,6 +86,17 @@ namespace MonoDevelop.Core } } + public static FilePath ResolveFullPath (FilePath path) + { + try { + return GetFileSystemForPath (path, false).ResolveFullPath (path); + } catch (Exception e) { + if (!HandleError (GettextCatalog.GetString ("Can't resolve full path {0}", path), e)) + throw; + return FilePath.Empty; + } + } + public static void DeleteFile (string fileName) { Debug.Assert (!String.IsNullOrEmpty (fileName)); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs index 9332db2781..403e453ed6 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Formats.MSBuild/MSBuildProjectHandler.cs @@ -186,6 +186,13 @@ namespace MonoDevelop.Projects.Formats.MSBuild LogWriter logWriter = new LogWriter (monitor.Log); RemoteProjectBuilder builder = GetProjectBuilder (); + + //for some reason, MD internally handles "AnyCPU" as "", but we need to be explicit when + //passing it to the build engine + var platform = configObject.Platform; + if (platform.Length == 0) + platform = "AnyCPU"; + MSBuildResult[] results = builder.RunTarget (target, configObject.Name, configObject.Platform, logWriter, verbosity); System.Runtime.Remoting.RemotingServices.Disconnect (logWriter); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs index e5c9206f17..a6b6332edd 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs @@ -592,8 +592,10 @@ namespace MonoDevelop.Projects item.Clean (monitor, configuration); else if (item is SolutionEntityItem) { SolutionEntityItem si = (SolutionEntityItem) item; + // ce can be null if you add items to the root solution folder which + // causes them to be placed in an autogenerated 'Project Items' folder SolutionConfigurationEntry ce = conf.GetEntryForItem (si); - if (ce.Build) + if (ce != null && ce.Build) si.Clean (monitor, ce.ItemConfigurationSelector); } else { item.Clean (monitor, configuration); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestSession.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestSession.cs index 469fcf6910..bea624f779 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestSession.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestSession.cs @@ -171,7 +171,7 @@ namespace MonoDevelop.Components.AutoTest } } - object GetActiveWidget () + Gtk.Widget GetActiveWidget () { Gtk.Window win = null; foreach (Gtk.Window w in Gtk.Window.ListToplevels ()) { @@ -179,18 +179,19 @@ namespace MonoDevelop.Components.AutoTest win = w; } - if (win != null) { - Gtk.Widget widget = win; - while (widget is Gtk.Container) { - Gtk.Widget child = ((Gtk.Container)widget).FocusChild; - if (child != null) - widget = child; - else - break; - } - return widget; + if (win == null) { + throw new Exception ("No window is focused"); + } + + Gtk.Widget widget = win; + while (widget is Gtk.Container) { + Gtk.Widget child = ((Gtk.Container)widget).FocusChild; + if (child != null) + widget = child; + else + break; } - return win; + return widget; } public object GetValue (string name) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs index d6ab0a6fe4..b2b2a828eb 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs @@ -203,7 +203,9 @@ namespace MonoDevelop.Ide.Commands internal static bool CanPrint () { IPrintable print; - return IdeApp.Workbench.ActiveDocument != null + //HACK: disable printing on Windows while it doesn't work + return !Platform.IsWindows + && IdeApp.Workbench.ActiveDocument != null && (print = IdeApp.Workbench.ActiveDocument.GetContent<IPrintable> ()) != null && print.CanPrint; } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/ReferencesFinder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/ReferencesFinder.cs index 030da44327..bf8a160ad0 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/ReferencesFinder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/ReferencesFinder.cs @@ -139,6 +139,7 @@ namespace MonoDevelop.Ide.FindInFiles yield return new FileList (ctx, prj.Files.Select (f => f.FilePath)); break; case RefactoryScope.Solution: + var allProjects = solution.GetAllProjects (); if (monitor != null) monitor.BeginTask (GettextCatalog.GetString ("Search reference in solution..."), solution.GetAllProjects ().Count); var sourceProject = TypeSystemService.GetProject ((IEntity)member); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs index 4278258cde..6a6db69a45 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs @@ -211,6 +211,7 @@ namespace MonoDevelop.Ide.Gui.Components } text_render.Ypad = 0; IdeApp.Preferences.CustomPadFontChanged += CustomFontPropertyChanged;; + text_render.EditingStarted += HandleEditingStarted; text_render.Edited += HandleOnEdit; text_render.EditingCanceled += HandleOnEditCancelled; @@ -433,6 +434,11 @@ namespace MonoDevelop.Ide.Gui.Components LoggingService.LogError (ex.ToString ()); } } + } catch (Exception ex) { + // We're now in an indeterminate state, so report the exception + // and exit. + GLib.ExceptionManager.RaiseUnhandledException (ex, true); + return false; } finally { if (updatesLocked) UnlockUpdates (); @@ -1171,19 +1177,52 @@ namespace MonoDevelop.Ide.Gui.Components node.ExpandToNode (); //make sure the parent of the node that is being edited is expanded - store.SetValue (iter, ExtensibleTreeView.TextColumn, node.NodeName); + string nodeName = node.NodeName; + store.SetValue (iter, ExtensibleTreeView.TextColumn, nodeName); + // Get and validate the initial text selection + int nameLength = nodeName != null ? nodeName.Length : 0, + selectionStart = 0, selectionLength = nameLength; + foreach (NodeBuilder b in node.NodeBuilderChain) { + try { + NodeCommandHandler handler = b.CommandHandler; + handler.SetCurrentNode(node); + handler.OnRenameStarting(ref selectionStart, ref selectionLength); + } catch (Exception ex) { + LoggingService.LogError (ex.ToString ()); + } + } + if (selectionStart < 0 || selectionStart >= nameLength) + selectionStart = 0; + if (selectionStart + selectionLength > nameLength) + selectionLength = nameLength - selectionStart; + // This will apply the selection as soon as possible + GLib.Idle.Add (() => { + var editable = currentLabelEditable; + if (editable == null) + return false; + + editable.SelectRegion (selectionStart, selectionStart + selectionLength); + return false; + }); text_render.Editable = true; tree.SetCursor (store.GetPath (iter), complete_column, true); editingText = true; } + Gtk.Editable currentLabelEditable; + void HandleEditingStarted (object o, Gtk.EditingStartedArgs e) + { + currentLabelEditable = e.Editable as Gtk.Entry; + } + void HandleOnEdit (object o, Gtk.EditedArgs e) { try { editingText = false; text_render.Editable = false; + currentLabelEditable = null; Gtk.TreeIter iter; if (!store.GetIterFromString (out iter, e.Path)) @@ -1227,6 +1266,7 @@ namespace MonoDevelop.Ide.Gui.Components { editingText = false; text_render.Editable = false; + currentLabelEditable = null; TreeNodeNavigator node = (TreeNodeNavigator) GetSelectedNode (); if (node == null) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeCommandHandler.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeCommandHandler.cs index 9e7efa2362..bf5ad2227a 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeCommandHandler.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeCommandHandler.cs @@ -86,6 +86,10 @@ namespace MonoDevelop.Ide.Gui.Components get { return tree; } } + public virtual void OnRenameStarting (ref int selectionStart, ref int selectionLength) + { + } + public virtual void RenameItem (string newName) { } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/IEditableTextBuffer.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/IEditableTextBuffer.cs index de3a8f8575..430e0b0a15 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/IEditableTextBuffer.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Content/IEditableTextBuffer.cs @@ -36,6 +36,7 @@ namespace MonoDevelop.Ide.Gui.Content int LineCount { get; } void SetCaretTo (int line, int column); void SetCaretTo (int line, int column, bool highlightLine); + void SetCaretTo (int line, int column, bool highlightLine, bool centerCaret); bool HasInputFocus { get; } event EventHandler CaretPositionSet; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AboutMonoDevelopTabPage.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AboutMonoDevelopTabPage.cs index 10658db1f2..d4553ee78f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AboutMonoDevelopTabPage.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AboutMonoDevelopTabPage.cs @@ -89,14 +89,19 @@ namespace MonoDevelop.Ide.Gui.Dialogs internal class ScrollBox : DrawingArea { Pixbuf image; + Pixbuf imageBg; + int imageHeight, imageWidth; Pixbuf monoPowered; - int scroll; Pango.Layout layout; int monoLogoSpacing = 80; - int textTop; - int scrollPause; - int scrollStart; Gdk.GC backGc; + + int scrollHeightPx, scrollStartPx, scrolledUpPx; + long lastFrameTicks; + const int fps = 20; + const int pixelsPerFrame = 1; + const int pauseSeconds = 5; + internal uint TimerHandle; string[] authors = new string[] { "Lluis Sanchez Gual", @@ -204,6 +209,19 @@ namespace MonoDevelop.Ide.Gui.Dialogs var bgColStr = BrandingService.GetString ("AboutBox", "BackgroundColor"); if (bgColStr != null) Gdk.Color.Parse (bgColStr, ref bgColor); + + //branders may provide either fg image or bg image, or both + using (var stream = BrandingService.GetStream ("AboutImage.png", false)) { + image = (stream != null ? new Gdk.Pixbuf (stream) : null); + } + using (var streamBg = BrandingService.GetStream ("AboutImageBg.png", false)) { + imageBg = (streamBg != null ? new Gdk.Pixbuf (streamBg) : null); + } + + //if branding did not provide any image, use the built-in one + if (imageBg == null && image == null) { + image = Gdk.Pixbuf.LoadFromResource ("AboutImage.png"); + } } catch (Exception ex) { LoggingService.LogError ("Error loading about box branding", ex); } @@ -215,10 +233,18 @@ namespace MonoDevelop.Ide.Gui.Dialogs this.Realized += new EventHandler (OnRealized); this.ModifyBg (Gtk.StateType.Normal, bgColor); this.ModifyText (Gtk.StateType.Normal, textColor); - using (var stream = BrandingService.GetStream ("AboutImage.png", true)) - image = new Gdk.Pixbuf (stream); - monoPowered = new Gdk.Pixbuf (GetType ().Assembly, "mono-powered.png"); - this.SetSizeRequest (450, image.Height - 1); + + if (image != null) { + imageHeight = image.Height; + imageWidth = image.Width; + } + if (imageBg != null) { + imageHeight = Math.Max (imageHeight, imageBg.Height); + imageWidth = Math.Max (imageWidth, imageBg.Width); + } + + monoPowered = Gdk.Pixbuf.LoadFromResource ("mono-powered.png"); + this.SetSizeRequest (imageWidth, imageHeight - 1); TimerHandle = GLib.Timeout.Add (50, new TimeoutHandler (ScrollDown)); } @@ -261,76 +287,75 @@ namespace MonoDevelop.Ide.Gui.Dialogs bool ScrollDown () { - if (scrollPause > 0) { - if (--scrollPause == 0) - ++scroll; - } else - ++scroll; + long oldTicks = this.lastFrameTicks; + long newTicks = DateTime.Now.Ticks; + + if (scrolledUpPx >= scrollHeightPx) { + scrolledUpPx = scrollHeightPx; + if ((newTicks - oldTicks) > (pauseSeconds * TimeSpan.TicksPerSecond)) { + scrolledUpPx = 0; + this.lastFrameTicks = newTicks; + } else { + return true; + } + } else if (oldTicks == 0) { + this.lastFrameTicks = newTicks; + } else { + this.lastFrameTicks = newTicks; + int ticks = (int)(lastFrameTicks - oldTicks); + this.scrolledUpPx += (int)(ticks * pixelsPerFrame * fps / TimeSpan.TicksPerSecond); + } + int w, h; - this.GdkWindow.GetSize (out w, out h); - this.QueueDrawArea (0, 0, w, image.Height); + this.QueueDrawArea (0, 0, Allocation.Width, imageHeight); return true; } - void DrawImage () + void DrawText (Drawable window) { - if (image != null) { - int w, h; - this.GdkWindow.GetSize (out w, out h); - this.GdkWindow.DrawPixbuf (backGc, image, 0, 0, (w - image.Width) / 2, 0, -1, -1, RgbDither.Normal, 0, 0); - } - } - - void DrawText () - { - int width, height; - GdkWindow.GetSize (out width, out height); - - int widthPixel, heightPixel; - layout.GetPixelSize (out widthPixel, out heightPixel); - - GdkWindow.DrawLayout (Style.TextGC (StateType.Normal), 0, textTop - scroll, layout); - GdkWindow.DrawPixbuf (backGc, monoPowered, 0, 0, (width / 2) - (monoPowered.Width / 2), textTop - scroll + heightPixel + monoLogoSpacing, -1, -1, RgbDither.Normal, 0, 0); - - heightPixel = heightPixel - 80 + image.Height; - - if ((scroll == heightPixel) && (scrollPause == 0)) - scrollPause = 60; - if (scroll > heightPixel + monoLogoSpacing + monoPowered.Height) - scroll = scrollStart; + var alloc = Allocation; + int pos = scrollStartPx - scrolledUpPx; + window.DrawLayout (Style.TextGC (StateType.Normal), 0, pos, layout); + int logoPos = pos + scrollHeightPx - monoPowered.Height / 2 - imageHeight / 2; + window.DrawPixbuf (backGc, monoPowered, 0, 0, (alloc.Width / 2) - (monoPowered.Width / 2), + logoPos, -1, -1, RgbDither.Normal, 0, 0); } protected override bool OnExposeEvent (Gdk.EventExpose evnt) { - int w, h; - - this.GdkWindow.GetSize (out w, out h); - this.DrawText (); - this.DrawImage (); - // this.GdkWindow.DrawRectangle (backGc, true, 0, 210, w, 10); + var alloc = this.Allocation; + if (imageBg != null) { + evnt.Window.DrawPixbuf (backGc, imageBg, 0, 0, + (alloc.Width - imageBg.Width) / 2, 0, + -1, -1, RgbDither.Normal, 0, 0); + } + DrawText (evnt.Window); + if (this.image != null) { + evnt.Window.DrawPixbuf (backGc, image, 0, 0, + (alloc.Width - image.Width) / 2, 0, + -1, -1, RgbDither.Normal, 0, 0); + } return false; } protected void OnRealized (object o, EventArgs args) { - int x, y; - int w, h; - GdkWindow.GetOrigin (out x, out y); - GdkWindow.GetSize (out w, out h); - - textTop = y + image.Height - 30; - scrollStart = -(image.Height - textTop); - scroll = scrollStart; + scrollStartPx = imageHeight; layout = new Pango.Layout (this.PangoContext); // FIXME: this seems wrong but works - layout.Width = w * (int)Pango.Scale.PangoScale; + layout.Width = Allocation.Width * (int)Pango.Scale.PangoScale; layout.Wrap = Pango.WrapMode.Word; layout.Alignment = Pango.Alignment.Center; FontDescription fd = FontDescription.FromString ("Tahoma 10"); layout.FontDescription = fd; layout.SetMarkup (CreditText); + int widthPx, heightPx; + layout.GetPixelSize (out widthPx, out heightPx); + + this.scrollHeightPx = heightPx + monoLogoSpacing + monoPowered.Height + imageHeight / 2; + backGc = new Gdk.GC (GdkWindow); backGc.RgbBgColor = bgColor; } @@ -343,4 +368,4 @@ namespace MonoDevelop.Ide.Gui.Dialogs } } } -} +}
\ No newline at end of file diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/VersionInformationTabPage.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/VersionInformationTabPage.cs index 9b99613fe3..266cc0ef71 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/VersionInformationTabPage.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/VersionInformationTabPage.cs @@ -49,50 +49,50 @@ namespace MonoDevelop.Ide.Gui.Dialogs internal class VersionInformationTabPage: VBox { - static bool IsMono () + bool destroyed; + + public VersionInformationTabPage () { - return Type.GetType ("Mono.Runtime") != null; + SetLabel (GettextCatalog.GetString ("Loading...")); + + new System.Threading.Thread (() => { + try { + var text = SystemInformation.ToText (); + Gtk.Application.Invoke (delegate { + if (destroyed) + return; + SetText (text); + }); + } catch (Exception ex) { + Gtk.Application.Invoke (delegate { + if (destroyed) + return; + SetLabel (GettextCatalog.GetString ("Failed to load version information.")); + }); + } + }).Start (); } - static string GetMonoVersionNumber () + void Clear () { - var t = Type.GetType ("Mono.Runtime"); - if (t == null) - return "unknown"; - var mi = t.GetMethod ("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static); - if (mi == null) { - LoggingService.LogError ("No Mono.Runtime.GetDiplayName method found."); - return "error"; + foreach (var c in this.Children) { + this.Remove (c); } - return (string)mi.Invoke (null, null); } - static string GetGtkVersion () + void SetLabel (string text) { - uint v1 = 2, v2 = 0, v3 = 0; - - while (v1 < 99 && Gtk.Global.CheckVersion (v1, v2, v3) == null) - v1++; - v1--; - - while (v2 < 99 && Gtk.Global.CheckVersion (v1, v2, v3) == null) - v2++; - v2--; - - v3 = 0; - while (v3 < 99 && Gtk.Global.CheckVersion (v1, v2, v3) == null) - v3++; - v3--; - - if (v1 == 99 || v2 == 99 || v3 == 99) - return "unknown"; - return v1 +"." + v2 + "."+ v3; + Clear (); + var label = new Gtk.Label (text); + PackStart (label, true, true, 0); + ShowAll (); } - - public VersionInformationTabPage () + + void SetText (string text) { + Clear (); var buf = new TextBuffer (null); - buf.Text = SystemInformation.ToText (); + buf.Text = text; var sw = new ScrolledWindow () { BorderWidth = 6, @@ -108,6 +108,13 @@ namespace MonoDevelop.Ide.Gui.Dialogs sw.Child.ModifyFont (Pango.FontDescription.FromString (DesktopService.DefaultMonospaceFont)); PackStart (sw, true, true, 0); + ShowAll (); + } + + public override void Destroy () + { + base.Destroy (); + destroyed = true; } } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs index 2071478da2..30cf8fac0d 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs @@ -229,7 +229,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad if (targetPath.ParentDirectory == targetProject.BaseDirectory) q = GettextCatalog.GetString ("Do you really want to move the folder '{0}' to the root folder of project '{1}'?", what, targetProject.Name); else - q = GettextCatalog.GetString ("Do you really want to move the folder '{0}' to the folder '{1}'?", what, targetPath.FileName); + q = GettextCatalog.GetString ("Do you really want to move the folder '{0}' to the folder '{1}'?", what, targetPath.ParentDirectory.FileName); if (!MessageService.Confirm (q, AlertButton.Move)) return; } @@ -237,7 +237,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad if (targetPath.ParentDirectory == targetProject.BaseDirectory) q = GettextCatalog.GetString ("Do you really want to copy the folder '{0}' to the root folder of project '{1}'?", what, targetProject.Name); else - q = GettextCatalog.GetString ("Do you really want to copy the folder '{0}' to the folder '{1}'?", what, targetPath.FileName); + q = GettextCatalog.GetString ("Do you really want to copy the folder '{0}' to the folder '{1}'?", what, targetPath.ParentDirectory.FileName); if (!MessageService.Confirm (q, AlertButton.Copy)) return; } @@ -303,8 +303,12 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad using (IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor (GettextCatalog.GetString("Copying files..."), MonoDevelop.Ide.Gui.Stock.CopyIcon, true)) { + // If we drag and drop a node in the treeview corresponding to a directory, do not move + // the entire directory. We should only move the files which exist in the project. Otherwise + // we will need a lot of hacks all over the code to prevent us from incorrectly moving version + // control related files such as .svn directories bool move = operation == DragOperation.Move; - IdeApp.ProjectOperations.TransferFiles (monitor, sourceProject, source, targetProject, targetPath, move, false); + IdeApp.ProjectOperations.TransferFiles (monitor, sourceProject, source, targetProject, targetPath, move, true); } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs index 81010e6413..d1ee44287a 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs @@ -137,6 +137,13 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad public class ProjectFileNodeCommandHandler: NodeCommandHandler { + public override void OnRenameStarting (ref int selectionStart, ref int selectionLength) + { + string name = CurrentNode.NodeName; + selectionStart = 0; + selectionLength = Path.GetFileNameWithoutExtension(name).Length; + } + public override void RenameItem (string newName) { ProjectFile file = (ProjectFile) CurrentNode.DataItem; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DockItemToolbarLoader.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DockItemToolbarLoader.cs index aa939644e1..1efcf2e3c7 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DockItemToolbarLoader.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DockItemToolbarLoader.cs @@ -152,18 +152,27 @@ namespace MonoDevelop.Ide.Gui { CommandInfo cmdInfo = IdeApp.CommandService.GetCommandInfo (cmdId, targetRoute); - if (lastDesc != cmdInfo.Description) { + bool hasAccel = string.IsNullOrEmpty (cmdInfo.AccelKey); + bool hasIcon = !cmdInfo.Icon.IsNull; + string desc = cmdInfo.Description; + + //If the button only has an icon it's not always clear what it does. In such cases, use the label as a + //fallback tooltip. Also do this if there's an accelerator, so the user can see what it is. + if (string.IsNullOrEmpty (desc) && (hasIcon || hasAccel)) + desc = cmdInfo.Text; + + if (lastDesc != desc) { string toolTip; - if (string.IsNullOrEmpty (cmdInfo.AccelKey)) { - toolTip = cmdInfo.Description; + if (hasAccel) { + toolTip = desc; } else { - toolTip = cmdInfo.Description + " (" + KeyBindingManager.BindingToDisplayLabel (cmdInfo.AccelKey, false) + ")"; + toolTip = desc + " (" + KeyBindingManager.BindingToDisplayLabel (cmdInfo.AccelKey, false) + ")"; } button.TooltipText = toolTip; - lastDesc = cmdInfo.Description; + lastDesc = desc; } - if (cmdInfo.Icon.IsNull && button.Label != cmdInfo.Text) + if (!hasIcon && button.Label != cmdInfo.Text) button.Label = cmdInfo.Text; if (cmdInfo.Icon != stockId) { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/HiddenTextEditorViewContent.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/HiddenTextEditorViewContent.cs index a0b587ab05..f38ee30c18 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/HiddenTextEditorViewContent.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/HiddenTextEditorViewContent.cs @@ -167,6 +167,9 @@ namespace MonoDevelop.Ide.Gui public void SetCaretTo (int line, int column, bool highlightCaretLine) { } + public void SetCaretTo (int line, int column, bool highlightCaretLine, bool centerCaretLine) + { + } public void Undo() { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs index e9bbf2517b..5c132516bc 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs @@ -191,6 +191,11 @@ namespace MonoDevelop.Ide.Gui public void Present () { + //HACK: window resets its size on Win32 on Present if it was maximized by snapping to top edge of screen + //partially work around this by avoiding the present call if it's already toplevel + if (Platform.IsWindows && RootWindow.HasToplevelFocus) + return; + //FIXME: this should do a "request for attention" dock bounce on MacOS but only in some cases. //Doing it for all Present calls is excessive and annoying. Maybe we have too many Present calls... //Mono.TextEditor.GtkWorkarounds.PresentWindowWithNotification (RootWindow); @@ -360,7 +365,7 @@ namespace MonoDevelop.Ide.Gui if (vcFound != null) { IEditableTextBuffer ipos = vcFound.GetContent<IEditableTextBuffer> (); if (line >= 1 && ipos != null) { - ipos.SetCaretTo (line, column >= 1 ? column : 1, options.HasFlag (OpenDocumentOptions.HighlightCaretLine)); + ipos.SetCaretTo (line, column >= 1 ? column : 1, options.HasFlag (OpenDocumentOptions.HighlightCaretLine), options.HasFlag (OpenDocumentOptions.CenterCaretLine)); } if (options.HasFlag (OpenDocumentOptions.BringToFront)) { @@ -613,14 +618,18 @@ namespace MonoDevelop.Ide.Gui window.ViewContent.Save (window.ViewContent.ContentName); else window.ViewContent.Save (); + args.Cancel |= window.ViewContent.IsDirty; + } catch (Exception ex) { args.Cancel = true; MessageService.ShowException (ex, GettextCatalog.GetString ("The document could not be saved.")); } } + if (args.Cancel) + FindDocument (window).Select (); } else { - args.Cancel = result != AlertButton.CloseWithoutSave; + args.Cancel |= result != AlertButton.CloseWithoutSave; if (!args.Cancel) window.ViewContent.DiscardChanges (); } @@ -1100,10 +1109,11 @@ namespace MonoDevelop.Ide.Gui { None = 0, BringToFront = 1, - HighlightCaretLine = 1 << 1, - OnlyInternalViewer = 1 << 2, - OnlyExternalViewer = 1 << 3, + CenterCaretLine = 1 << 1, + HighlightCaretLine = 1 << 2, + OnlyInternalViewer = 1 << 3, + OnlyExternalViewer = 1 << 4, - Default = BringToFront | HighlightCaretLine + Default = BringToFront | CenterCaretLine | HighlightCaretLine } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectDialog.cs index 121bcbfc75..bca050dd11 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectDialog.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectDialog.cs @@ -387,7 +387,7 @@ namespace MonoDevelop.Ide.Projects { string solution = txt_subdirectory.Text; string name = txt_name.Text; - string location = entry_location.Path; + string location = ProjectLocation; if(solution.Equals("")) solution = name; //This was empty when adding after first combine @@ -416,12 +416,12 @@ namespace MonoDevelop.Ide.Projects { ProjectTemplate item = (ProjectTemplate) templateView.CurrentlySelected; try { - System.IO.Directory.CreateDirectory (ProjectLocation); + System.IO.Directory.CreateDirectory (location); } catch (IOException) { - MessageService.ShowError (GettextCatalog.GetString ("Could not create directory {0}. File already exists.", ProjectLocation)); + MessageService.ShowError (GettextCatalog.GetString ("Could not create directory {0}. File already exists.", location)); return false; } catch (UnauthorizedAccessException) { - MessageService.ShowError (GettextCatalog.GetString ("You do not have permission to create to {0}", ProjectLocation)); + MessageService.ShowError (GettextCatalog.GetString ("You do not have permission to create to {0}", location)); return false; } @@ -443,8 +443,8 @@ namespace MonoDevelop.Ide.Projects { ProjectCreateInformation CreateProjectCreateInformation () { ProjectCreateInformation cinfo = new ProjectCreateInformation (); - cinfo.SolutionPath = SolutionLocation; - cinfo.ProjectBasePath = ProjectLocation; + cinfo.SolutionPath = FileService.ResolveFullPath (SolutionLocation); + cinfo.ProjectBasePath = FileService.ResolveFullPath (ProjectLocation); cinfo.ProjectName = txt_name.Text; cinfo.SolutionName = CreateSolutionDirectory ? txt_subdirectory.Text : txt_name.Text; cinfo.ParentFolder = parentFolder; @@ -548,7 +548,7 @@ namespace MonoDevelop.Ide.Projects { if (basePath == null) basePath = IdeApp.ProjectOperations.ProjectsDefaultPath; - entry_location.Path = basePath; + entry_location.Path = FileService.ResolveFullPath (basePath); PathChanged (null, null); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj index ba281a0b1d..afa67db7ae 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj @@ -1508,7 +1508,6 @@ <Compile Include="MonoDevelop.Components\ContextMenuTreeView.cs" /> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="Makefile.am" /> <Data Include="options\DefaultEditingLayout.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs index 0826f8239d..2b44fa430e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs @@ -1063,8 +1063,6 @@ namespace MonoDevelop.Ide ITimeTracker tt = Counters.BuildItemTimer.BeginTiming ("Building " + entry.Name); try { - tt.Trace ("Pre-build operations"); - DoBeforeCompileAction (); IProgressMonitor monitor = IdeApp.Workbench.ProgressMonitors.GetBuildProgressMonitor (); tt.Trace ("Start build event"); @@ -1087,12 +1085,17 @@ namespace MonoDevelop.Ide { BuildResult result = null; try { - tt.Trace ("Building item"); - SolutionItem it = entry as SolutionItem; - if (it != null) - result = it.Build (monitor, IdeApp.Workspace.ActiveConfiguration, true); - else - result = entry.RunTarget (monitor, ProjectService.BuildTarget, IdeApp.Workspace.ActiveConfiguration); + tt.Trace ("Pre-build operations"); + result = DoBeforeCompileAction (); + + if (result.ErrorCount == 0) { + tt.Trace ("Building item"); + SolutionItem it = entry as SolutionItem; + if (it != null) + result = it.Build (monitor, IdeApp.Workspace.ActiveConfiguration, true); + else + result = entry.RunTarget (monitor, ProjectService.BuildTarget, IdeApp.Workspace.ActiveConfiguration); + } } catch (Exception ex) { monitor.ReportError (GettextCatalog.GetString ("Build failed."), ex); } finally { @@ -1104,8 +1107,10 @@ namespace MonoDevelop.Ide }); } - void DoBeforeCompileAction () + BuildResult DoBeforeCompileAction () { + var result = new BuildResult (); + var couldNotSaveError = "The build has been aborted as the file '{0}' could not be saved"; BeforeCompileAction action = IdeApp.Preferences.BeforeBuildSaveAction; switch (action) { @@ -1120,6 +1125,8 @@ namespace MonoDevelop.Ide AlertButton.BuildWithoutSave, AlertButton.Save) == AlertButton.Save) { MarkFileDirty (doc.FileName); doc.Save (); + if (doc.IsDirty) + result.AddError (string.Format (couldNotSaveError, Path.GetFileName (doc.FileName)), doc.FileName); } else break; @@ -1128,13 +1135,18 @@ namespace MonoDevelop.Ide break; case BeforeCompileAction.SaveAllFiles: foreach (var doc in new List<MonoDevelop.Ide.Gui.Document> (IdeApp.Workbench.Documents)) - if (doc.IsDirty && doc.Project != null) + if (doc.IsDirty && doc.Project != null) { doc.Save (); + if (doc.IsDirty) + result.AddError (string.Format (couldNotSaveError, Path.GetFileName (doc.FileName)), doc.FileName); + } break; default: System.Diagnostics.Debug.Assert(false); break; } + + return result; } void BeginBuild (IProgressMonitor monitor) @@ -1269,10 +1281,14 @@ namespace MonoDevelop.Ide if (folder.IsRoot) { // Don't allow adding files to the root folder. VS doesn't allow it - SolutionFolder newFolder = new SolutionFolder (); - newFolder.Name = "Solution Items"; - folder.AddItem (newFolder); - folder = newFolder; + // If there is no existing folder, create one + var itemsFolder = (SolutionFolder) folder.Items.Where (item => item.Name == "Solution Items").FirstOrDefault (); + if (itemsFolder == null) { + itemsFolder = new SolutionFolder (); + itemsFolder.Name = "Solution Items"; + folder.AddItem (itemsFolder); + } + folder = itemsFolder; } if (!fp.IsChildPathOf (folder.BaseDirectory)) { @@ -1526,20 +1542,26 @@ namespace MonoDevelop.Ide !copyOnlyProjectFiles || IsDirectoryHierarchyEmpty (sourcePath))); - // Get the list of files to copy - + // We need to remove all files + directories from the source project + // but when dealing with the VCS addins we need to process only the + // files so we do not create a 'file' in the VCS which corresponds + // to a directory in the project and blow things up. + List<ProjectFile> filesToRemove = null; List<ProjectFile> filesToMove = null; try { //get the real ProjectFiles if (sourceProject != null) { if (sourceIsFolder) { var virtualPath = sourcePath.ToRelative (sourceProject.BaseDirectory); - filesToMove = sourceProject.Files.GetFilesInVirtualPath (virtualPath).ToList (); + // Grab all the child nodes of the folder we just dragged/dropped + filesToRemove = sourceProject.Files.GetFilesInVirtualPath (virtualPath).ToList (); + // Add the folder itself so we can remove it from the soruce project if its a Move operation + filesToRemove.Add (sourceProject.Files.Where (f => f.ProjectVirtualPath == virtualPath).FirstOrDefault ()); } else { - filesToMove = new List<ProjectFile> (); + filesToRemove = new List<ProjectFile> (); var pf = sourceProject.GetProjectFile (sourcePath); if (pf != null) - filesToMove.Add (pf); + filesToRemove.Add (pf); } } //get all the non-project files and create fake ProjectFiles @@ -1547,12 +1569,12 @@ namespace MonoDevelop.Ide var col = new List<ProjectFile> (); GetAllFilesRecursive (sourcePath, col); if (sourceProject != null) { - var names = new HashSet<string> (filesToMove.Select (f => sourceProject.BaseDirectory.Combine (f.ProjectVirtualPath).ToString ())); + var names = new HashSet<string> (filesToRemove.Select (f => sourceProject.BaseDirectory.Combine (f.ProjectVirtualPath).ToString ())); foreach (var f in col) if (names.Add (f.Name)) - filesToMove.Add (f); + filesToRemove.Add (f); } else { - filesToMove = col; + filesToRemove = col; } } } catch (Exception ex) { @@ -1560,6 +1582,9 @@ namespace MonoDevelop.Ide return; } + // Strip out all the directories to leave us with just the files. + filesToMove = filesToRemove.Where (f => f.Subtype != Subtype.Directory).ToList (); + // If copying a single file, bring any grouped children along ProjectFile sourceParent = null; if (filesToMove.Count == 1 && sourceProject != null) { @@ -1630,8 +1655,6 @@ namespace MonoDevelop.Ide } if (sourceProject != null) { - if (removeFromSource && sourceProject.Files.Contains (file)) - sourceProject.Files.Remove (file); if (fileIsLink) { var linkFile = (sourceProject == targetProject)? file : (ProjectFile) file.Clone (); if (movingFolder) { @@ -1660,6 +1683,12 @@ namespace MonoDevelop.Ide monitor.Step (1); } + if (removeFromSource) { + // Remove all files and directories under 'sourcePath' + foreach (var v in filesToRemove) + sourceProject.Files.Remove (v); + } + var pfolder = sourcePath.ParentDirectory; // If this was the last item in the folder, make sure we keep diff --git a/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj b/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj index 3f599fbfce..efe2e823d0 100644 --- a/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj +++ b/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj @@ -84,7 +84,6 @@ </Reference> </ItemGroup> <ItemGroup> - <None Include="ChangeLog" /> <None Include="app.config" /> </ItemGroup> <ItemGroup> diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/TestViewContent.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/TestViewContent.cs index 774567ccac..5a2d506045 100644 --- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/TestViewContent.cs +++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/TestViewContent.cs @@ -172,6 +172,9 @@ namespace MonoDevelop.CSharpBinding.Tests public void SetCaretTo (int line, int column, bool highlightCaretLine)
{
}
+ public void SetCaretTo (int line, int column, bool highlightCaretLine, bool centerCaret) + { + } public void Undo()
{
diff --git a/main/tests/UserInterfaceTests/Main.cs b/main/tests/UserInterfaceTests/Main.cs index 938a69cffc..ef3f2ed2c2 100644 --- a/main/tests/UserInterfaceTests/Main.cs +++ b/main/tests/UserInterfaceTests/Main.cs @@ -96,6 +96,10 @@ namespace UserInterfaceTests } AutoTestClientSession session = new AutoTestClientSession (); + Console.CancelKeyPress += delegate { + Console.WriteLine ("Test session cancelled"); + session.Stop (); + }; try { if (attach) { session.AttachApplication (); diff --git a/main/tests/UserInterfaceTests/MonoDevelop.UserInterfaceTests/IdeApi.cs b/main/tests/UserInterfaceTests/MonoDevelop.UserInterfaceTests/IdeApi.cs index ca919a877e..13d4605b64 100644 --- a/main/tests/UserInterfaceTests/MonoDevelop.UserInterfaceTests/IdeApi.cs +++ b/main/tests/UserInterfaceTests/MonoDevelop.UserInterfaceTests/IdeApi.cs @@ -34,7 +34,7 @@ namespace MonoDevelop.UserInterfaceTests { public static void OpenFile (FilePath file) { - TestService.Session.GlobalInvoke ("MonoDevelop.Ide.IdeApp.Workbench.OpenDocument", (FilePath) file); + TestService.Session.GlobalInvoke ("MonoDevelop.Ide.IdeApp.Workbench.OpenDocument", (FilePath) file, true); } public static void OpenFile (string relFile, FilePath projectFilePath) diff --git a/main/tests/UserInterfaceTests/UserInterfaceTests.csproj b/main/tests/UserInterfaceTests/UserInterfaceTests.csproj index c684cf3f93..e38ef837f2 100644 --- a/main/tests/UserInterfaceTests/UserInterfaceTests.csproj +++ b/main/tests/UserInterfaceTests/UserInterfaceTests.csproj @@ -1 +1,63 @@ -<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{07F55155-51A8-4072-9F80-FA473666F086}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>UserInterfaceTests</RootNamespace>
<AssemblyName>UserInterfaceTests</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\build\bin</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\build\bin</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="Main.cs" />
<Compile Include="MonoDevelop.Components.AutoTest\TestStep.cs" />
<Compile Include="MonoDevelop.UserInterfaceTests\SimpleTest.cs" />
<Compile Include="MonoDevelop.Components.AutoTest\StressTest.cs" />
<Compile Include="MonoDevelop.Components.AutoTest\UndoTestStepAttribute.cs" />
<Compile Include="MonoDevelop.UserInterfaceTests\Ide.cs" />
<Compile Include="MonoDevelop.UserInterfaceTests\IdeApi.cs" />
<Compile Include="MonoDevelop.Components.AutoTest\TestService.cs" />
<Compile Include="MonoDevelop.UserInterfaceTests\BaseStressTest.cs" />
<Compile Include="MonoDevelop.UserInterfaceTests\Util.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\core\MonoDevelop.Ide\MonoDevelop.Ide.csproj">
<Project>{27096E7F-C91C-4AC6-B289-6897A701DF21}</Project>
<Name>MonoDevelop.Ide</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\src\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
<Project>{7525BB88-6142-4A26-93B9-A30C6983390A}</Project>
<Name>MonoDevelop.Core</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="MonoDevelop.Components.AutoTest\" />
<Folder Include="MonoDevelop.UserInterfaceTests\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{07F55155-51A8-4072-9F80-FA473666F086}</ProjectGuid> + <OutputType>Exe</OutputType> + <RootNamespace>UserInterfaceTests</RootNamespace> + <AssemblyName>UserInterfaceTests</AssemblyName> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\build\bin</OutputPath> + <DefineConstants>DEBUG</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>none</DebugType> + <Optimize>false</Optimize> + <OutputPath>..\..\build\bin</OutputPath> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" /> + <Reference Include="System.Core" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Main.cs" /> + <Compile Include="MonoDevelop.Components.AutoTest\TestStep.cs" /> + <Compile Include="MonoDevelop.UserInterfaceTests\SimpleTest.cs" /> + <Compile Include="MonoDevelop.Components.AutoTest\StressTest.cs" /> + <Compile Include="MonoDevelop.Components.AutoTest\UndoTestStepAttribute.cs" /> + <Compile Include="MonoDevelop.UserInterfaceTests\Ide.cs" /> + <Compile Include="MonoDevelop.UserInterfaceTests\IdeApi.cs" /> + <Compile Include="MonoDevelop.Components.AutoTest\TestService.cs" /> + <Compile Include="MonoDevelop.UserInterfaceTests\BaseStressTest.cs" /> + <Compile Include="MonoDevelop.UserInterfaceTests\Util.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\src\core\MonoDevelop.Ide\MonoDevelop.Ide.csproj"> + <Project>{27096E7F-C91C-4AC6-B289-6897A701DF21}</Project> + <Name>MonoDevelop.Ide</Name> + <Private>False</Private> + </ProjectReference> + <ProjectReference Include="..\..\src\core\MonoDevelop.Core\MonoDevelop.Core.csproj"> + <Project>{7525BB88-6142-4A26-93B9-A30C6983390A}</Project> + <Name>MonoDevelop.Core</Name> + <Private>False</Private> + </ProjectReference> + </ItemGroup> + <ItemGroup> + <Folder Include="MonoDevelop.Components.AutoTest\" /> + <Folder Include="MonoDevelop.UserInterfaceTests\" /> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> +</Project>
\ No newline at end of file diff --git a/version-checks b/version-checks index 37d19361e8..2b3dfb1938 100755 --- a/version-checks +++ b/version-checks @@ -25,7 +25,7 @@ DEP[1]=heap-shot DEP_NAME[1]=HEAPSHOT DEP_PATH[1]=${top_srcdir}/../heap-shot DEP_MODULE[1]=git@github.com:mono/heap-shot.git -DEP_NEEDED_VERSION[1]=498dba772c1e514e5a0d12d4b90e202acc30d1d2 +DEP_NEEDED_VERSION[1]=2bf14a9d62e5b649a91f5455ba7c222d66b6c088 DEP_BRANCH_AND_REMOTE[1]="master origin/master" # other dependencies |