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

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Karlaš <david.karlas@xamarin.com>2015-11-24 20:46:28 +0300
committerDavid Karlaš <david.karlas@xamarin.com>2015-11-24 20:46:28 +0300
commitfdcef13057a9c4a9bc924602c9b2b33c1da3bf63 (patch)
treef5d45bca682a39c3946dbd9fee281e152288a4aa /main/src/addins
parentee4190106f0d102c4fdce57fc3c5637cbce7b9aa (diff)
parent07a993cf6d80660fde31099c1aca8029a3035807 (diff)
Merge branch 'master' into newExceptionDialog
Diffstat (limited to 'main/src/addins')
-rw-r--r--main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj1
-rw-r--r--main/src/addins/AspNet/Tests/WebForms/WebFormsSyntaxModeTests.cs66
-rw-r--r--main/src/addins/AspNet/WebForms/WebFormsSyntaxMode.cs10
-rw-r--r--main/src/addins/CBinding/CBinding.Autotools/CBinding.Autotools.csproj2
-rw-r--r--main/src/addins/CBinding/Gui/GeneralOptionsPanel.cs3
-rw-r--r--main/src/addins/CSharpBinding/AddinInfo.cs1
-rw-r--r--main/src/addins/CSharpBinding/Autotools/Autotools.csproj2
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/MDRefactoringScript.cs2
-rw-r--r--main/src/addins/CSharpBinding/templates/PortableLibrary.xpt.xml2
-rw-r--r--main/src/addins/CSharpBinding/templates/SharedAssetsProject.xpt.xml2
-rw-r--r--main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.csproj1
-rw-r--r--main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs3
-rw-r--r--main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs14
-rw-r--r--main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs13
-rw-r--r--main/src/addins/MacPlatform/MacPlatform.cs4
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs162
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/SelectorView.cs211
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/StatusBar.cs65
-rw-r--r--main/src/addins/MacPlatform/icons/build.pngbin326 -> 1460 bytes
-rw-r--r--main/src/addins/MacPlatform/icons/build@2x.pngbin387 -> 1642 bytes
-rw-r--r--main/src/addins/MacPlatform/icons/continue.pngbin349 -> 1470 bytes
-rw-r--r--main/src/addins/MacPlatform/icons/continue@2x.pngbin389 -> 1646 bytes
-rw-r--r--main/src/addins/MacPlatform/icons/device.pngbin228 -> 1302 bytes
-rw-r--r--main/src/addins/MacPlatform/icons/device@2x.pngbin261 -> 1416 bytes
-rw-r--r--main/src/addins/MacPlatform/icons/project.pngbin241 -> 1319 bytes
-rw-r--r--main/src/addins/MacPlatform/icons/project@2x.pngbin254 -> 1397 bytes
-rw-r--r--main/src/addins/MacPlatform/icons/stop.pngbin210 -> 1261 bytes
-rw-r--r--main/src/addins/MacPlatform/icons/stop@2x.pngbin209 -> 1283 bytes
-rw-r--r--main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs12
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests.NonUserCodeTestLib/MonoDevelop.Debugger.Tests.NonUserCodeTestLib.csproj3
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj1
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs2
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BusyEvaluatorDialog.cs13
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs69
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs5
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs2
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs1
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs2
-rw-r--r--main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.BusyEvaluatorDialog.cs110
-rw-r--r--main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs187
-rw-r--r--main/src/addins/MonoDevelop.Debugger/gtk-gui/generated.cs64
-rw-r--r--main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic277
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs30
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ToolboxWidget.cs160
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/libstetic/libstetic.csproj4
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/libstetic/wrapper/Misc.cs5
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackage.cs9
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeSettings.cs30
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableCheckForUpdatesTaskRunner.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/TestableCheckForUpdatesTaskRunner.cs)28
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj6
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/CheckForUpdatesProgressMonitorTests.cs148
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MinClientVersionTests.cs69
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageFromRepositoryTests.cs13
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageManagementOptionsTests.cs42
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UpdatedPackagesInSolutionTests.cs84
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesProgressMonitor.cs104
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTask.cs12
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTaskRunner.cs40
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageFromRepository.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementServices.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementSolutionExtensions.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableCheckForUpdatesProgressMonitor.cs)92
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestorer.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageUpdatesEventMonitor.cs73
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs9
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SettingsProvider.cs2
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/AnalysisCommands.cs5
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs2
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs1
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml4
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj1
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs48
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs72
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs50
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj2
-rw-r--r--main/src/addins/MonoDeveloperExtensions/NUnit/NUnit.csproj5
-rw-r--r--main/src/addins/NUnit/Commands/NUnitCommands.cs3
-rw-r--r--main/src/addins/NUnit/Gui/TestResultsPad.cs40
-rw-r--r--main/src/addins/NUnit/MonoDevelop.NUnit.csproj2
-rw-r--r--main/src/addins/NUnit/MonoDevelopNUnit.addin.xml2
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating.Tests/GenerateIndentedClassCodeTests.cs108
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating.Tests/Mono.TextTemplating.Tests.csproj1
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs29
-rw-r--r--main/src/addins/TextTemplating/TextTransform/TextTransform.csproj1
-rw-r--r--main/src/addins/VBNetBinding/VBNetBinding.csproj2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs34
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseRepositoryTests.cs8
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/GitIntegrityTests.cs27
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/MonoDevelop.VersionControl.Git.Tests.csproj3
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj5
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditRemoteDialog.cs21
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs16
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCredentials.cs105
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs163
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs7
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitVersionControl.cs6
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/TfsSmartSubtransport.cs13
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Tests/RepositoryTests.cs5
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix.csproj2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.csproj4
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs18
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitMessageStylePanelWidget.cs3
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/EditRepositoryDialog.cs5
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/SelectRepositoryDialog.cs7
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/BlameWidget.cs19
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs4
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/VersionControlDocumentInfo.cs6
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs4
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/ChangeLogWriter.cs1
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs41
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitDialogExtension.cs5
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/IgnoreCommand.cs4
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/LockCommand.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/PublishCommand.cs5
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs14
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertCommand.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UnlockCommand.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UpdateCommand.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlItem.cs13
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs28
-rw-r--r--main/src/addins/VersionControl/Subversion.Win32.Tests/RepositoryTests.cs16
-rw-r--r--main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs17
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/CommonFileDialogExtensions.cs4
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/OpenFileDialogHandler.cs3
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs4
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj2
-rw-r--r--main/src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml1
-rw-r--r--main/src/addins/Xml/Tests/MonoDevelop.Xml.Tests.csproj1
137 files changed, 1630 insertions, 1707 deletions
diff --git a/main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj b/main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj
index cdde498cdf..32b81dba69 100644
--- a/main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj
+++ b/main/src/addins/AspNet/Tests/MonoDevelop.AspNet.Tests.csproj
@@ -55,6 +55,7 @@
<Compile Include="Razor\RazorCompletionTests.cs" />
<Compile Include="Html\HtmlParsingTests.cs" />
<Compile Include="Html\HtmlImplicitClosingTests.cs" />
+ <Compile Include="WebForms\WebFormsSyntaxModeTests.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
diff --git a/main/src/addins/AspNet/Tests/WebForms/WebFormsSyntaxModeTests.cs b/main/src/addins/AspNet/Tests/WebForms/WebFormsSyntaxModeTests.cs
new file mode 100644
index 0000000000..3018f97c46
--- /dev/null
+++ b/main/src/addins/AspNet/Tests/WebForms/WebFormsSyntaxModeTests.cs
@@ -0,0 +1,66 @@
+//
+// WebFormsSyntaxModeTests.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://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.Linq;
+using NUnit.Framework;
+using Mono.TextEditor;
+using Mono.TextEditor.Highlighting;
+using MonoDevelop.AspNet.WebForms;
+
+namespace MonoDevelop.AspNet.Tests.WebForms
+{
+ [TestFixture]
+ class WebFormsSyntaxModeTests
+ {
+ [Test]
+ public void InvalidMimeTypeInScriptTypeAttribute ()
+ {
+ var doc = new TextDocument ();
+ var syntaxMode = new WebFormsSyntaxMode ();
+ syntaxMode.Document = doc;
+ doc.Text =
+@"<%@ Page Language=""C#"" Inherits=""AspnetTest.Default"" %>
+<!DOCTYPE html>
+<html>
+<head runat=""server"">
+ <title>Default</title>
+</head>
+<body>
+ <form id=""form1"" runat=""server"">
+ <asp:Button id=""button1"" runat=""server"" Text=""Click me!"" OnClick=""button1Clicked"" />
+ </form>
+ <script type=""></script>
+</body>
+</html>
+";
+ var style = new ColorScheme ();
+ foreach (DocumentLine line in doc.Lines) {
+ Assert.DoesNotThrow (() => syntaxMode.GetChunks (style, line, line.Offset, line.Length).ToList ());
+ }
+ }
+ }
+}
+
diff --git a/main/src/addins/AspNet/WebForms/WebFormsSyntaxMode.cs b/main/src/addins/AspNet/WebForms/WebFormsSyntaxMode.cs
index fb7261cf2a..44942b8354 100644
--- a/main/src/addins/AspNet/WebForms/WebFormsSyntaxMode.cs
+++ b/main/src/addins/AspNet/WebForms/WebFormsSyntaxMode.cs
@@ -24,9 +24,11 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using MonoDevelop.Core;
using Mono.TextEditor;
using Mono.TextEditor.Highlighting;
using MonoDevelop.AspNet.WebForms.Parser;
@@ -174,8 +176,12 @@ namespace MonoDevelop.AspNet.WebForms
if (mime != null) {
CodeDeclarationSpan span = new CodeDeclarationSpan (mime);
- FoundSpanBegin (span, i, 0);
- return true;
+ try {
+ FoundSpanBegin (span, i, 0);
+ return true;
+ } catch (Exception ex) {
+ LoggingService.LogInternalError (ex);
+ }
}
}
}
diff --git a/main/src/addins/CBinding/CBinding.Autotools/CBinding.Autotools.csproj b/main/src/addins/CBinding/CBinding.Autotools/CBinding.Autotools.csproj
index 9a1b28c5ed..5cb50bacca 100644
--- a/main/src/addins/CBinding/CBinding.Autotools/CBinding.Autotools.csproj
+++ b/main/src/addins/CBinding/CBinding.Autotools/CBinding.Autotools.csproj
@@ -14,7 +14,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugType>full</DebugType>
- <Optimize>True</Optimize>
+ <Optimize>false</Optimize>
<OutputPath>..\..\..\..\build\AddIns\BackendBindings\</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
diff --git a/main/src/addins/CBinding/Gui/GeneralOptionsPanel.cs b/main/src/addins/CBinding/Gui/GeneralOptionsPanel.cs
index 1b8fa5ed30..5187231f59 100644
--- a/main/src/addins/CBinding/Gui/GeneralOptionsPanel.cs
+++ b/main/src/addins/CBinding/Gui/GeneralOptionsPanel.cs
@@ -36,6 +36,7 @@ using Mono.Addins;
using MonoDevelop.Core;
using MonoDevelop.Ide.Gui.Dialogs;
+using MonoDevelop.Components;
namespace CBinding
{
@@ -173,7 +174,7 @@ namespace CBinding
protected virtual void OnCtagsBrowseClicked (object sender, System.EventArgs e)
{
- OpenFileDialog dialog = new OpenFileDialog (GettextCatalog.GetString ("Choose ctags executable"), Gtk.FileChooserAction.Open);
+ OpenFileDialog dialog = new OpenFileDialog (GettextCatalog.GetString ("Choose ctags executable"), FileChooserAction.Open);
if (dialog.Run ())
ctagsEntry.Text = dialog.SelectedFile;
}
diff --git a/main/src/addins/CSharpBinding/AddinInfo.cs b/main/src/addins/CSharpBinding/AddinInfo.cs
index 2b9deee4f4..90e1d63e5c 100644
--- a/main/src/addins/CSharpBinding/AddinInfo.cs
+++ b/main/src/addins/CSharpBinding/AddinInfo.cs
@@ -15,6 +15,7 @@ using Mono.Addins.Description;
[assembly:AddinDependency ("Ide", MonoDevelop.BuildInfo.Version)]
[assembly:AddinDependency ("Refactoring", MonoDevelop.BuildInfo.Version)]
[assembly:AddinDependency ("SourceEditor2", MonoDevelop.BuildInfo.Version)]
+[assembly:AddinDependency ("NUnit", MonoDevelop.BuildInfo.Version)]
// Submodules
[assembly:AddinModule ("MonoDevelop.CSharpBinding.Autotools.dll")]
diff --git a/main/src/addins/CSharpBinding/Autotools/Autotools.csproj b/main/src/addins/CSharpBinding/Autotools/Autotools.csproj
index 5bcda79d90..c6e075378a 100644
--- a/main/src/addins/CSharpBinding/Autotools/Autotools.csproj
+++ b/main/src/addins/CSharpBinding/Autotools/Autotools.csproj
@@ -37,8 +37,8 @@
<Execution clr-version="Net_2_0" />
</Execution>
<DebugSymbols>true</DebugSymbols>
- <DefineConstants>1591</DefineConstants>
<DocumentationFile>..\..\..\..\build\AddIns\BackendBindings\MonoDevelop.CSharpBinding.Autotools.xml</DocumentationFile>
+ <NoWarn>1591;1573</NoWarn>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\MonoDevelop.Autotools\MonoDevelop.Autotools.csproj">
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/MDRefactoringScript.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/MDRefactoringScript.cs
index aa6e7a7ce4..008f06c026 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/MDRefactoringScript.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring.CodeActions/MDRefactoringScript.cs
@@ -162,7 +162,7 @@ namespace MonoDevelop.CSharp.Refactoring.CodeActions
var tcs = new TaskCompletionSource<Script>();
if (parentType == null)
return tcs.Task;
- var part = parentType.Parts.FirstOrDefault ();
+ var part = MonoDevelop.Ide.TypeSystem.CodeGenerationService.FindCurrentPart(parentType);
if (part == null)
return tcs.Task;
diff --git a/main/src/addins/CSharpBinding/templates/PortableLibrary.xpt.xml b/main/src/addins/CSharpBinding/templates/PortableLibrary.xpt.xml
index 82e17f6c04..f09a65c7f1 100644
--- a/main/src/addins/CSharpBinding/templates/PortableLibrary.xpt.xml
+++ b/main/src/addins/CSharpBinding/templates/PortableLibrary.xpt.xml
@@ -6,7 +6,7 @@
<!-- Template Header -->
<TemplateConfiguration>
<_Name>Portable Library</_Name>
- <Category>crossplat/library/general</Category>
+ <Category>multiplat/library/general</Category>
<Icon>md-project-library</Icon>
<Image id="md-pcl-project" />
<LanguageName>C#</LanguageName>
diff --git a/main/src/addins/CSharpBinding/templates/SharedAssetsProject.xpt.xml b/main/src/addins/CSharpBinding/templates/SharedAssetsProject.xpt.xml
index ad48a9b358..6f2f0a7584 100644
--- a/main/src/addins/CSharpBinding/templates/SharedAssetsProject.xpt.xml
+++ b/main/src/addins/CSharpBinding/templates/SharedAssetsProject.xpt.xml
@@ -6,7 +6,7 @@
<!-- Template Header -->
<TemplateConfiguration>
<_Name>Shared Project</_Name>
- <Category>crossplat/library/general</Category>
+ <Category>multiplat/library/general</Category>
<Icon>md-project-shared-assets</Icon>
<Image id="md-shared-project" />
<_Description>Creates a project that allows sharing files between projects</_Description>
diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.csproj b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.csproj
index 511567e76c..6950d93dc2 100644
--- a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.csproj
+++ b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.csproj
@@ -24,6 +24,7 @@
<DefineConstants>DEBUG</DefineConstants>
<NoWarn>1591;1573</NoWarn>
<DocumentationFile>..\..\..\..\build\AddIns\MonoDevelop.Deployment\MonoDevelop.Deployment.xml</DocumentationFile>
+ <DebugType>full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
diff --git a/main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs
index 87c62c87c9..fb0e5fe557 100644
--- a/main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs
+++ b/main/src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs
@@ -60,7 +60,8 @@ namespace MonoDevelop.MacIntegration
};
box.Layout ();
panel.AccessoryView = box.View;
- box.Layout (box.View.Superview.Frame.Size);
+ if (box.View.Superview != null)
+ box.Layout (box.View.Superview.Frame.Size);
} else {
dropdownBox.Layout ();
panel.AccessoryView = dropdownBox.View;
diff --git a/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs
index 71d22d6965..5dca5957c8 100644
--- a/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs
+++ b/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs
@@ -31,6 +31,7 @@ using System.Text;
using AppKit;
+using MonoDevelop.Components;
using MonoDevelop.Core;
using MonoDevelop.Ide;
using MonoDevelop.Ide.Extensions;
@@ -47,15 +48,12 @@ namespace MonoDevelop.MacIntegration
NSSavePanel panel = null;
try {
- bool directoryMode = data.Action != Gtk.FileChooserAction.Open
- && data.Action != Gtk.FileChooserAction.Save;
-
- if (data.Action == Gtk.FileChooserAction.Save) {
+ if (data.Action == FileChooserAction.Save) {
panel = new NSSavePanel ();
} else {
panel = new NSOpenPanel {
- CanChooseDirectories = directoryMode,
- CanChooseFiles = !directoryMode,
+ CanChooseDirectories = (data.Action & FileChooserAction.FolderFlags) != 0,
+ CanChooseFiles = (data.Action & FileChooserAction.FileFlags) != 0,
};
}
@@ -70,7 +68,7 @@ namespace MonoDevelop.MacIntegration
List<FileViewer> currentViewers = null;
var labels = new List<MDAlignment> ();
- if (!directoryMode) {
+ if ((data.Action & FileChooserAction.FileFlags) != 0) {
var filterPopup = MacSelectFileDialogHandler.CreateFileFilterPopup (data, panel);
if (filterPopup != null) {
@@ -84,7 +82,7 @@ namespace MonoDevelop.MacIntegration
}
if (data.ShowEncodingSelector) {
- encodingSelector = new SelectEncodingPopUpButton (data.Action != Gtk.FileChooserAction.Save);
+ encodingSelector = new SelectEncodingPopUpButton (data.Action != FileChooserAction.Save);
encodingSelector.SelectedEncodingId = data.Encoding != null ? data.Encoding.CodePage : 0;
var encodingLabel = new MDAlignment (new MDLabel (GettextCatalog.GetString ("Encoding:")), true);
diff --git a/main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs
index 9355e85bda..fa9914aab5 100644
--- a/main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs
+++ b/main/src/addins/MacPlatform/Dialogs/MacSelectFileDialogHandler.cs
@@ -34,6 +34,7 @@ using Foundation;
using CoreGraphics;
using AppKit;
+using MonoDevelop.Components;
using MonoDevelop.Core;
using MonoDevelop.Ide;
using MonoDevelop.Components.Extensions;
@@ -48,21 +49,19 @@ namespace MonoDevelop.MacIntegration
NSSavePanel panel = null;
try {
- bool directoryMode = data.Action != Gtk.FileChooserAction.Open;
-
- if (data.Action == Gtk.FileChooserAction.Save) {
+ if (data.Action == FileChooserAction.Save) {
panel = new NSSavePanel ();
} else {
panel = new NSOpenPanel {
- CanChooseDirectories = directoryMode,
- CanChooseFiles = !directoryMode,
+ CanChooseDirectories = (data.Action & FileChooserAction.FolderFlags) != 0,
+ CanChooseFiles = (data.Action & FileChooserAction.FileFlags) != 0,
ResolvesAliases = false,
};
}
SetCommonPanelProperties (data, panel);
- if (!directoryMode) {
+ if ((data.Action & FileChooserAction.FileFlags) != 0) {
var popup = CreateFileFilterPopup (data, panel);
if (popup != null) {
panel.AccessoryView = popup;
@@ -107,7 +106,7 @@ namespace MonoDevelop.MacIntegration
if (!string.IsNullOrEmpty (data.CurrentFolder))
panel.DirectoryUrl = new NSUrl (data.CurrentFolder, true);
- panel.ParentWindow = NSApplication.SharedApplication.KeyWindow;
+ panel.ParentWindow = NSApplication.SharedApplication.KeyWindow ?? NSApplication.SharedApplication.MainWindow;
var openPanel = panel as NSOpenPanel;
if (openPanel != null) {
diff --git a/main/src/addins/MacPlatform/MacPlatform.cs b/main/src/addins/MacPlatform/MacPlatform.cs
index 5777cdddfa..203f239de5 100644
--- a/main/src/addins/MacPlatform/MacPlatform.cs
+++ b/main/src/addins/MacPlatform/MacPlatform.cs
@@ -791,10 +791,12 @@ namespace MonoDevelop.MacIntegration
// When we're looking for modal windows that don't belong to GTK, exclude
// NSStatusBarWindow (which is visible on Mavericks when we're in fullscreen) and
// NSToolbarFullscreenWindow (which is visible on Yosemite in fullscreen).
+ // _NSFullScreenTileDividerWindow (which is visible on El Capitan when two apps share the same fullscreen).
return toplevels.Any (t => t.Key.IsVisible && (t.Value == null || t.Value.Modal) &&
!(t.Key.DebugDescription.StartsWith("<NSStatusBarWindow", StringComparison.Ordinal) ||
t.Key.DebugDescription.StartsWith ("<NSToolbarFullScreenWindow", StringComparison.Ordinal) ||
- t.Key.DebugDescription.StartsWith ("<NSCarbonMenuWindow", StringComparison.Ordinal)
+ t.Key.DebugDescription.StartsWith ("<NSCarbonMenuWindow", StringComparison.Ordinal) ||
+ t.Key.DebugDescription.StartsWith ("<_NSFullScreenTileDividerWindow", StringComparison.Ordinal)
));
}
diff --git a/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs b/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs
index edeabb1070..cd14af52ea 100644
--- a/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs
@@ -33,6 +33,7 @@ using AppKit;
using CoreGraphics;
using Foundation;
using MonoDevelop.Ide;
+using Xwt;
namespace MonoDevelop.MacIntegration.MainToolbar
{
@@ -66,6 +67,10 @@ namespace MonoDevelop.MacIntegration.MainToolbar
}
int selectorIdx;
+ SelectorView selector {
+ get { return (SelectorView)widget.Items[selectorIdx].View; }
+ }
+
SelectorView.PathSelectorView selectorView {
get { return (SelectorView.PathSelectorView)widget.Items[selectorIdx].View.Subviews [0]; }
}
@@ -96,6 +101,35 @@ namespace MonoDevelop.MacIntegration.MainToolbar
return item;
}
+ OverflowInfoEventArgs FillOverflowInfo (OverflowInfoEventArgs e)
+ {
+ var visibleItems = widget.VisibleItems;
+ var allItems = widget.Items;
+
+ e.WindowWidth = gtkWindow.Allocation.Width;
+ foreach (var iter in allItems) {
+ e.AllItemsWidth += iter.MinSize.Width;
+ if (!visibleItems.Contains (iter))
+ e.ItemsInOverflowWidth += iter.MinSize.Width;
+ }
+ // Add spacings.
+ nfloat spacing = (allItems.Length - 1) * 16;
+ e.AllItemsWidth += spacing;
+
+ return e;
+ }
+
+ bool IsCorrectNotification (NSView view, NSObject notifObject)
+ {
+ var window = selector.Window;
+
+ // Skip updates with a null Window. Only crashes on Mavericks.
+ // The View gets updated once again when the window resize finishes.
+ // We're getting notified about all windows in the application (for example, NSPopovers) that change size when really we only care about
+ // the window the bar is in.
+ return window != null && notifObject == window;
+ }
+
NSToolbarItem CreateSelectorToolbarItem ()
{
var selector = new SelectorView ();
@@ -109,6 +143,43 @@ namespace MonoDevelop.MacIntegration.MainToolbar
item.MinSize = item.MaxSize = e.Size;
centeringSpace.UpdateWidth ();
};
+ selector.OverflowInfoRequested += (o, e) => {
+ FillOverflowInfo (e);
+ };
+
+ IDisposable resizeTimer = null;
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.WillStartLiveResizeNotification, notif => DispatchService.GuiDispatch (() => {
+ if (!IsCorrectNotification (selector, notif.Object))
+ return;
+
+ if (resizeTimer != null)
+ resizeTimer.Dispose ();
+
+ resizeTimer = Application.TimeoutInvoke (100, () => {
+ if (widget.Items.Length != widget.VisibleItems.Length)
+ selector.RequestResize ();
+ return true;
+ });
+ }));
+
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidResizeNotification, notif => DispatchService.GuiDispatch (() => {
+ if (!IsCorrectNotification (selector, notif.Object))
+ return;
+
+ // Don't check difference in overflow menus. This could cause issues since we're doing resizing of widgets and the views might go in front
+ // or behind while we're doing the resize request.
+ selector.RequestResize ();
+ }));
+
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidEndLiveResizeNotification, notif => DispatchService.GuiDispatch (() => {
+ if (!IsCorrectNotification (selector, notif.Object))
+ return;
+
+ if (resizeTimer != null)
+ resizeTimer.Dispose ();
+
+ resizeTimer = Application.TimeoutInvoke (300, selector.RequestResize);
+ }));
var pathSelector = (SelectorView.PathSelectorView)selector.Subviews [0];
pathSelector.ConfigurationChanged += (sender, e) => {
@@ -143,6 +214,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
nfloat resize = 6 + 33 * bar.SegmentCount;
item.MinSize = new CGSize (resize, bar.FittingSize.Height);
item.MaxSize = new CGSize (resize, bar.FittingSize.Height);
+ selector.RequestResize ();
centeringSpace.UpdateWidth ();
};
return item;
@@ -181,15 +253,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
bar.GainedFocus += (o, e) => IdeApp.Workbench.RootWindow.Focus = null;
viewCache.Add (bar);
- var menuBar = new SearchBar {
- Frame = new CGRect (0, 0, 180, bar.FittingSize.Height),
- };
var item = new NSToolbarItem (SearchBarId) {
View = bar,
- MenuFormRepresentation = new NSMenuItem {
- View = menuBar,
- },
- MinSize = new CGSize (180, bar.FittingSize.Height),
+ MinSize = new CGSize (150, bar.FittingSize.Height),
MaxSize = new CGSize (270, bar.FittingSize.Height),
};
AttachToolbarEvents (bar);
@@ -207,18 +273,26 @@ namespace MonoDevelop.MacIntegration.MainToolbar
MaxSize = new CGSize (360, 22),
};
- NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidResizeNotification, notif => DispatchService.GuiDispatch (() => {
+ Action<NSNotification> resizeAction = notif => DispatchService.GuiDispatch (() => {
// Skip updates with a null Window. Only crashes on Mavericks.
// The View gets updated once again when the window resize finishes.
if (bar.Window == null)
return;
+ // We're getting notified about all windows in the application (for example, NSPopovers) that change size when really we only care about
+ // the window the bar is in.
+ if (notif.Object != bar.Window)
+ return;
+
double maxSize = Math.Round (bar.Window.Frame.Width * 0.30f);
double minSize = Math.Round (bar.Window.Frame.Width * 0.25f);
- item.MinSize = new CGSize ((nfloat)Math.Max (280, minSize), 22);
+ item.MinSize = new CGSize ((nfloat)Math.Max (220, minSize), 22);
item.MaxSize = new CGSize ((nfloat)Math.Min (700, maxSize), 22);
bar.RepositionStatusLayers ();
- }));
+ });
+
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidResizeNotification, resizeAction);
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidEndLiveResizeNotification, resizeAction);
return item;
}
@@ -279,32 +353,12 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public event EventHandler SearchEntryResized;
#pragma warning restore 0067
- bool IsSearchEntryInOverflow {
- get { return widget.Items.Length != widget.VisibleItems.Length; }
- }
-
public void FocusSearchBar ()
{
searchEntry.Focus ();
var entry = searchEntry;
- if (!IsSearchEntryInOverflow)
- entry.SelectText (entry);
- else {
- // NSSearchField -> NSToolbarItemViewer -> _NSToolbarClipView -> NSToolbarView -> NSToolbarClippedItemsIndicator
- var clipItem = (NSButton)searchEntry.Superview.Superview.Superview.Subviews [1];
- var sel = new ObjCRuntime.Selector ("_computeMenuForClippedItemsIfNeeded");
- if (!clipItem.RespondsToSelector (sel))
- throw new Exception ("Cocoa selector changed for clipped items menu.");
-
- clipItem.PerformSelector (sel);
- var menu = clipItem.Menu;
- var searchItem = menu.ItemAt (0);
- var searchView = (SearchBar)searchItem.View;
- AttachToolbarEvents (searchView);
- menu.PopUpMenu (menu.ItemAt (0), new CGPoint (0, -5), clipItem);
- searchView.SelectText (searchView);
- }
+ entry.SelectText (entry);
}
List<IButtonBarButton> barItems = new List<IButtonBarButton> ();
@@ -404,44 +458,10 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public string SearchText {
get {
- if (!IsSearchEntryInOverflow) {
- return searchEntry.StringValue;
- }
-
- // NSSearchField -> NSToolbarItemViewer -> _NSToolbarClipView -> NSToolbarView -> NSToolbarClippedItemsIndicator
- var clipItem = (NSButton)searchEntry.Superview.Superview.Superview.Subviews [1];
- var sel = new ObjCRuntime.Selector ("_computeMenuForClippedItemsIfNeeded");
- if (!clipItem.RespondsToSelector (sel))
- throw new Exception ("Cocoa selector changed for clipped items menu.");
-
- clipItem.PerformSelector (sel);
-
- var menuBar = (SearchBar)clipItem.Menu.ItemAt (0).View;
- AttachToolbarEvents (menuBar);
- return menuBar.StringValue;
+ return searchEntry.StringValue;
}
set {
- if (!IsSearchEntryInOverflow) {
- searchEntry.StringValue = value;
- return;
- }
-
- // NSSearchField -> NSToolbarItemViewer -> _NSToolbarClipView -> NSToolbarView -> NSToolbarClippedItemsIndicator
- var clipItem = (NSButton)searchEntry.Superview.Superview.Superview.Subviews [1];
- var sel = new ObjCRuntime.Selector ("_computeMenuForClippedItemsIfNeeded");
- if (!clipItem.RespondsToSelector (sel))
- throw new Exception ("Cocoa selector changed for clipped items menu.");
-
- clipItem.PerformSelector (sel);
-
- foreach (NSMenuItem item in clipItem.Menu.ItemArray ()) {
- if (item.View is SearchBar) {
- var menuBar = (SearchBar)item.View;
- AttachToolbarEvents (menuBar);
- menuBar.StringValue = value;
- break;
- }
- }
+ searchEntry.StringValue = value;
}
}
@@ -464,8 +484,12 @@ namespace MonoDevelop.MacIntegration.MainToolbar
var workbenchNsWindow = nsWindows.FirstOrDefault (nswin =>
GtkMacInterop.GetGtkWindow (nswin) is MonoDevelop.Ide.Gui.DefaultWorkbench);
- widget.Allocation = new Gdk.Rectangle (0, (int)(fullscreenToolbarNsWindow.Frame.Bottom - workbenchNsWindow.Frame.Height),
- (int)fullscreenToolbarNsWindow.Frame.Width, 0);
+ // Gtk and Cocoa coordinates are not the same. Offset by left and top screens to get the correct
+ // coordinate for the popup window based on Cocoa coordinates which offset left/top from current desktop.
+ nfloat xOffset = -NSScreen.Screens.Min (screen => screen.Frame.Left);
+ nfloat yOffset = NSScreen.Screens.Max (screen => screen.Frame.Bottom);
+ widget.Allocation = new Gdk.Rectangle (0, (int)(yOffset - workbenchNsWindow.Frame.Height),
+ (int)(xOffset + fullscreenToolbarNsWindow.Frame.Width), 0);
}
return widget;
}
diff --git a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
index f61007805d..21b7f938d0 100644
--- a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
@@ -45,10 +45,18 @@ namespace MonoDevelop.MacIntegration.MainToolbar
}
}
+ class OverflowInfoEventArgs : EventArgs
+ {
+ public nfloat WindowWidth { get; set; }
+ public nfloat AllItemsWidth { get; set; }
+ public nfloat ItemsInOverflowWidth { get; set; }
+ }
+
[Register]
class SelectorView : NSButton
{
public event EventHandler<SizeRequestedEventArgs> ResizeRequested;
+ public event EventHandler<OverflowInfoEventArgs> OverflowInfoRequested;
internal const int ConfigurationIdx = 0;
internal const int RuntimeIdx = 1;
@@ -56,31 +64,109 @@ namespace MonoDevelop.MacIntegration.MainToolbar
{
Title = "";
BezelStyle = NSBezelStyle.TexturedRounded;
- AddSubview (new PathSelectorView (new CGRect (6, 0, 1, 1)));
+ var pathSelectorView = new PathSelectorView (new CGRect (6, 0, 1, 1));
+ pathSelectorView.UnregisterDraggedTypes ();
+ AddSubview (pathSelectorView);
+ }
+
+ public bool RequestResize ()
+ {
+ var p = (PathSelectorView)Subviews [0];
+ var overflowInfo = new OverflowInfoEventArgs ();
+ if (OverflowInfoRequested != null)
+ OverflowInfoRequested (this, overflowInfo);
+
+ var size = new CGSize (p.ResizeIfNeeded (overflowInfo), Frame.Height);
+
+ if (size != Frame.Size) {
+ if (ResizeRequested != null)
+ ResizeRequested (this, new SizeRequestedEventArgs (size));
+
+ SetFrameSize (size);
+ p.SetFrameSize (size);
+
+ SetNeedsDisplay ();
+ p.SetNeedsDisplay ();
+ return true;
+ }
+ return false;
}
- public override void DrawRect (CGRect dirtyRect)
+ public override void ViewWillDraw ()
{
- var p = (NSPathControl)Subviews [0];
- var size = new CGSize (10 +
- p.PathComponentCells [ConfigurationIdx].CellSize.Width +
- p.PathComponentCells [RuntimeIdx].CellSize.Width + p.Frame.Left,
- Frame.Size.Height);
- if (ResizeRequested != null)
- ResizeRequested (this, new SizeRequestedEventArgs (size));
-
- SetFrameSize (size);
- p.SetFrameSize (size);
- p.SetNeedsDisplay ();
- base.DrawRect (new CGRect (CGPoint.Empty, size));
+ RequestResize ();
+ base.ViewWillDraw ();
}
#region PathSelectorView
[Register]
public class PathSelectorView : NSPathControl
{
+ [Flags]
+ enum CellState
+ {
+ AllHidden = 0x0,
+ RuntimeShown = 0x1,
+ ConfigurationShown = 0x2,
+ AllShown = 0x3,
+ }
+
static readonly string ConfigurationPlaceholder = GettextCatalog.GetString ("Default");
static readonly string RuntimePlaceholder = GettextCatalog.GetString ("Default");
+ CellState state = CellState.AllShown;
+
+ nfloat UpdatePathCellForSize (int idx, nfloat remaining, CellState newStateIfEnoughSize)
+ {
+ var cell = PathComponentCells [idx];
+ string text;
+ if (idx == ConfigurationIdx) {
+ if (ActiveConfiguration != null)
+ text = ActiveConfiguration.DisplayString;
+ else
+ text = ConfigurationPlaceholder;
+ } else {
+ if (ActiveRuntime != null) {
+ using (var mutableModel = ActiveRuntime.GetMutableModel ())
+ text = mutableModel.FullDisplayString;
+ } else
+ text = RuntimePlaceholder;
+ }
+ var size = new NSAttributedString (text, new NSStringAttributes { Font = cell.Font }).Size.Width + 20;
+ if (size < remaining) {
+ state |= newStateIfEnoughSize;
+ UpdatePathText (idx, text);
+ }
+ return remaining - size;
+ }
+
+ internal nfloat ResizeIfNeeded (OverflowInfoEventArgs args)
+ {
+ var remaining = args.WindowWidth - args.AllItemsWidth;
+ if (remaining < 0 || args.ItemsInOverflowWidth > 0) {
+ var cell = PathComponentCells [RuntimeIdx];
+ var size = new NSAttributedString (cell.Title, new NSStringAttributes { Font = cell.Font }).Size.Width;
+ remaining += size;
+ args.ItemsInOverflowWidth -= size;
+ if ((state & CellState.RuntimeShown) != 0) {
+ state &= ~CellState.RuntimeShown;
+ UpdatePathText (RuntimeIdx, string.Empty);
+ }
+ if ((remaining < 0 || args.ItemsInOverflowWidth > 0) && (state & CellState.ConfigurationShown) != 0) {
+ state &= ~CellState.ConfigurationShown;
+ UpdatePathText (ConfigurationIdx, string.Empty);
+ }
+ } else {
+ remaining = remaining - args.ItemsInOverflowWidth;
+ if ((state & CellState.ConfigurationShown) == 0)
+ remaining = UpdatePathCellForSize (ConfigurationIdx, remaining, CellState.ConfigurationShown);
+ if ((state & CellState.RuntimeShown) == 0)
+ UpdatePathCellForSize (RuntimeIdx, remaining, CellState.RuntimeShown);
+ }
+
+ return 10 +
+ PathComponentCells [ConfigurationIdx].CellSize.Width +
+ PathComponentCells [RuntimeIdx].CellSize.Width + Frame.Left;
+ }
NSMenu CreateSubMenuForRuntime (IRuntimeModel runtime)
{
@@ -99,14 +185,21 @@ namespace MonoDevelop.MacIntegration.MainToolbar
void CreateMenuItem (NSMenu menu, IRuntimeModel runtime)
{
- var menuItem = new NSMenuItem {
- IndentationLevel = runtime.IsIndented ? 2 : 1,
- Enabled = runtime.Enabled,
- Hidden = !runtime.Visible,
- AttributedTitle = new NSAttributedString (runtime.DisplayString, new NSStringAttributes {
- Font = runtime.Notable ? NSFontManager.SharedFontManager.ConvertFont (menu.Font, NSFontTraitMask.Bold) : menu.Font,
- }),
- };
+ NSMenuItem menuItem;
+ string runtimeFullDisplayString;
+
+ using (var mutableModel = runtime.GetMutableModel ()) {
+ runtimeFullDisplayString = mutableModel.FullDisplayString;
+
+ menuItem = new NSMenuItem {
+ IndentationLevel = runtime.IsIndented ? 2 : 1,
+ AttributedTitle = new NSAttributedString (mutableModel.DisplayString, new NSStringAttributes {
+ Font = runtime.Notable ? NSFontManager.SharedFontManager.ConvertFont (menu.Font, NSFontTraitMask.Bold) : menu.Font,
+ }),
+ Enabled = mutableModel.Enabled,
+ Hidden = !mutableModel.Visible,
+ };
+ }
var subMenu = CreateSubMenuForRuntime (runtime);
if (subMenu != null) {
@@ -114,14 +207,27 @@ namespace MonoDevelop.MacIntegration.MainToolbar
menuItem.Enabled = true;
} else {
menuItem.Activated += (o2, e2) => {
- string old = ActiveRuntime.FullDisplayString;
- ActiveRuntime = runtimeModel.First (r => r.FullDisplayString == runtime.FullDisplayString);
+ string old;
+ using (var activeMutableModel = ActiveRuntime.GetMutableModel ())
+ old = activeMutableModel.FullDisplayString;
+
+ IRuntimeModel newRuntime = runtimeModel.FirstOrDefault (r => {
+ using (var newRuntimeMutableModel = r.GetMutableModel ())
+ return newRuntimeMutableModel.FullDisplayString == runtimeFullDisplayString;
+ });
+ if (newRuntime == null)
+ return;
+
+ ActiveRuntime = newRuntime;
var ea = new HandledEventArgs ();
if (RuntimeChanged != null)
RuntimeChanged (o2, ea);
if (ea.Handled)
- ActiveRuntime = runtimeModel.First (r => r.FullDisplayString == old);
+ ActiveRuntime = runtimeModel.First (r => {
+ using (var newRuntimeMutableModel = r.GetMutableModel ())
+ return newRuntimeMutableModel.FullDisplayString == old;
+ });
};
}
menu.AddItem (menuItem);
@@ -162,6 +268,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
Font = NSFont.MenuFontOfSize (12),
};
if (object.ReferenceEquals (ClickedPathComponentCell, PathComponentCells [ConfigurationIdx])) {
+ if (ActiveConfiguration == null)
+ return;
+
foreach (var configuration in ConfigurationModel) {
if (idx == -1 && configuration.OriginalId == ActiveConfiguration.OriginalId)
idx = i;
@@ -179,18 +288,25 @@ namespace MonoDevelop.MacIntegration.MainToolbar
++i;
}
} else if (object.ReferenceEquals (ClickedPathComponentCell, PathComponentCells [RuntimeIdx])) {
- foreach (var runtime in RuntimeModel) {
- if (idx == -1 && runtime.DisplayString == ActiveRuntime.DisplayString)
- idx = i;
-
- if (runtime.HasParent)
- continue;
-
- if (runtime.IsSeparator)
- menu.AddItem (NSMenuItem.SeparatorItem);
- else
- CreateMenuItem (menu, runtime);
- ++i;
+ if (ActiveRuntime == null)
+ return;
+
+ using (var activeMutableModel = ActiveRuntime.GetMutableModel ()) {
+ foreach (var runtime in RuntimeModel) {
+ using (var mutableModel = runtime.GetMutableModel ()) {
+ if (idx == -1 && mutableModel.DisplayString == activeMutableModel.DisplayString)
+ idx = i;
+ }
+
+ if (runtime.HasParent)
+ continue;
+
+ if (runtime.IsSeparator)
+ menu.AddItem (NSMenuItem.SeparatorItem);
+ else
+ CreateMenuItem (menu, runtime);
+ ++i;
+ }
}
} else
throw new NotSupportedException ();
@@ -228,7 +344,8 @@ namespace MonoDevelop.MacIntegration.MainToolbar
void UpdatePathText (int idx, string text)
{
- PathComponentCells [idx].Title = text;
+ bool showText = (idx == ConfigurationIdx && (state & CellState.ConfigurationShown) != 0) || (idx == RuntimeIdx && (state & CellState.RuntimeShown) != 0);
+ PathComponentCells [idx].Title = showText ? text : "\u00A0";
PathComponentCells [ConfigurationIdx].Image = ImageService.GetIcon ("project").ToNSImage ();
PathComponentCells [RuntimeIdx].Image = ImageService.GetIcon ("device").ToNSImage ();
@@ -240,7 +357,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
get { return activeConfiguration; }
set {
activeConfiguration = value;
+ state |= CellState.ConfigurationShown;
UpdatePathText (ConfigurationIdx, value.DisplayString);
+ ((SelectorView)Superview).RequestResize ();
}
}
@@ -249,7 +368,11 @@ namespace MonoDevelop.MacIntegration.MainToolbar
get { return activeRuntime; }
set {
activeRuntime = value;
- UpdatePathText (RuntimeIdx, value.FullDisplayString);
+ using (var mutableModel = value.GetMutableModel ()) {
+ state |= CellState.RuntimeShown;
+ UpdatePathText (RuntimeIdx, mutableModel.FullDisplayString);
+ ((SelectorView)Superview).RequestResize ();
+ }
}
}
@@ -259,8 +382,11 @@ namespace MonoDevelop.MacIntegration.MainToolbar
set {
configurationModel = value;
int count = value.Count ();
- if (count == 0)
+ if (count == 0) {
+ state |= CellState.ConfigurationShown;
UpdatePathText (ConfigurationIdx, ConfigurationPlaceholder);
+ ((SelectorView)Superview).RequestResize ();
+ }
PathComponentCells [ConfigurationIdx].Enabled = count > 1;
}
}
@@ -271,8 +397,11 @@ namespace MonoDevelop.MacIntegration.MainToolbar
set {
runtimeModel = value;
int count = value.Count ();
- if (count == 0)
+ if (count == 0) {
+ state |= CellState.RuntimeShown;
UpdatePathText (RuntimeIdx, RuntimePlaceholder);
+ ((SelectorView)Superview).RequestResize ();
+ }
PathComponentCells [RuntimeIdx].Enabled = count > 1;
}
}
diff --git a/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs b/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs
index 319b197290..2331b24551 100644
--- a/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs
@@ -154,7 +154,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
BezelStyle = NSTextFieldBezelStyle.Rounded;
WantsLayer = true;
- Layer.CornerRadius = 4;
+ Layer.CornerRadius = MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 6 : 4;
ctxHandler = new StatusBarContextHandler (this);
updateHandler = delegate {
@@ -201,7 +201,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
if (Window == null)
return;
- ReconstructString ();
+ ReconstructString (updateTrackingAreas: true);
foreach (var layer in Layer.Sublayers) {
if (layer.Name != null && layer.Name.StartsWith (StatusIconPrefixId, StringComparison.Ordinal))
layer.SetImage (layerToStatus [layer.Name].Image, Window.BackingScaleFactor);
@@ -234,7 +234,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
}
NSTrackingArea textFieldArea;
- void ReconstructString ()
+ void ReconstructString (bool updateTrackingAreas)
{
if (string.IsNullOrEmpty (text)) {
textField.AttributedStringValue = new NSAttributedString ("");
@@ -247,6 +247,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
var width = textField.AttributedStringValue.BoundingRectWithSize (new CGSize (nfloat.MaxValue, textField.Frame.Height),
NSStringDrawingOptions.UsesFontLeading | NSStringDrawingOptions.UsesLineFragmentOrigin).Width;
+ if (!updateTrackingAreas)
+ return;
+
if (textFieldArea != null) {
RemoveTrackingArea (textFieldArea);
DestroyPopover ();
@@ -298,12 +301,12 @@ namespace MonoDevelop.MacIntegration.MainToolbar
right -= 9;
if (layer != null) {
- layer.Frame = new CGRect (right, 3, 1, 16);
+ layer.Frame = new CGRect (right, MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 4 : 3, 1, 16);
layer.SetNeedsDisplay ();
} else {
layer = CALayer.Create ();
layer.Name = SeparatorLayerId;
- layer.Frame = new CGRect (right, 3, 1, 16);
+ layer.Frame = new CGRect (right, MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 4 : 3, 1, 16);
layer.BackgroundColor = NSColor.LightGray.CGColor;
Layer.AddSublayer (layer);
}
@@ -341,12 +344,12 @@ namespace MonoDevelop.MacIntegration.MainToolbar
nfloat right = DrawSeparatorIfNeeded (LeftMostStatusItemX ());
CGSize size = buildResultText.AttributedString.Size;
right = right - 6 - size.Width;
- buildResultText.Frame = new CGRect (right, 5f, size.Width, size.Height);
+ buildResultText.Frame = new CGRect (right, MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 6 : 5, size.Width, size.Height);
if (buildResultText.SuperLayer == null)
Layer.AddSublayer (buildResultText);
buildResultText.SetNeedsDisplay ();
right -= buildResultIcon.Bounds.Width;
- buildResultIcon.Frame = new CGRect (right, 3, buildResultIcon.Bounds.Width, buildResultIcon.Bounds.Height);
+ buildResultIcon.Frame = new CGRect (right, MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 4 : 3, buildResultIcon.Bounds.Width, buildResultIcon.Bounds.Height);
if (buildResultIcon.SuperLayer == null)
Layer.AddSublayer (buildResultIcon);
@@ -360,10 +363,11 @@ namespace MonoDevelop.MacIntegration.MainToolbar
foreach (var item in Layer.Sublayers) {
if (item.Name != null && item.Name.StartsWith (StatusIconPrefixId, StringComparison.Ordinal)) {
var icon = layerToStatus [item.Name];
- RemoveTrackingArea (icon.TrackingArea);
+ if (icon.TrackingArea != null)
+ RemoveTrackingArea (icon.TrackingArea);
right -= item.Bounds.Width + 6;
- item.Frame = new CGRect (right, 3, item.Bounds.Width, item.Bounds.Height);
+ item.Frame = new CGRect (right, MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 4 : 3, item.Bounds.Width, item.Bounds.Height);
var area = new NSTrackingArea (item.Frame, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow, this, null);
AddTrackingArea (area);
@@ -383,27 +387,17 @@ namespace MonoDevelop.MacIntegration.MainToolbar
long statusCounter;
public StatusBarIcon ShowStatusIcon (Xwt.Drawing.Image pixbuf)
{
- nfloat right = layerToStatus.Count == 0 ?
- Layer.Frame.Width :
- Layer.Sublayers.Last (i => i.Name != null && i.Name.StartsWith (StatusIconPrefixId, StringComparison.Ordinal)).Frame.Left;
-
- right -= (nfloat)pixbuf.Width + 6;
var layer = CALayer.Create ();
layer.Name = StatusIconPrefixId + (++statusCounter);
layer.Bounds = new CGRect (0, 0, (nfloat)pixbuf.Width, (nfloat)pixbuf.Height);
- layer.Frame = new CGRect (right, 3, (nfloat)pixbuf.Width, (nfloat)pixbuf.Height);
-
- var area = new NSTrackingArea (layer.Frame, NSTrackingAreaOptions.MouseEnteredAndExited | NSTrackingAreaOptions.ActiveInKeyWindow, this, null);
- AddTrackingArea (area);
-
- var statusIcon = new StatusIcon (this, layer, area) {
+ var statusIcon = new StatusIcon (this, layer, null) {
Image = pixbuf,
};
layerToStatus [layer.Name] = statusIcon;
Layer.AddSublayer (layer);
- textField.SetFrameSize (new CGSize (right - 6 - textField.Frame.Left, Frame.Height));
+ RepositionStatusLayers ();
return statusIcon;
}
@@ -458,18 +452,25 @@ namespace MonoDevelop.MacIntegration.MainToolbar
{
DispatchService.AssertGuiThread ();
- LoadText (message, isMarkup, color);
+ bool changed = LoadText (message, isMarkup, color);
LoadPixbuf (image);
- ReconstructString ();
+ if (changed)
+ ReconstructString (updateTrackingAreas: true);
}
- void LoadText (string message, bool isMarkup, NSColor color)
+ bool LoadText (string message, bool isMarkup, NSColor color)
{
message = message ?? "";
+ message = message.Replace (Environment.NewLine, " ").Replace ("\n", " ").Trim ();
- text = message.Replace (Environment.NewLine, " ").Replace ("\n", " ").Trim ();
+ if (message == text)
+ return false;
+
+ text = message;
currentTextIsMarkup = isMarkup;
textColor = color;
+
+ return true;
}
static bool iconLoaded;
@@ -498,7 +499,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
image = iconAnimation.FirstFrame.ToNSImage ();
xwtAnimation = iconAnimation.StartAnimation (p => {
image = p.ToNSImage ();
- ReconstructString ();
+ ReconstructString (updateTrackingAreas: false);
});
} else {
image = ImageService.GetIcon (iconId).ToNSImage ();
@@ -570,6 +571,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
}
static CGColor xamBlue = new CGColor (52f / 255, 152f / 255, 219f / 255);
+ static nfloat verticalOffset = MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 2 : 0;
CALayer CreateProgressBarLayer (double width)
{
CALayer progress = ProgressLayer;
@@ -579,7 +581,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
progress.BackgroundColor = xamBlue;
progress.BorderColor = xamBlue;
progress.FillMode = CAFillMode.Forwards;
- progress.Frame = new CGRect (0, Frame.Height - barHeight, (nfloat)width, barHeight);
+ progress.Frame = new CGRect (0, Frame.Height - barHeight - verticalOffset, (nfloat)width, barHeight);
}
return progress;
}
@@ -713,13 +715,14 @@ namespace MonoDevelop.MacIntegration.MainToolbar
((NSTextField)popover.ContentViewController.View).AttributedStringValue = attrString;
}
- void CreatePopoverForLayer (CALayer layer)
+ bool CreatePopoverForLayer (CALayer layer)
{
string tooltip = layerToStatus [layer.Name].ToolTip;
if (tooltip == null)
- return;
+ return false;
CreatePopoverCommon (230, tooltip);
+ return true;
}
void CreatePopoverForStatusBar ()
@@ -735,7 +738,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
if (!layerToStatus.ContainsKey (layer.Name))
return;
- CreatePopoverForLayer (layer);
+ if (!CreatePopoverForLayer (layer))
+ return;
+
popover.Show (layer.Frame, this, NSRectEdge.MinYEdge);
}
diff --git a/main/src/addins/MacPlatform/icons/build.png b/main/src/addins/MacPlatform/icons/build.png
index a0c40fc091..60db083214 100644
--- a/main/src/addins/MacPlatform/icons/build.png
+++ b/main/src/addins/MacPlatform/icons/build.png
Binary files differ
diff --git a/main/src/addins/MacPlatform/icons/build@2x.png b/main/src/addins/MacPlatform/icons/build@2x.png
index 240baf14f5..7dfb19221b 100644
--- a/main/src/addins/MacPlatform/icons/build@2x.png
+++ b/main/src/addins/MacPlatform/icons/build@2x.png
Binary files differ
diff --git a/main/src/addins/MacPlatform/icons/continue.png b/main/src/addins/MacPlatform/icons/continue.png
index 393b1621bd..9d8db8c1cb 100644
--- a/main/src/addins/MacPlatform/icons/continue.png
+++ b/main/src/addins/MacPlatform/icons/continue.png
Binary files differ
diff --git a/main/src/addins/MacPlatform/icons/continue@2x.png b/main/src/addins/MacPlatform/icons/continue@2x.png
index 01099f61a6..1a74564c7d 100644
--- a/main/src/addins/MacPlatform/icons/continue@2x.png
+++ b/main/src/addins/MacPlatform/icons/continue@2x.png
Binary files differ
diff --git a/main/src/addins/MacPlatform/icons/device.png b/main/src/addins/MacPlatform/icons/device.png
index 52a605662d..51690547be 100644
--- a/main/src/addins/MacPlatform/icons/device.png
+++ b/main/src/addins/MacPlatform/icons/device.png
Binary files differ
diff --git a/main/src/addins/MacPlatform/icons/device@2x.png b/main/src/addins/MacPlatform/icons/device@2x.png
index ce96416250..a045e0817c 100644
--- a/main/src/addins/MacPlatform/icons/device@2x.png
+++ b/main/src/addins/MacPlatform/icons/device@2x.png
Binary files differ
diff --git a/main/src/addins/MacPlatform/icons/project.png b/main/src/addins/MacPlatform/icons/project.png
index f1246f7cf4..f25fdbfb2e 100644
--- a/main/src/addins/MacPlatform/icons/project.png
+++ b/main/src/addins/MacPlatform/icons/project.png
Binary files differ
diff --git a/main/src/addins/MacPlatform/icons/project@2x.png b/main/src/addins/MacPlatform/icons/project@2x.png
index 04e1fe7d90..e5e08d504f 100644
--- a/main/src/addins/MacPlatform/icons/project@2x.png
+++ b/main/src/addins/MacPlatform/icons/project@2x.png
Binary files differ
diff --git a/main/src/addins/MacPlatform/icons/stop.png b/main/src/addins/MacPlatform/icons/stop.png
index 1c83109ce3..62501d3cab 100644
--- a/main/src/addins/MacPlatform/icons/stop.png
+++ b/main/src/addins/MacPlatform/icons/stop.png
Binary files differ
diff --git a/main/src/addins/MacPlatform/icons/stop@2x.png b/main/src/addins/MacPlatform/icons/stop@2x.png
index 05db67ecd6..3870bc446d 100644
--- a/main/src/addins/MacPlatform/icons/stop@2x.png
+++ b/main/src/addins/MacPlatform/icons/stop@2x.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs b/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs
index 9d9992d9e3..acdfd4e14a 100644
--- a/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs
+++ b/main/src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft/SoftDebuggerEngine.cs
@@ -138,6 +138,18 @@ namespace MonoDevelop.Debugger.Soft
class MDLogger : ICustomLogger
{
+ public string GetNewDebuggerLogFilename ()
+ {
+ if (PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.DebuggerLogging", false)) {
+ string filename;
+ var logWriter = LoggingService.CreateLogFile ("Debugger", out filename);
+ logWriter.Dispose ();
+ return filename;
+ } else {
+ return null;
+ }
+ }
+
public void LogError (string message, Exception ex)
{
LoggingService.LogError (message, ex);
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests.NonUserCodeTestLib/MonoDevelop.Debugger.Tests.NonUserCodeTestLib.csproj b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests.NonUserCodeTestLib/MonoDevelop.Debugger.Tests.NonUserCodeTestLib.csproj
index 5de4c16d4a..a6ad6eb5a0 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests.NonUserCodeTestLib/MonoDevelop.Debugger.Tests.NonUserCodeTestLib.csproj
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests.NonUserCodeTestLib/MonoDevelop.Debugger.Tests.NonUserCodeTestLib.csproj
@@ -22,12 +22,13 @@
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>full</DebugType>
+ <DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
+ <DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
index 6d77e0d638..b90a0b4dd1 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.csproj
@@ -156,7 +156,6 @@
<Compile Include="MonoDevelop.Debugger\BusyEvaluatorDialog.cs" />
<Compile Include="gtk-gui\MonoDevelop.Debugger.BusyEvaluatorDialog.cs" />
<Compile Include="MonoDevelop.Debugger\DebuggerOptionsPanelWidget.cs" />
- <Compile Include="gtk-gui\MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs" />
<Compile Include="MonoDevelop.Debugger\PinnedWatch.cs" />
<Compile Include="MonoDevelop.Debugger\PinnedWatchStore.cs" />
<Compile Include="MonoDevelop.Debugger\DebuggerEngine.cs" />
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
index f468753ed1..fe65568897 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
@@ -397,6 +397,8 @@ namespace MonoDevelop.Debugger
if (breakpoints != null) {
lock (breakpoints) {
foreach (BreakEvent be in breakpoints.GetBreakevents ()) {
+ if (be.NonUserBreakpoint)
+ continue;
string hitCount = be.HitCountMode != HitCountMode.None ? be.CurrentHitCount.ToString () : "";
string traceExp = (be.HitAction & HitAction.PrintExpression) != HitAction.None ? be.TraceExpression : "";
string traceVal = (be.HitAction & HitAction.PrintExpression) != HitAction.None ? be.LastTraceValue : "";
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BusyEvaluatorDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BusyEvaluatorDialog.cs
index e2f8a93769..d82779bcbc 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BusyEvaluatorDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BusyEvaluatorDialog.cs
@@ -34,27 +34,24 @@ namespace MonoDevelop.Debugger
public BusyEvaluatorDialog ()
{
this.Build ();
+ //Prevent closing dialog via X button, user can either wait with
+ //dialog open or press "Stop Debugger" button
+ DeleteEvent += (o, args) => args.RetVal = true;
}
-
+
public void UpdateBusyState (BusyStateEventArgs args)
{
if (!args.IsBusy) {
Hide ();
} else {
- labelMethod.Text = args.Description;
Show ();
}
}
-
+
protected virtual void OnButtonCancelClicked (object sender, System.EventArgs e)
{
Hide ();
DebuggingService.Stop ();
}
-
- protected virtual void OnButtonOkClicked (object sender, System.EventArgs e)
- {
- Hide ();
- }
}
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs
index f4f86afdd1..85c5ef476b 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs
@@ -1,4 +1,4 @@
-//
+//
// DebuggerOptionsPanelWidget.cs
//
// Author:
@@ -24,30 +24,81 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+using System;
using Mono.Debugging.Client;
using MonoDevelop.Ide.Gui.Dialogs;
+using Xwt;
+using MonoDevelop.Core;
namespace MonoDevelop.Debugger
{
- public class DebuggerOptionsPanel: OptionsPanel
+ public class DebuggerOptionsPanel : OptionsPanel
{
DebuggerOptionsPanelWidget w;
-
+
public override Gtk.Widget CreatePanelWidget ()
{
- return w = new DebuggerOptionsPanelWidget ();
+ w = new DebuggerOptionsPanelWidget ();
+
+ return (Gtk.Widget)Toolkit.CurrentEngine.GetNativeWidget (w);
}
-
+
public override void ApplyChanges ()
{
w.Store ();
}
}
- [System.ComponentModel.ToolboxItem(true)]
- public partial class DebuggerOptionsPanelWidget : Gtk.Bin
+ public class DebuggerOptionsPanelWidget : VBox
{
DebuggerSessionOptions options;
+ CheckBox checkProjectCodeOnly;
+ CheckBox checkStepOverPropertiesAndOperators;
+ CheckBox checkAllowEval;
+ CheckBox checkAllowToString;
+ CheckBox checkShowBaseGroup;
+ CheckBox checkGroupPrivate;
+ CheckBox checkGroupStatic;
+ SpinButton spinTimeout;
+ CheckBox enableLogging;
+
+ void Build ()
+ {
+ checkProjectCodeOnly = new CheckBox (GettextCatalog.GetString ("Debug project code only; do not step into framework code."));
+ PackStart (checkProjectCodeOnly);
+ checkStepOverPropertiesAndOperators = new CheckBox (GettextCatalog.GetString ("Step over properties and operators"));
+ PackStart (checkStepOverPropertiesAndOperators);
+ checkAllowEval = new CheckBox (GettextCatalog.GetString ("Allow implicit property evaluation and method invocation"));
+ checkAllowEval.Toggled += OnCheckAllowEvalToggled;
+ PackStart (checkAllowEval);
+ checkAllowToString = new CheckBox (GettextCatalog.GetString ("Call string-conversion function on objects in variables windows"));
+ checkAllowToString.MarginLeft = 18;
+ PackStart (checkAllowToString);
+ checkShowBaseGroup = new CheckBox (GettextCatalog.GetString ("Show inherited class members in a base class group"));
+ PackStart (checkShowBaseGroup);
+ checkGroupPrivate = new CheckBox (GettextCatalog.GetString ("Group non-public members"));
+ PackStart (checkGroupPrivate);
+ checkGroupStatic = new CheckBox (GettextCatalog.GetString ("Group static members"));
+ PackStart (checkGroupStatic);
+ var evalBox = new HBox ();
+ evalBox.PackStart (new Label (GettextCatalog.GetString ("Evaluation Timeout:")));
+ spinTimeout = new SpinButton ();
+ spinTimeout.ClimbRate = 100;
+ spinTimeout.Digits = 0;
+ spinTimeout.IncrementValue = 100;
+ spinTimeout.MaximumValue = 1000000;
+ spinTimeout.MinimumValue = 0;
+ spinTimeout.Wrap = false;
+ spinTimeout.WidthRequest = 80;
+ evalBox.PackStart (spinTimeout);
+ evalBox.PackStart (new Label (GettextCatalog.GetString ("ms")));
+ PackStart (evalBox);
+ PackStart (new Label () {
+ Markup = "<b>" + GettextCatalog.GetString ("Advanced options") + "</b>"
+ });
+ enableLogging = new CheckBox (GettextCatalog.GetString ("Enable diagnostic logging", BrandingService.ApplicationName));
+ PackStart (enableLogging);
+ }
public DebuggerOptionsPanelWidget ()
{
@@ -63,6 +114,7 @@ namespace MonoDevelop.Debugger
checkGroupStatic.Active = options.EvaluationOptions.GroupStaticMembers;
checkAllowToString.Sensitive = checkAllowEval.Active;
spinTimeout.Value = options.EvaluationOptions.EvaluationTimeout;
+ enableLogging.Active = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.DebuggerLogging", false);
}
public void Store ()
@@ -74,13 +126,14 @@ namespace MonoDevelop.Debugger
ops.FlattenHierarchy = !checkShowBaseGroup.Active;
ops.GroupPrivateMembers = checkGroupPrivate.Active;
ops.GroupStaticMembers = checkGroupStatic.Active;
- ops.EvaluationTimeout = (int) spinTimeout.Value;
+ ops.EvaluationTimeout = (int)spinTimeout.Value;
options.StepOverPropertiesAndOperators = checkStepOverPropertiesAndOperators.Active;
options.ProjectAssembliesOnly = checkProjectCodeOnly.Active;
options.EvaluationOptions = ops;
DebuggingService.SetUserOptions (options);
+ PropertyService.Set ("MonoDevelop.Debugger.DebuggingService.DebuggerLogging", enableLogging.Active);
}
protected virtual void OnCheckAllowEvalToggled (object sender, System.EventArgs e)
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
index abb2d6544f..3422b1cf87 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
@@ -98,6 +98,7 @@ namespace MonoDevelop.Debugger
IdeApp.Workspace.LoadingUserPreferences += OnLoadUserPrefs;
IdeApp.Workspace.LastWorkspaceItemClosed += OnSolutionClosed;
busyDialog = new BusyEvaluatorDialog ();
+ busyDialog.Modal = true;
busyDialog.TransientFor = MessageService.RootWindow;
busyDialog.DestroyWithParent = true;
};
@@ -706,7 +707,7 @@ namespace MonoDevelop.Debugger
if (busyStatusIcon == null) {
busyStatusIcon = IdeApp.Workbench.StatusBar.ShowStatusIcon (ImageService.GetIcon ("md-execute-debug", Gtk.IconSize.Menu));
busyStatusIcon.SetAlertMode (100);
- busyStatusIcon.ToolTip = GettextCatalog.GetString ("The Debugger is waiting for an expression evaluation to finish.");
+ busyStatusIcon.ToolTip = GettextCatalog.GetString ("The debugger runtime is not responding. You can wait for it to recover, or stop debugging.");
busyStatusIcon.Clicked += delegate {
MessageService.PlaceDialog (busyDialog, MessageService.RootWindow);
};
@@ -744,6 +745,8 @@ namespace MonoDevelop.Debugger
static void OnTargetEvent (object sender, TargetEventArgs args)
{
+ if (args.BreakEvent != null && args.BreakEvent.NonUserBreakpoint)
+ return;
nextStatementLocations.Clear ();
try {
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs
index 90973bb76f..890d216812 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs
@@ -127,7 +127,7 @@ namespace MonoDevelop.Debugger
messageOverlayWindow.SizeFunc = () => openButton.SizeRequest ().Width + w + hbox.Spacing * 5 + containerPadding * 2;
openButton.Clicked += delegate {
- var dlg = new OpenFileDialog (GettextCatalog.GetString ("File to Open"), Gtk.FileChooserAction.Open) {
+ var dlg = new OpenFileDialog (GettextCatalog.GetString ("File to Open"), MonoDevelop.Components.FileChooserAction.Open) {
TransientFor = IdeApp.Workbench.RootWindow,
ShowEncodingSelector = true,
ShowViewerSelector = true
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs
index 0984737f9e..feb6d9c0c3 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/LocalsPad.cs
@@ -49,6 +49,7 @@ namespace MonoDevelop.Debugger
if (frame == null)
return;
+ tree.ClearAll ();
tree.AddValues (frame.GetAllLocals ().Where (l => !string.IsNullOrWhiteSpace (l.Name) && l.Name != "?").ToArray ());
}
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs
index 5aad501f40..97164a0ca5 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs
@@ -220,7 +220,7 @@ namespace MonoDevelop.Debugger
options.AllowTargetInvoke = false;
}
- var args = frame.GetParameters ();
+ var args = frame.GetParameters (options);
//MethodName starting with "["... it's something like [ExternalCode]
if (!frame.SourceLocation.MethodName.StartsWith ("[", StringComparison.Ordinal)) {
diff --git a/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.BusyEvaluatorDialog.cs b/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.BusyEvaluatorDialog.cs
index 20c77c6ed8..ea62abdeb4 100644
--- a/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.BusyEvaluatorDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.BusyEvaluatorDialog.cs
@@ -5,113 +5,65 @@ namespace MonoDevelop.Debugger
public partial class BusyEvaluatorDialog
{
private global::Gtk.VBox vbox2;
+
private global::Gtk.Label label1;
- private global::Gtk.HBox hbox1;
- private global::Gtk.Label label2;
- private global::Gtk.Label labelMethod;
+
private global::Gtk.Button buttonCancel;
- private global::Gtk.Button buttonOk;
-
- protected virtual void Build ()
+
+ protected virtual void Build()
{
- global::Stetic.Gui.Initialize (this);
+ global::Stetic.Gui.Initialize(this);
// Widget MonoDevelop.Debugger.BusyEvaluatorDialog
this.Name = "MonoDevelop.Debugger.BusyEvaluatorDialog";
- this.Title = global::Mono.Unix.Catalog.GetString ("The Debugger is Busy");
+ this.Title = global::Mono.Unix.Catalog.GetString("The Debugger is Busy");
this.WindowPosition = ((global::Gtk.WindowPosition)(4));
// Internal child MonoDevelop.Debugger.BusyEvaluatorDialog.VBox
global::Gtk.VBox w1 = this.VBox;
w1.Name = "dialog1_VBox";
w1.BorderWidth = ((uint)(2));
// Container child dialog1_VBox.Gtk.Box+BoxChild
- this.vbox2 = new global::Gtk.VBox ();
+ this.vbox2 = new global::Gtk.VBox();
this.vbox2.Name = "vbox2";
this.vbox2.Spacing = 6;
this.vbox2.BorderWidth = ((uint)(9));
// Container child vbox2.Gtk.Box+BoxChild
- this.label1 = new global::Gtk.Label ();
+ this.label1 = new global::Gtk.Label();
this.label1.Name = "label1";
this.label1.Xalign = 0F;
- this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("The Debugger is waiting for an expression evaluation to finish.");
- this.vbox2.Add (this.label1);
- global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label1]));
+ this.label1.LabelProp = global::Mono.Unix.Catalog.GetString("The debugger runtime is not responding. You can wait for it to recover, or stop debugging.");
+ this.vbox2.Add(this.label1);
+ global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.label1]));
w2.Position = 0;
w2.Expand = false;
w2.Fill = false;
- // Container child vbox2.Gtk.Box+BoxChild
- this.hbox1 = new global::Gtk.HBox ();
- this.hbox1.Name = "hbox1";
- this.hbox1.Spacing = 6;
- // Container child hbox1.Gtk.Box+BoxChild
- this.label2 = new global::Gtk.Label ();
- this.label2.Name = "label2";
- this.label2.Xalign = 0F;
- this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Method:");
- this.hbox1.Add (this.label2);
- global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.label2]));
+ w1.Add(this.vbox2);
+ global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(w1[this.vbox2]));
w3.Position = 0;
- w3.Expand = false;
- w3.Fill = false;
- // Container child hbox1.Gtk.Box+BoxChild
- this.labelMethod = new global::Gtk.Label ();
- this.labelMethod.Name = "labelMethod";
- this.labelMethod.Xalign = 0F;
- this.labelMethod.LabelProp = "<method>";
- this.labelMethod.Wrap = true;
- this.labelMethod.Selectable = true;
- this.labelMethod.MaxWidthChars = 120;
- this.hbox1.Add (this.labelMethod);
- global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.labelMethod]));
- w4.Position = 1;
- w4.Expand = false;
- w4.Fill = false;
- this.vbox2.Add (this.hbox1);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1]));
- w5.Position = 1;
- w5.Expand = false;
- w5.Fill = false;
- w1.Add (this.vbox2);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(w1 [this.vbox2]));
- w6.Position = 0;
- w6.Expand = false;
- w6.Fill = false;
// Internal child MonoDevelop.Debugger.BusyEvaluatorDialog.ActionArea
- global::Gtk.HButtonBox w7 = this.ActionArea;
- w7.Name = "dialog1_ActionArea";
- w7.Spacing = 10;
- w7.BorderWidth = ((uint)(5));
- w7.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
+ global::Gtk.HButtonBox w4 = this.ActionArea;
+ w4.Name = "dialog1_ActionArea";
+ w4.Spacing = 10;
+ w4.BorderWidth = ((uint)(5));
+ w4.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
- this.buttonCancel = new global::Gtk.Button ();
+ this.buttonCancel = new global::Gtk.Button();
this.buttonCancel.CanDefault = true;
this.buttonCancel.CanFocus = true;
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.UseUnderline = true;
- this.buttonCancel.Label = global::Mono.Unix.Catalog.GetString ("Stop Debugger");
- w7.Add (this.buttonCancel);
- global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7 [this.buttonCancel]));
- w8.Expand = false;
- w8.Fill = false;
- // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
- this.buttonOk = new global::Gtk.Button ();
- this.buttonOk.CanDefault = true;
- this.buttonOk.CanFocus = true;
- this.buttonOk.Name = "buttonOk";
- this.buttonOk.UseUnderline = true;
- this.buttonOk.Label = global::Mono.Unix.Catalog.GetString ("Keep Waiting");
- w7.Add (this.buttonOk);
- global::Gtk.ButtonBox.ButtonBoxChild w9 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7 [this.buttonOk]));
- w9.Position = 1;
- w9.Expand = false;
- w9.Fill = false;
- if ((this.Child != null)) {
- this.Child.ShowAll ();
+ this.buttonCancel.Label = global::Mono.Unix.Catalog.GetString("Stop Debugger");
+ w4.Add(this.buttonCancel);
+ global::Gtk.ButtonBox.ButtonBoxChild w5 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w4[this.buttonCancel]));
+ w5.Expand = false;
+ w5.Fill = false;
+ if ((this.Child != null))
+ {
+ this.Child.ShowAll();
}
- this.DefaultWidth = 381;
- this.DefaultHeight = 126;
- this.Hide ();
- this.buttonCancel.Clicked += new global::System.EventHandler (this.OnButtonCancelClicked);
- this.buttonOk.Clicked += new global::System.EventHandler (this.OnButtonOkClicked);
+ this.DefaultWidth = 548;
+ this.DefaultHeight = 98;
+ this.Hide();
+ this.buttonCancel.Clicked += new global::System.EventHandler(this.OnButtonCancelClicked);
}
}
}
diff --git a/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs b/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs
deleted file mode 100644
index ddefc1bfbf..0000000000
--- a/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs
+++ /dev/null
@@ -1,187 +0,0 @@
-
-// This file has been generated by the GUI designer. Do not modify.
-namespace MonoDevelop.Debugger
-{
- public partial class DebuggerOptionsPanelWidget
- {
- private global::Gtk.VBox vbox3;
-
- private global::Gtk.CheckButton checkProjectCodeOnly;
-
- private global::Gtk.CheckButton checkStepOverPropertiesAndOperators;
-
- private global::Gtk.CheckButton checkAllowEval;
-
- private global::Gtk.Alignment alignmentAllowToString;
-
- private global::Gtk.CheckButton checkAllowToString;
-
- private global::Gtk.CheckButton checkShowBaseGroup;
-
- private global::Gtk.CheckButton checkGroupPrivate;
-
- private global::Gtk.CheckButton checkGroupStatic;
-
- private global::Gtk.Table tableEval;
-
- private global::Gtk.Label label3;
-
- private global::Gtk.Label labelEvalTimeout;
-
- private global::Gtk.SpinButton spinTimeout;
-
- protected virtual void Build ()
- {
- global::Stetic.Gui.Initialize (this);
- // Widget MonoDevelop.Debugger.DebuggerOptionsPanelWidget
- global::Stetic.BinContainer.Attach (this);
- this.Name = "MonoDevelop.Debugger.DebuggerOptionsPanelWidget";
- // Container child MonoDevelop.Debugger.DebuggerOptionsPanelWidget.Gtk.Container+ContainerChild
- this.vbox3 = new global::Gtk.VBox ();
- this.vbox3.Name = "vbox3";
- this.vbox3.Spacing = 6;
- this.vbox3.BorderWidth = ((uint)(9));
- // Container child vbox3.Gtk.Box+BoxChild
- this.checkProjectCodeOnly = new global::Gtk.CheckButton ();
- this.checkProjectCodeOnly.CanFocus = true;
- this.checkProjectCodeOnly.Name = "checkProjectCodeOnly";
- this.checkProjectCodeOnly.Label = global::Mono.Unix.Catalog.GetString ("Debug project code only; do not step into framework code.");
- this.checkProjectCodeOnly.Active = true;
- this.checkProjectCodeOnly.DrawIndicator = true;
- this.checkProjectCodeOnly.UseUnderline = true;
- this.vbox3.Add (this.checkProjectCodeOnly);
- global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkProjectCodeOnly]));
- w1.Position = 0;
- w1.Expand = false;
- w1.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
- this.checkStepOverPropertiesAndOperators = new global::Gtk.CheckButton ();
- this.checkStepOverPropertiesAndOperators.CanFocus = true;
- this.checkStepOverPropertiesAndOperators.Name = "checkStepOverPropertiesAndOperators";
- this.checkStepOverPropertiesAndOperators.Label = global::Mono.Unix.Catalog.GetString ("Step over properties and operators");
- this.checkStepOverPropertiesAndOperators.Active = true;
- this.checkStepOverPropertiesAndOperators.DrawIndicator = true;
- this.checkStepOverPropertiesAndOperators.UseUnderline = true;
- this.vbox3.Add (this.checkStepOverPropertiesAndOperators);
- global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkStepOverPropertiesAndOperators]));
- w2.Position = 1;
- w2.Expand = false;
- w2.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
- this.checkAllowEval = new global::Gtk.CheckButton ();
- this.checkAllowEval.CanFocus = true;
- this.checkAllowEval.Name = "checkAllowEval";
- this.checkAllowEval.Label = global::Mono.Unix.Catalog.GetString ("Allow implicit property evaluation and method invocation");
- this.checkAllowEval.Active = true;
- this.checkAllowEval.DrawIndicator = true;
- this.checkAllowEval.UseUnderline = true;
- this.vbox3.Add (this.checkAllowEval);
- global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkAllowEval]));
- w3.Position = 2;
- w3.Expand = false;
- w3.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
- this.alignmentAllowToString = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
- this.alignmentAllowToString.Name = "alignmentAllowToString";
- this.alignmentAllowToString.LeftPadding = ((uint)(18));
- // Container child alignmentAllowToString.Gtk.Container+ContainerChild
- this.checkAllowToString = new global::Gtk.CheckButton ();
- this.checkAllowToString.CanFocus = true;
- this.checkAllowToString.Name = "checkAllowToString";
- this.checkAllowToString.Label = global::Mono.Unix.Catalog.GetString ("Call string-conversion function on objects in variables windows");
- this.checkAllowToString.Active = true;
- this.checkAllowToString.DrawIndicator = true;
- this.checkAllowToString.UseUnderline = true;
- this.alignmentAllowToString.Add (this.checkAllowToString);
- this.vbox3.Add (this.alignmentAllowToString);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.alignmentAllowToString]));
- w5.Position = 3;
- w5.Expand = false;
- w5.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
- this.checkShowBaseGroup = new global::Gtk.CheckButton ();
- this.checkShowBaseGroup.CanFocus = true;
- this.checkShowBaseGroup.Name = "checkShowBaseGroup";
- this.checkShowBaseGroup.Label = global::Mono.Unix.Catalog.GetString ("Show inherited class members in a base class group");
- this.checkShowBaseGroup.DrawIndicator = true;
- this.checkShowBaseGroup.UseUnderline = true;
- this.vbox3.Add (this.checkShowBaseGroup);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkShowBaseGroup]));
- w6.Position = 4;
- w6.Expand = false;
- w6.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
- this.checkGroupPrivate = new global::Gtk.CheckButton ();
- this.checkGroupPrivate.CanFocus = true;
- this.checkGroupPrivate.Name = "checkGroupPrivate";
- this.checkGroupPrivate.Label = global::Mono.Unix.Catalog.GetString ("Group non-public members");
- this.checkGroupPrivate.DrawIndicator = true;
- this.checkGroupPrivate.UseUnderline = true;
- this.vbox3.Add (this.checkGroupPrivate);
- global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkGroupPrivate]));
- w7.Position = 5;
- w7.Expand = false;
- w7.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
- this.checkGroupStatic = new global::Gtk.CheckButton ();
- this.checkGroupStatic.CanFocus = true;
- this.checkGroupStatic.Name = "checkGroupStatic";
- this.checkGroupStatic.Label = global::Mono.Unix.Catalog.GetString ("Group static members");
- this.checkGroupStatic.DrawIndicator = true;
- this.checkGroupStatic.UseUnderline = true;
- this.vbox3.Add (this.checkGroupStatic);
- global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkGroupStatic]));
- w8.Position = 6;
- w8.Expand = false;
- w8.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
- this.tableEval = new global::Gtk.Table (((uint)(1)), ((uint)(3)), false);
- this.tableEval.Name = "tableEval";
- this.tableEval.RowSpacing = ((uint)(6));
- this.tableEval.ColumnSpacing = ((uint)(6));
- // Container child tableEval.Gtk.Table+TableChild
- this.label3 = new global::Gtk.Label ();
- this.label3.Name = "label3";
- this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("ms");
- this.tableEval.Add (this.label3);
- global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.tableEval [this.label3]));
- w9.LeftAttach = ((uint)(2));
- w9.RightAttach = ((uint)(3));
- w9.XOptions = ((global::Gtk.AttachOptions)(4));
- w9.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child tableEval.Gtk.Table+TableChild
- this.labelEvalTimeout = new global::Gtk.Label ();
- this.labelEvalTimeout.Name = "labelEvalTimeout";
- this.labelEvalTimeout.Xalign = 0F;
- this.labelEvalTimeout.LabelProp = global::Mono.Unix.Catalog.GetString ("Evaluation Timeout:");
- this.tableEval.Add (this.labelEvalTimeout);
- global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.tableEval [this.labelEvalTimeout]));
- w10.XOptions = ((global::Gtk.AttachOptions)(4));
- w10.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child tableEval.Gtk.Table+TableChild
- this.spinTimeout = new global::Gtk.SpinButton (0, 1000000, 100);
- this.spinTimeout.CanFocus = true;
- this.spinTimeout.Name = "spinTimeout";
- this.spinTimeout.Adjustment.PageIncrement = 10;
- this.spinTimeout.ClimbRate = 100;
- this.spinTimeout.Numeric = true;
- this.tableEval.Add (this.spinTimeout);
- global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.tableEval [this.spinTimeout]));
- w11.LeftAttach = ((uint)(1));
- w11.RightAttach = ((uint)(2));
- w11.XOptions = ((global::Gtk.AttachOptions)(4));
- w11.YOptions = ((global::Gtk.AttachOptions)(4));
- this.vbox3.Add (this.tableEval);
- global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.tableEval]));
- w12.Position = 7;
- w12.Expand = false;
- w12.Fill = false;
- this.Add (this.vbox3);
- if ((this.Child != null)) {
- this.Child.ShowAll ();
- }
- this.Hide ();
- this.checkAllowEval.Toggled += new global::System.EventHandler (this.OnCheckAllowEvalToggled);
- }
- }
-}
diff --git a/main/src/addins/MonoDevelop.Debugger/gtk-gui/generated.cs b/main/src/addins/MonoDevelop.Debugger/gtk-gui/generated.cs
index 3285e87c05..4842e95d78 100644
--- a/main/src/addins/MonoDevelop.Debugger/gtk-gui/generated.cs
+++ b/main/src/addins/MonoDevelop.Debugger/gtk-gui/generated.cs
@@ -6,75 +6,23 @@ namespace Stetic
{
private static bool initialized;
- internal static void Initialize (Gtk.Widget iconRenderer)
+ internal static void Initialize(Gtk.Widget iconRenderer)
{
- if ((Stetic.Gui.initialized == false)) {
+ if ((Stetic.Gui.initialized == false))
+ {
Stetic.Gui.initialized = true;
}
}
}
- internal class BinContainer
- {
- private Gtk.Widget child;
-
- private Gtk.UIManager uimanager;
-
- public static BinContainer Attach (Gtk.Bin bin)
- {
- BinContainer bc = new BinContainer ();
- bin.SizeRequested += new Gtk.SizeRequestedHandler (bc.OnSizeRequested);
- bin.SizeAllocated += new Gtk.SizeAllocatedHandler (bc.OnSizeAllocated);
- bin.Added += new Gtk.AddedHandler (bc.OnAdded);
- return bc;
- }
-
- private void OnSizeRequested (object sender, Gtk.SizeRequestedArgs args)
- {
- if ((this.child != null)) {
- args.Requisition = this.child.SizeRequest ();
- }
- }
-
- private void OnSizeAllocated (object sender, Gtk.SizeAllocatedArgs args)
- {
- if ((this.child != null)) {
- this.child.Allocation = args.Allocation;
- }
- }
-
- private void OnAdded (object sender, Gtk.AddedArgs args)
- {
- this.child = args.Widget;
- }
-
- public void SetUiManager (Gtk.UIManager uim)
- {
- this.uimanager = uim;
- this.child.Realized += new System.EventHandler (this.OnRealized);
- }
-
- private void OnRealized (object sender, System.EventArgs args)
- {
- if ((this.uimanager != null)) {
- Gtk.Widget w;
- w = this.child.Toplevel;
- if (((w != null) && typeof(Gtk.Window).IsInstanceOfType (w))) {
- ((Gtk.Window)(w)).AddAccelGroup (this.uimanager.AccelGroup);
- this.uimanager = null;
- }
- }
- }
- }
-
internal class ActionGroups
{
- public static Gtk.ActionGroup GetActionGroup (System.Type type)
+ public static Gtk.ActionGroup GetActionGroup(System.Type type)
{
- return Stetic.ActionGroups.GetActionGroup (type.FullName);
+ return Stetic.ActionGroups.GetActionGroup(type.FullName);
}
- public static Gtk.ActionGroup GetActionGroup (string name)
+ public static Gtk.ActionGroup GetActionGroup(string name)
{
return null;
}
diff --git a/main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic b/main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
index a78350eb13..9b600748d0 100644
--- a/main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
+++ b/main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
@@ -287,12 +287,12 @@
</widget>
</child>
</widget>
- <widget class="Gtk.Dialog" id="MonoDevelop.Debugger.BusyEvaluatorDialog" design-size="381 126">
+ <widget class="Gtk.Dialog" id="MonoDevelop.Debugger.BusyEvaluatorDialog" design-size="548 98">
<property name="MemberName" />
<property name="Visible">False</property>
<property name="Title" translatable="yes">The Debugger is Busy</property>
<property name="WindowPosition">CenterOnParent</property>
- <property name="Buttons">2</property>
+ <property name="Buttons">1</property>
<property name="HelpButton">False</property>
<child internal-child="VBox">
<widget class="Gtk.VBox" id="dialog1_VBox">
@@ -307,7 +307,7 @@
<widget class="Gtk.Label" id="label1">
<property name="MemberName" />
<property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">The Debugger is waiting for an expression evaluation to finish.</property>
+ <property name="LabelProp" translatable="yes">The debugger runtime is not responding. You can wait for it to recover, or stop debugging.</property>
</widget>
<packing>
<property name="Position">0</property>
@@ -317,52 +317,12 @@
</packing>
</child>
<child>
- <widget class="Gtk.HBox" id="hbox1">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Label" id="label2">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">Method:</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="labelMethod">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp">&lt;method&gt;</property>
- <property name="Wrap">True</property>
- <property name="Selectable">True</property>
- <property name="MaxWidthChars">120</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
+ <placeholder />
</child>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
</packing>
</child>
</widget>
@@ -372,7 +332,7 @@
<property name="MemberName" />
<property name="Spacing">10</property>
<property name="BorderWidth">5</property>
- <property name="Size">2</property>
+ <property name="Size">1</property>
<property name="LayoutStyle">End</property>
<child>
<widget class="Gtk.Button" id="buttonCancel">
@@ -390,233 +350,6 @@
<property name="Fill">False</property>
</packing>
</child>
- <child>
- <widget class="Gtk.Button" id="buttonOk">
- <property name="MemberName" />
- <property name="CanDefault">True</property>
- <property name="CanFocus">True</property>
- <property name="Type">TextOnly</property>
- <property name="Label" translatable="yes">Keep Waiting</property>
- <property name="UseUnderline">True</property>
- <property name="ResponseId">-1</property>
- <signal name="Clicked" handler="OnButtonOkClicked" />
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <widget class="Gtk.Bin" id="MonoDevelop.Debugger.DebuggerOptionsPanelWidget" design-size="523 241">
- <property name="MemberName" />
- <property name="Visible">False</property>
- <child>
- <widget class="Gtk.VBox" id="vbox3">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <property name="BorderWidth">9</property>
- <child>
- <widget class="Gtk.CheckButton" id="checkProjectCodeOnly">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Debug project code only; do not step into framework code.</property>
- <property name="Active">True</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.CheckButton" id="checkStepOverPropertiesAndOperators">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Step over properties and operators</property>
- <property name="Active">True</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.CheckButton" id="checkAllowEval">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Allow implicit property evaluation and method invocation</property>
- <property name="Active">True</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <signal name="Toggled" handler="OnCheckAllowEvalToggled" />
- </widget>
- <packing>
- <property name="Position">2</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Alignment" id="alignmentAllowToString">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LeftPadding">18</property>
- <child>
- <widget class="Gtk.CheckButton" id="checkAllowToString">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Call string-conversion function on objects in variables windows</property>
- <property name="Active">True</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">3</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.CheckButton" id="checkShowBaseGroup">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Show inherited class members in a base class group</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">4</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.CheckButton" id="checkGroupPrivate">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Group non-public members</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">5</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.CheckButton" id="checkGroupStatic">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Group static members</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">6</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Table" id="tableEval">
- <property name="MemberName" />
- <property name="NColumns">3</property>
- <property name="RowSpacing">6</property>
- <property name="ColumnSpacing">6</property>
- <child>
- <widget class="Gtk.Label" id="label3">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes">ms</property>
- </widget>
- <packing>
- <property name="LeftAttach">2</property>
- <property name="RightAttach">3</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="labelEvalTimeout">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">Evaluation Timeout:</property>
- </widget>
- <packing>
- <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.SpinButton" id="spinTimeout">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Upper">1000000</property>
- <property name="PageIncrement">10</property>
- <property name="StepIncrement">100</property>
- <property name="ClimbRate">100</property>
- <property name="Numeric">True</property>
- </widget>
- <packing>
- <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>
- <packing>
- <property name="Position">7</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
</widget>
</child>
</widget>
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs
index 0a95a9c589..50cb4254fe 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs
@@ -31,16 +31,41 @@ using System.ComponentModel;
using MonoDevelop.Projects;
using MonoDevelop.Core;
using MonoDevelop.Ide;
+using System.Linq;
namespace MonoDevelop.DesignerSupport
{
- class ProjectFileDescriptor: CustomDescriptor
+ class ProjectFileDescriptor: CustomDescriptor, IDisposable
{
ProjectFile file;
-
+ Project project;
+
public ProjectFileDescriptor (ProjectFile file)
{
this.file = file;
+ project = file.Project;
+ if (project != null) {
+ project.FilePropertyChangedInProject += OnFilePropertyChangedInProject;
+ }
+ }
+
+ void OnFilePropertyChangedInProject (object sender, ProjectFileEventArgs args)
+ {
+ var pad = IdeApp.Workbench.GetPad <PropertyPad> ();
+ if (pad == null)
+ return;
+
+ var grid = ((PropertyPad)pad.Content).PropertyGrid;
+ if (args.Any (arg => arg.ProjectFile == file))
+ grid.Refresh ();
+ }
+
+ void IDisposable.Dispose ()
+ {
+ if (project != null) {
+ project.FilePropertyChangedInProject -= OnFilePropertyChangedInProject;
+ project = null;
+ }
}
[LocalizedCategory ("Misc")]
@@ -71,6 +96,7 @@ namespace MonoDevelop.DesignerSupport
[LocalizedDisplayName ("Build action")]
[LocalizedDescription ("Action to perform when building this file.")]
[TypeConverter (typeof (BuildActionStringsConverter))]
+ [RefreshProperties(RefreshProperties.All)]
public string BuildAction {
get { return file.BuildAction; }
set { file.BuildAction = value; }
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ToolboxWidget.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ToolboxWidget.cs
index 071501d38a..d15045ffbc 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ToolboxWidget.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ToolboxWidget.cs
@@ -243,11 +243,15 @@ namespace MonoDevelop.DesignerSupport.Toolbox
Category lastCategory = null;
int lastCategoryYpos = 0;
+ cr.LineWidth = 1;
+
Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
const int foldSegmentHeight = 8;
ProcessExpandAnimation (cr, lastCategory, lastCategoryYpos, backColor, area, ref ypos);
+ if (!area.IntersectsWith (new Gdk.Rectangle (new Gdk.Point (xpos, ypos), itemDimension)))
+ return true;
cr.Rectangle (xpos, ypos, itemDimension.Width, itemDimension.Height);
using (var pat = new Cairo.LinearGradient (xpos, ypos, xpos, ypos + itemDimension.Height)) {
pat.AddColorStop (0, CategoryBackgroundGradientStartColor);
@@ -262,7 +266,6 @@ namespace MonoDevelop.DesignerSupport.Toolbox
cr.MoveTo (0, ypos + itemDimension.Height - 0.5);
cr.LineTo (xpos + Allocation.Width, ypos + itemDimension.Height - 0.5);
cr.SetSourceColor (CategoryBorderColor);
- cr.LineWidth = 1;
cr.Stroke ();
headerLayout.SetText (category.Text);
@@ -278,7 +281,11 @@ namespace MonoDevelop.DesignerSupport.Toolbox
lastCategory = category;
lastCategoryYpos = ypos + itemDimension.Height;
+ return true;
}, delegate (Category curCategory, Item item, Gdk.Size itemDimension) {
+ if (!area.IntersectsWith (new Gdk.Rectangle (new Gdk.Point (xpos, ypos), itemDimension)))
+ return true;
+
if (item == SelectedItem) {
cr.SetSourceColor (Style.Base (StateType.Selected).ToCairoColor ());
cr.Rectangle (xpos, ypos, itemDimension.Width, itemDimension.Height);
@@ -301,6 +308,8 @@ namespace MonoDevelop.DesignerSupport.Toolbox
cr.Rectangle (xpos + 0.5, ypos + 0.5, itemDimension.Width - 1, itemDimension.Height - 1);
cr.Stroke ();
}
+
+ return true;
});
ProcessExpandAnimation (cr, lastCategory, lastCategoryYpos, backColor, area, ref ypos);
@@ -540,6 +549,7 @@ namespace MonoDevelop.DesignerSupport.Toolbox
HideTooltipWindow ();
var oldItem = mouseOverItem;
mouseOverItem = null;
+ Gdk.Rectangle newItemExtents = Gdk.Rectangle.Zero;
this.mouseX = (int)e.X + (int)(this.hAdjustement != null ? this.hAdjustement.Value : 0);
this.mouseY = (int)e.Y + (int)(this.vAdjustement != null ? this.vAdjustement.Value : 0);
Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
@@ -547,22 +557,34 @@ namespace MonoDevelop.DesignerSupport.Toolbox
ypos <= mouseY && mouseY <= ypos + itemDimension.Height) {
mouseOverItem = category;
GdkWindow.Cursor = handCursor;
- ShowTooltip (mouseOverItem, TipTimer, (int)e.X + 2, (int)e.Y + 16);
+ if (!e.State.HasFlag (ModifierType.Button1Mask))
+ ShowTooltip (mouseOverItem, TipTimer, (int)e.X + 2, (int)e.Y + 16);
+ newItemExtents = new Gdk.Rectangle (xpos, ypos, itemDimension.Width, itemDimension.Height);
+ return false;
}
+ return true;
}, delegate (Category curCategory, Item item, Gdk.Size itemDimension) {
if (xpos <= mouseX && mouseX <= xpos + itemDimension.Width &&
ypos <= mouseY && mouseY <= ypos + itemDimension.Height) {
mouseOverItem = item;
GdkWindow.Cursor = null;
- ShowTooltip (mouseOverItem, TipTimer, (int)e.X + 2, (int)e.Y + 16);
+ if (!e.State.HasFlag (ModifierType.Button1Mask))
+ ShowTooltip (mouseOverItem, TipTimer, (int)e.X + 2, (int)e.Y + 16);
+ newItemExtents = new Gdk.Rectangle (xpos, ypos, itemDimension.Width, itemDimension.Height);
+ return false;
}
+ return true;
});
if (mouseOverItem == null)
GdkWindow.Cursor = null;
- if (oldItem != mouseOverItem)
+ if (oldItem != mouseOverItem) {
this.QueueDraw ();
+ var oldItemExtents = GetItemExtends (oldItem);
+ QueueDrawArea (oldItemExtents.X, oldItemExtents.Y, oldItemExtents.Width, oldItemExtents.Height);
+ QueueDrawArea (newItemExtents.X, newItemExtents.Y, newItemExtents.Width, newItemExtents.Height);
+ }
return base.OnMotionNotifyEvent (e);
}
@@ -612,10 +634,12 @@ namespace MonoDevelop.DesignerSupport.Toolbox
{
Category result = null;
int xpos = 0, ypos = 0;
- Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
- }, delegate (Category curCategory, Item innerItem, Gdk.Size itemDimension) {
- if (innerItem == item)
+ Iterate (ref xpos, ref ypos, null, delegate (Category curCategory, Item innerItem, Gdk.Size itemDimension) {
+ if (innerItem == item) {
result = curCategory;
+ return false;
+ }
+ return true;
});
return result;
}
@@ -626,11 +650,13 @@ namespace MonoDevelop.DesignerSupport.Toolbox
Category last = null;
int xpos = 0, ypos = 0;
Iterate (ref xpos, ref ypos, delegate (Category curCategory, Gdk.Size itemDimension) {
- if (last == category)
+ if (last == category) {
result = curCategory;
+ return false;
+ }
last = curCategory;
- }, delegate (Category curCategory, Item innerItem, Gdk.Size itemDimension) {
- });
+ return true;
+ }, null);
return result;
}
@@ -639,10 +665,12 @@ namespace MonoDevelop.DesignerSupport.Toolbox
Item result = item;
Gdk.Rectangle rect = GetItemExtends (item);
int xpos = 0, ypos = 0;
- Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
- }, delegate (Category curCategory, Item curItem, Gdk.Size itemDimension) {
- if (xpos > rect.X && ypos == rect.Y && result == item)
+ Iterate (ref xpos, ref ypos, null, delegate (Category curCategory, Item curItem, Gdk.Size itemDimension) {
+ if (xpos > rect.X && ypos == rect.Y && result == item) {
result = curItem;
+ return false;
+ }
+ return true;
});
return result;
}
@@ -652,10 +680,12 @@ namespace MonoDevelop.DesignerSupport.Toolbox
Item result = item;
Gdk.Rectangle rect = GetItemExtends (item);
int xpos = 0, ypos = 0;
- Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
- }, delegate (Category curCategory, Item curItem, Gdk.Size itemDimension) {
- if (xpos < rect.X && ypos == rect.Y)
+ Iterate (ref xpos, ref ypos, null, delegate (Category curCategory, Item curItem, Gdk.Size itemDimension) {
+ if (xpos < rect.X && ypos == rect.Y) {
result = curItem;
+ return false;
+ }
+ return true;
});
return result;
}
@@ -667,10 +697,12 @@ namespace MonoDevelop.DesignerSupport.Toolbox
Item result = item;
Gdk.Rectangle rect = GetItemExtends (item);
int xpos = 0, ypos = 0;
- Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
- }, delegate (Category curCategory, Item curItem, Gdk.Size itemDimension) {
- if (ypos > rect.Y && xpos == rect.X && result == item && curCategory == itemCategory)
+ Iterate (ref xpos, ref ypos, null, delegate (Category curCategory, Item curItem, Gdk.Size itemDimension) {
+ if (ypos > rect.Y && xpos == rect.X && result == item && curCategory == itemCategory) {
result = curItem;
+ return false;
+ }
+ return true;
});
return result;
}
@@ -681,10 +713,12 @@ namespace MonoDevelop.DesignerSupport.Toolbox
Item result = item;
Gdk.Rectangle rect = GetItemExtends (item);
int xpos = 0, ypos = 0;
- Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
- }, delegate (Category curCategory, Item curItem, Gdk.Size itemDimension) {
- if (ypos < rect.Y && xpos == rect.X && curCategory == itemCategory)
+ Iterate (ref xpos, ref ypos, null, delegate (Category curCategory, Item curItem, Gdk.Size itemDimension) {
+ if (ypos < rect.Y && xpos == rect.X && curCategory == itemCategory) {
result = curItem;
+ return false;
+ }
+ return true;
});
return result;
}
@@ -694,11 +728,17 @@ namespace MonoDevelop.DesignerSupport.Toolbox
Gdk.Rectangle result = new Gdk.Rectangle (0, 0, 0, 0);
int xpos = 0, ypos = 0;
Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
- if (item == category)
+ if (item == category) {
result = new Gdk.Rectangle (xpos, ypos, itemDimension.Width, itemDimension.Height);
+ return false;
+ }
+ return true;
}, delegate (Category curCategory, Item curItem, Gdk.Size itemDimension) {
- if (item == curItem)
+ if (item == curItem) {
result = new Gdk.Rectangle (xpos, ypos, itemDimension.Width, itemDimension.Height);
+ return false;
+ }
+ return true;
});
return result;
}
@@ -709,13 +749,19 @@ namespace MonoDevelop.DesignerSupport.Toolbox
Item lastItem = null;
int xpos = 0, ypos = 0;
Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
- if (currentItem == category && lastItem != null)
+ if (currentItem == category && lastItem != null) {
result = lastItem;
+ return false;
+ }
lastItem = category;
+ return true;
}, delegate (Category curCategory, Item item, Gdk.Size itemDimension) {
- if (currentItem == item && lastItem != null)
+ if (currentItem == item && lastItem != null) {
result = lastItem;
+ return false;
+ }
lastItem = item;
+ return true;
});
return result;
@@ -729,13 +775,17 @@ namespace MonoDevelop.DesignerSupport.Toolbox
Iterate (ref xpos, ref ypos, delegate (Category category, Gdk.Size itemDimension) {
if (lastItem == currentItem) {
result = category;
+ return false;
}
lastItem = category;
+ return true;
}, delegate (Category curCategory, Item item, Gdk.Size itemDimension) {
if (lastItem == currentItem) {
result = item;
+ return false;
}
lastItem = item;
+ return true;
});
return result;
}
@@ -774,28 +824,32 @@ namespace MonoDevelop.DesignerSupport.Toolbox
#endregion
#region Item & Category iteration
- delegate void CategoryAction (Category category, Gdk.Size categoryDimension);
- delegate void ItemAction (Category curCategory, Item item, Gdk.Size itemDimension);
- void IterateItems (Category category, ref int xpos, ref int ypos, ItemAction action)
+ delegate bool CategoryAction (Category category, Gdk.Size categoryDimension);
+ delegate bool ItemAction (Category curCategory, Item item, Gdk.Size itemDimension);
+ bool IterateItems (Category category, ref int xpos, ref int ypos, ItemAction action)
{
if (listMode || !category.CanIconizeItems) {
foreach (Item item in category.Items) {
if (!item.IsVisible)
continue;
-
- layout.SetText (item.Text);
- int x, y;
- layout.GetPixelSize (out x, out y);
- y = Math.Max (IconSize.Height, y);
- y += ItemTopBottomPadding * 2;
+
+ int x, y = item.ItemHeight;
+
+ if (y == 0) {
+ layout.SetText (item.Text);
+ layout.GetPixelSize (out x, out y);
+ y = Math.Max (IconSize.Height, y);
+ y += ItemTopBottomPadding * 2;
+ item.ItemHeight = y;
+ }
xpos = 0;
- if (action != null)
- action (category, item, new Gdk.Size (Allocation.Width, y));
+ if (action != null && !action (category, item, new Gdk.Size (Allocation.Width, y)))
+ return false;
ypos += y;
}
- return;
+ return true;
}
foreach (Item item in category.Items) {
if (!item.IsVisible)
@@ -804,11 +858,12 @@ namespace MonoDevelop.DesignerSupport.Toolbox
xpos = 0;
ypos += IconSize.Height;
}
- if (action != null)
- action (category, item, IconSize);
+ if (action != null && !action (category, item, IconSize))
+ return false;
xpos += IconSize.Width;
}
ypos += IconSize.Height;
+ return true;
}
void Iterate (ref int xpos, ref int ypos, CategoryAction catAction, ItemAction action)
@@ -818,18 +873,22 @@ namespace MonoDevelop.DesignerSupport.Toolbox
continue;
xpos = 0;
if (this.showCategories) {
-
- layout.SetText (category.Text);
- int x, y;
- layout.GetPixelSize (out x, out y);
- y += CategoryTopBottomPadding * 2;
+ int x, y = category.ItemHeight;
+
+ if (y == 0) {
+ layout.SetText (category.Text);
+ layout.GetPixelSize (out x, out y);
+ y += CategoryTopBottomPadding * 2;
+ category.ItemHeight = y;
+ }
- if (catAction != null)
- catAction (category, new Size (this.Allocation.Width, y));
+ if (catAction != null && !catAction (category, new Size (this.Allocation.Width, y)))
+ return;
ypos += y;
}
if (category.IsExpanded || category.AnimatingExpand || !this.showCategories) {
- IterateItems (category, ref xpos, ref ypos, action);
+ if (!IterateItems (category, ref xpos, ref ypos, action))
+ return;
}
}
}
@@ -1081,6 +1140,11 @@ namespace MonoDevelop.DesignerSupport.Toolbox
return text;
}
}
+
+ public int ItemHeight {
+ get;
+ set;
+ }
public bool IsVisible {
get {
diff --git a/main/src/addins/MonoDevelop.GtkCore/libstetic/libstetic.csproj b/main/src/addins/MonoDevelop.GtkCore/libstetic/libstetic.csproj
index eb1701a30e..053a866ec1 100644
--- a/main/src/addins/MonoDevelop.GtkCore/libstetic/libstetic.csproj
+++ b/main/src/addins/MonoDevelop.GtkCore/libstetic/libstetic.csproj
@@ -27,7 +27,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>bin\Release</OutputPath>
+ <OutputPath>..\..\..\..\build\AddIns\MonoDevelop.GtkCore</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Execution>
@@ -35,7 +35,7 @@
</Execution>
<DebugSymbols>true</DebugSymbols>
<NoWarn>1591;1573</NoWarn>
- <DocumentationFile>bin\Release\libstetic.xml</DocumentationFile>
+ <DocumentationFile>..\..\..\..\build\AddIns\MonoDevelop.GtkCore\libstetic.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Posix" />
diff --git a/main/src/addins/MonoDevelop.GtkCore/libstetic/wrapper/Misc.cs b/main/src/addins/MonoDevelop.GtkCore/libstetic/wrapper/Misc.cs
index 44624a73d6..757ab62afd 100644
--- a/main/src/addins/MonoDevelop.GtkCore/libstetic/wrapper/Misc.cs
+++ b/main/src/addins/MonoDevelop.GtkCore/libstetic/wrapper/Misc.cs
@@ -31,5 +31,10 @@ namespace Stetic.Wrapper
((Gtk.Misc)Wrapped).Xalign = 0.5f;
}
}
+
+ public static Gtk.Image CreateInstance ()
+ {
+ return new Gtk.Image (Gtk.Stock.MissingImage, Gtk.IconSize.Menu);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj b/main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj
index fb9b52a59d..07386f8269 100644
--- a/main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj
+++ b/main/src/addins/MonoDevelop.GtkCore/libsteticui/libsteticui.csproj
@@ -29,7 +29,7 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
- <OutputPath>bin\Release</OutputPath>
+ <OutputPath>..\..\..\..\build\AddIns\MonoDevelop.GtkCore</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Execution>
@@ -38,7 +38,7 @@
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<DebugSymbols>true</DebugSymbols>
<NoWarn>1591;1573</NoWarn>
- <DocumentationFile>bin\Release\libsteticui.xml</DocumentationFile>
+ <DocumentationFile>..\..\..\..\build\AddIns\MonoDevelop.GtkCore\libsteticui.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="Mono.Posix" />
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs
index 1177b4d023..4a9a933c57 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs
@@ -113,7 +113,7 @@ namespace MonoDevelop.PackageManagement.Commands
try {
PackageManagementServices.UpdatedPackagesInSolution.CheckForUpdates ();
} catch (Exception ex) {
- LoggingService.LogInternalError ("Check for NuGet package updates error.", ex);
+ LoggingService.LogError ("Check for NuGet package updates error.", ex);
}
}
@@ -125,7 +125,7 @@ namespace MonoDevelop.PackageManagement.Commands
e.Cancel = true;
}
} catch (Exception ex) {
- LoggingService.LogInternalError (ex);
+ LoggingService.LogError ("Error on unloading workspace item.", ex);
}
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackage.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackage.cs
index 1a22b06d86..7ebab31800 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackage.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackage.cs
@@ -231,6 +231,15 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
public bool DevelopmentDependency { get; set; }
public bool IsValid { get; set; }
+
+ public IFileSystem FileSystemPassedToExtractContents;
+ public string ExtractPathPassedToExtractContents;
+
+ public void ExtractContents (IFileSystem fileSystem, string extractPath)
+ {
+ FileSystemPassedToExtractContents = fileSystem;
+ ExtractPathPassedToExtractContents = extractPath;
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeSettings.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeSettings.cs
index 769caa8028..24b3593320 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeSettings.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeSettings.cs
@@ -83,30 +83,30 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
PackageSources.Add (valuePair);
}
- public Dictionary<string, KeyValuePair<string, string>> SavedSectionValues =
- new Dictionary<string, KeyValuePair<string, string>> ();
+ public Dictionary<string, SettingValue> SavedSectionValues =
+ new Dictionary<string, SettingValue> ();
public void SetValue (string section, string key, string value)
{
SavedSectionValues.Remove (section);
- SavedSectionValues.Add (section, new KeyValuePair<string, string> (key, value));
+ SavedSectionValues.Add (section, new SettingValue (key, value, false));
}
- public KeyValuePair<string, string> GetValuePassedToSetValueForActivePackageSourceSection ()
+ public SettingValue GetValuePassedToSetValueForActivePackageSourceSection ()
{
return SavedSectionValues [RegisteredPackageSourceSettings.ActivePackageSourceSectionName];
}
- public void SetValues (string section, IList<KeyValuePair<string, string>> values)
+ public void SetValues (string section, IList<SettingValue> values)
{
SavedSectionValueLists.Remove (section);
SavedSectionValueLists.Add (section, values);
}
- public Dictionary<string, IList<KeyValuePair<string, string>>> SavedSectionValueLists
- = new Dictionary<string, IList<KeyValuePair<string, string>>> ();
+ public Dictionary<string, IList<SettingValue>> SavedSectionValueLists
+ = new Dictionary<string, IList<SettingValue>> ();
- public IList<KeyValuePair<string, string>> GetValuesPassedToSetValuesForPackageSourcesSection ()
+ public IList<SettingValue> GetValuesPassedToSetValuesForPackageSourcesSection ()
{
return SavedSectionValueLists [PackageSourcesSectionName];
}
@@ -184,7 +184,7 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
DisabledPackageSources.Add (setting);
}
- public IList<KeyValuePair<string, string>> GetValuesPassedToSetValuesForDisabledPackageSourcesSection ()
+ public IList<SettingValue> GetValuesPassedToSetValuesForDisabledPackageSourcesSection ()
{
return SavedSectionValueLists [DisabledPackageSourcesSectionName];
}
@@ -202,7 +202,7 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
Sections.Add ("packageRestore", items);
}
- public KeyValuePair<string, string> GetValuePassedToSetValueForPackageRestoreSection ()
+ public SettingValue GetValuePassedToSetValueForPackageRestoreSection ()
{
return SavedSectionValues ["packageRestore"];
}
@@ -219,6 +219,16 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
items.Add (new SettingValue ("repositoryPath", fullPath, false));
Sections.Add (ConfigSectionName, items);
}
+
+ public Dictionary<string, IList<SettingValue>> SectionsUpdated =
+ new Dictionary<string, IList<SettingValue>> ();
+
+ public void UpdateSections (string section, IList<SettingValue> values)
+ {
+ SectionsUpdated.Remove (section);
+ SectionsUpdated.Add (section, values);
+ SetValues (section, values);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/TestableCheckForUpdatesTaskRunner.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableCheckForUpdatesTaskRunner.cs
index 548db011cc..6744012901 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/TestableCheckForUpdatesTaskRunner.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableCheckForUpdatesTaskRunner.cs
@@ -25,36 +25,32 @@
// THE SOFTWARE.
using System;
+using System.Collections.Generic;
using ICSharpCode.PackageManagement;
using MonoDevelop.Ide;
-using MonoDevelop.PackageManagement.Tests.Helpers;
-namespace MonoDevelop.PackageManagement.Tests
+namespace MonoDevelop.PackageManagement.Tests.Helpers
{
public class TestableCheckForUpdatesTaskRunner : CheckForUpdatesTaskRunner
{
- public TestableCheckForUpdatesTaskRunner (
- ITaskFactory taskFactory,
- IPackageManagementProgressMonitorFactory progressMonitorFactory,
- IPackageManagementEvents packageManagementEvents)
- : base (taskFactory, progressMonitorFactory, packageManagementEvents)
- {
- }
+ public List<string> LoggedErrorMessages = new List<string> ();
+ public List<Exception> LoggedExceptions = new List<Exception> ();
- protected override CheckForUpdatesProgressMonitor CreateProgressMonitor (
- IPackageManagementProgressMonitorFactory progressMonitorFactory,
- IPackageManagementEvents packageManagementEvents)
+ public TestableCheckForUpdatesTaskRunner (ITaskFactory taskFactory)
+ : base (taskFactory)
{
- ProgressMonitorCreated = new TestableCheckForUpdatesProgressMonitor (progressMonitorFactory, packageManagementEvents);
- return ProgressMonitorCreated;
}
- public TestableCheckForUpdatesProgressMonitor ProgressMonitorCreated { get; set; }
-
protected override void GuiBackgroundDispatch (MessageHandler handler)
{
handler.Invoke ();
}
+
+ protected override void LogError (string message, Exception ex)
+ {
+ LoggedErrorMessages.Add (message);
+ LoggedExceptions.Add (ex);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
index ec5a0df98e..71f6d04262 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.csproj
@@ -42,6 +42,7 @@
<OutputPath>..\..\..\..\build\tests</OutputPath>
<DebugSymbols>true</DebugSymbols>
<DebugType>pdbonly</DebugType>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
@@ -204,14 +205,13 @@
<Compile Include="MonoDevelop.PackageManagement.Tests\MSBuildTargetsRestoredMonitorTests.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests\EnsureNuGetPackageBuildImportsTargetUpdaterTests.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\ExceptionThrowingSolutionPackageRepository.cs" />
- <Compile Include="MonoDevelop.PackageManagement.Tests\CheckForUpdatesProgressMonitorTests.cs" />
- <Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\TestableCheckForUpdatesProgressMonitor.cs" />
- <Compile Include="MonoDevelop.PackageManagement.Tests\TestableCheckForUpdatesTaskRunner.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests\OpenPackageReadMeMonitorTests.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\TestableInstallPackageAction.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\TestableUpdatePackageAction.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests\FilePathExtensionsTests.cs" />
<Compile Include="MonoDevelop.PackageManagement.Tests\DotNetProjectExtensionsTests.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.Tests.Helpers\TestableCheckForUpdatesTaskRunner.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.Tests\MinClientVersionTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/CheckForUpdatesProgressMonitorTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/CheckForUpdatesProgressMonitorTests.cs
deleted file mode 100644
index 56abc52484..0000000000
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/CheckForUpdatesProgressMonitorTests.cs
+++ /dev/null
@@ -1,148 +0,0 @@
-//
-// CheckForUpdatesProgressMonitorTests.cs
-//
-// Author:
-// Matt Ward <matt.ward@xamarin.com>
-//
-// Copyright (c) 2014 Xamarin Inc. (http://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 NUnit.Framework;
-using MonoDevelop.PackageManagement.Tests.Helpers;
-using MonoDevelop.Core;
-using ICSharpCode.PackageManagement;
-using NuGet;
-
-namespace MonoDevelop.PackageManagement.Tests
-{
- [TestFixture]
- public class CheckForUpdatesProgressMonitorTests
- {
- TestableCheckForUpdatesProgressMonitor progressMonitor;
- FakeProgressMonitorFactory progressMonitorFactory;
- FakeProgressMonitor fakeProgressMonitor;
- PackageManagementEvents packageEvents;
-
- void CreateProgressMonitor ()
- {
- progressMonitorFactory = new FakeProgressMonitorFactory ();
- fakeProgressMonitor = progressMonitorFactory.ProgressMonitor;
- packageEvents = new PackageManagementEvents ();
- progressMonitor = new TestableCheckForUpdatesProgressMonitor (progressMonitorFactory, packageEvents);
- }
-
- [Test]
- public void Constructor_NewInstance_CreatesProgressMonitor ()
- {
- CreateProgressMonitor ();
-
- Assert.AreEqual (GettextCatalog.GetString ("Checking for package updates..."), progressMonitorFactory.StatusText);
- }
-
- [Test]
- public void Dispose_NewInstance_ProgressMonitorIsDisposed ()
- {
- CreateProgressMonitor ();
-
- progressMonitor.Dispose ();
-
- Assert.IsTrue (fakeProgressMonitor.IsDisposed);
- }
-
- [Test]
- public void Constructor_PackageManagementMessageEventFired_MessageLoggedToProgressMonitor ()
- {
- CreateProgressMonitor ();
-
- packageEvents.OnPackageOperationMessageLogged (MessageLevel.Info, "MyMessage");
-
- fakeProgressMonitor.AssertMessageIsLogged ("MyMessage");
- }
-
- [Test]
- public void Dispose_MessageLoggedAfterDispose_MessageNotLoggedToProgressMonitor ()
- {
- CreateProgressMonitor ();
- progressMonitor.Dispose ();
-
- packageEvents.OnPackageOperationMessageLogged (MessageLevel.Info, "MyMessage");
-
- fakeProgressMonitor.AssertMessageIsNotLogged ("MyMessage");
- }
-
- [Test]
- public void ReportError_ReportException_ExceptionReportedToProgressMonitor ()
- {
- CreateProgressMonitor ();
- var exception = new Exception ("Error");
-
- progressMonitor.ReportError (exception);
-
- fakeProgressMonitor.AssertMessageIsLogged ("Error");
- Assert.AreEqual (GettextCatalog.GetString ("Could not check for package updates."), fakeProgressMonitor.ReportedErrorMessage);
- Assert.IsTrue (progressMonitor.IsPackageConsoleShown);
- }
-
- [Test]
- public void ReportError_ReportDispatchServiceException_UnderlyingExceptionReported ()
- {
- CreateProgressMonitor ();
- var exception = new Exception ("Error");
- string message = "An exception was thrown while dispatching a method call in the UI thread.";
- var dispatchServiceException = new Exception (message, exception);
-
- progressMonitor.ReportError (dispatchServiceException);
-
- fakeProgressMonitor.AssertMessageIsLogged ("Error");
- }
-
- [Test]
- public void ReportSuccess_UpdatesAvailable_UpdatesAvailableMessageShownByProgressMonitor ()
- {
- CreateProgressMonitor ();
-
- progressMonitor.ReportSuccess (true);
-
- Assert.AreEqual (GettextCatalog.GetString ("Package updates are available."), fakeProgressMonitor.ReportedSuccessMessage);
- }
-
- [Test]
- public void ReportSuccess_NoUpdatesAvailable_NoUpdatesAvailableMessageShownByProgressMonitor ()
- {
- CreateProgressMonitor ();
-
- progressMonitor.ReportSuccess (false);
-
- Assert.AreEqual (GettextCatalog.GetString ("Packages are up to date."), fakeProgressMonitor.ReportedSuccessMessage);
- }
-
- [Test]
- public void ReportSuccess_NoUpdatesAvailableButWarningLogged_NoUpdatesAvailableWithWarningMessageShownByProgressMonitor ()
- {
- CreateProgressMonitor ();
- packageEvents.OnPackageOperationMessageLogged (MessageLevel.Warning, "WarningMessage");
-
- progressMonitor.ReportSuccess (false);
-
- Assert.AreEqual (GettextCatalog.GetString ("No updates found but warnings were reported."), fakeProgressMonitor.ReportedWarningMessage);
- }
- }
-}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MinClientVersionTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MinClientVersionTests.cs
new file mode 100644
index 0000000000..4fa2b48c68
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MinClientVersionTests.cs
@@ -0,0 +1,69 @@
+//
+// MinClientVersionTests.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://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 MonoDevelop.PackageManagement.Tests.Helpers;
+using NuGet;
+using NUnit.Framework;
+
+namespace MonoDevelop.PackageManagement.Tests
+{
+ [TestFixture]
+ public class MinClientVersionTests
+ {
+ FakePackage CreatePackageWithMinClientVersion (string minClientVersion)
+ {
+ return new FakePackage ("Test", "1.0") {
+ MinClientVersion = new Version (minClientVersion)
+ };
+ }
+
+ void WalkPackage (IPackage package)
+ {
+ var localRepository = new FakePackageRepository ();
+ var sourceRepository = new FakePackageRepository ();
+ var walker = new InstallWalker (localRepository, sourceRepository, null, NullLogger.Instance, true, false, DependencyVersion.Lowest);
+ walker.Walk (package);
+ }
+
+ [Test]
+ public void MinClientVersion_MicrosoftApplicationInsights_ShouldBeSupportedByNuGet ()
+ {
+ FakePackage package = CreatePackageWithMinClientVersion ("2.8.50313");
+
+ Assert.DoesNotThrow (() => WalkPackage (package));
+ }
+
+ [Test]
+ public void MinClientVersion_VeryHighNuGetVersion_ShouldNotBeSupportedByNuGet ()
+ {
+ FakePackage package = CreatePackageWithMinClientVersion ("9999.99");
+
+ Assert.Throws<NuGetVersionNotSatisfiedException> (() => WalkPackage (package));
+ }
+ }
+}
+
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageFromRepositoryTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageFromRepositoryTests.cs
index b3ad384a74..c83b4aee72 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageFromRepositoryTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageFromRepositoryTests.cs
@@ -462,6 +462,19 @@ namespace MonoDevelop.PackageManagement.Tests
Assert.IsTrue (dependency);
}
+
+ [Test]
+ public void ExtractPath_WrappedPackage_WrappedPackageExtractContentsCalled ()
+ {
+ CreatePackage ();
+ var expectedFileSystem = new FakeFileSystem ();
+ string expectedPath = @"d:\projects\test\packages";
+
+ package.ExtractContents (expectedFileSystem, expectedPath);
+
+ Assert.AreEqual (expectedFileSystem, fakePackage.FileSystemPassedToExtractContents);
+ Assert.AreEqual (expectedPath, fakePackage.ExtractPathPassedToExtractContents);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageManagementOptionsTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageManagementOptionsTests.cs
index f0bf3da6ca..48f81bc6d7 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageManagementOptionsTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/PackageManagementOptionsTests.cs
@@ -179,16 +179,16 @@ namespace MonoDevelop.PackageManagement.Tests
registeredPackageSources.Clear ();
registeredPackageSources.Add (packageSource);
- var expectedSavedPackageSourceSettings = new List<KeyValuePair<string, string>> ();
- expectedSavedPackageSourceSettings.Add (new KeyValuePair<string, string> ("Test", "http://codeplex.com"));
+ var expectedSavedPackageSourceSettings = new List<SettingValue> ();
+ expectedSavedPackageSourceSettings.Add (new SettingValue ("Test", "http://codeplex.com", false));
- IList<KeyValuePair<string, string>> actualSavedPackageSourceSettings = fakeSettings.GetValuesPassedToSetValuesForPackageSourcesSection ();
+ IList<SettingValue> actualSavedPackageSourceSettings = fakeSettings.GetValuesPassedToSetValuesForPackageSourcesSection ();
Assert.AreEqual (expectedSavedPackageSourceSettings, actualSavedPackageSourceSettings);
}
[Test]
- public void PackageSources_OnePackageSourceAdded_PackageSourcesSectionDeletedFromSettings ()
+ public void PackageSources_OnePackageSourceAdded_PackageSourcesSectionUpdated ()
{
CreateSettings ();
CreateOptions (fakeSettings);
@@ -198,9 +198,11 @@ namespace MonoDevelop.PackageManagement.Tests
registeredPackageSources.Clear ();
registeredPackageSources.Add (packageSource);
- bool sectionDeleted = fakeSettings.IsPackageSourcesSectionDeleted;
+ IList<SettingValue> settings = fakeSettings.SectionsUpdated [RegisteredPackageSourceSettings.PackageSourcesSectionName];
- Assert.IsTrue (sectionDeleted);
+ Assert.AreEqual (1, settings.Count);
+ Assert.AreEqual ("Test", settings[0].Key);
+ Assert.AreEqual ("http://codeplex.com", settings[0].Value);
}
[Test]
@@ -230,10 +232,10 @@ namespace MonoDevelop.PackageManagement.Tests
options.ActivePackageSource = packageSource;
- var expectedKeyValuePair = new KeyValuePair<string, string> ("Test", "http://sharpdevelop.com");
- KeyValuePair<string, string> actualKeyValuePair = fakeSettings.GetValuePassedToSetValueForActivePackageSourceSection ();
+ var expectedSetting = new SettingValue ("Test", "http://sharpdevelop.com", false);
+ SettingValue actualSetting = fakeSettings.GetValuePassedToSetValueForActivePackageSourceSection ();
- Assert.AreEqual (expectedKeyValuePair, actualKeyValuePair);
+ Assert.AreEqual (expectedSetting, actualSetting);
}
[Test]
@@ -395,9 +397,9 @@ namespace MonoDevelop.PackageManagement.Tests
registeredPackageSources.Clear ();
registeredPackageSources.Add (packageSource);
- bool sectionDeleted = fakeSettings.IsDisabledPackageSourcesSectionDeleted;
+ IList<SettingValue> settings = fakeSettings.SectionsUpdated[RegisteredPackageSourceSettings.DisabledPackageSourceSectionName];
- Assert.IsTrue (sectionDeleted);
+ Assert.AreEqual (0, settings.Count);
}
[Test]
@@ -411,10 +413,10 @@ namespace MonoDevelop.PackageManagement.Tests
registeredPackageSources.Clear ();
registeredPackageSources.Add (packageSource);
- var expectedSavedPackageSourceSettings = new List<KeyValuePair<string, string>> ();
- expectedSavedPackageSourceSettings.Add (new KeyValuePair<string, string> (packageSource.Name, "true"));
+ var expectedSavedPackageSourceSettings = new List<SettingValue> ();
+ expectedSavedPackageSourceSettings.Add (new SettingValue (packageSource.Name, "true", false));
- IList<KeyValuePair<string, string>> actualSavedPackageSourceSettings =
+ IList<SettingValue> actualSavedPackageSourceSettings =
fakeSettings.GetValuesPassedToSetValuesForDisabledPackageSourcesSection ();
Assert.AreEqual (expectedSavedPackageSourceSettings, actualSavedPackageSourceSettings);
}
@@ -430,7 +432,7 @@ namespace MonoDevelop.PackageManagement.Tests
registeredPackageSources.Clear ();
registeredPackageSources.Add (packageSource);
- IList<KeyValuePair<string, string>> actualSavedPackageSourceSettings =
+ IList<SettingValue> actualSavedPackageSourceSettings =
fakeSettings.GetValuesPassedToSetValuesForDisabledPackageSourcesSection ();
Assert.AreEqual (0, actualSavedPackageSourceSettings.Count);
}
@@ -464,10 +466,10 @@ namespace MonoDevelop.PackageManagement.Tests
options.IsPackageRestoreEnabled = true;
- KeyValuePair<string, string> keyPair = fakeSettings.GetValuePassedToSetValueForPackageRestoreSection ();
+ SettingValue setting = fakeSettings.GetValuePassedToSetValueForPackageRestoreSection ();
- Assert.AreEqual ("enabled", keyPair.Key);
- Assert.AreEqual ("True", keyPair.Value);
+ Assert.AreEqual ("enabled", setting.Key);
+ Assert.AreEqual ("True", setting.Value);
}
[Test]
@@ -492,8 +494,8 @@ namespace MonoDevelop.PackageManagement.Tests
options.IsPackageRestoreEnabled = false;
- KeyValuePair<string, string> keyValuePair = fakeSettings.GetValuePassedToSetValueForPackageRestoreSection ();
- Assert.AreEqual ("False", keyValuePair.Value);
+ SettingValue setting = fakeSettings.GetValuePassedToSetValueForPackageRestoreSection ();
+ Assert.AreEqual ("False", setting.Value);
}
[Test]
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UpdatedPackagesInSolutionTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UpdatedPackagesInSolutionTests.cs
index 0469b53d99..a67593fd7c 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UpdatedPackagesInSolutionTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UpdatedPackagesInSolutionTests.cs
@@ -54,10 +54,7 @@ namespace MonoDevelop.PackageManagement.Tests
taskFactory = new FakeTaskFactory ();
taskFactory.RunTasksSynchronously = true;
progressMonitorFactory = new FakeProgressMonitorFactory ();
- checkForUpdatesTaskRunner = new TestableCheckForUpdatesTaskRunner (
- taskFactory,
- progressMonitorFactory,
- packageManagementEvents);
+ checkForUpdatesTaskRunner = new TestableCheckForUpdatesTaskRunner (taskFactory);
updatedPackagesInSolution = new TestableUpdatedPackagesInSolution (
solution,
registeredPackageRepositories,
@@ -387,61 +384,7 @@ namespace MonoDevelop.PackageManagement.Tests
}
[Test]
- public void CheckForUpdates_OnePackageUpdated_ProgressMonitorCreatedAndDisposedAfterCheckForUpdatesReturned ()
- {
- CreateUpdatedPackagesInSolution ();
- taskFactory.RunTasksSynchronously = false;
- FakePackageManagementProject project = AddProjectToSolution ();
- project.AddPackageReference ("MyPackage", "1.0");
- AddUpdatedPackageToAggregateSourceRepository ("MyPackage", "1.1");
- updatedPackagesInSolution.CheckForUpdates ();
- bool progressMonitorCreated = checkForUpdatesTaskRunner.ProgressMonitorCreated != null;
- bool disposedBeforeTaskRun = progressMonitorFactory.ProgressMonitor.IsDisposed;
-
- taskFactory.ExecuteAllTasks<CheckForUpdatesTask> ();
-
- Assert.IsTrue (progressMonitorCreated);
- Assert.IsFalse (disposedBeforeTaskRun);
- Assert.IsTrue (progressMonitorFactory.ProgressMonitor.IsDisposed);
- }
-
- [Test]
- public void CheckForUpdates_OnePackageUpdatedButSolutionClosedBeforeResultsReturned_ProgressMonitorIsDisposed ()
- {
- CreateUpdatedPackagesInSolution ();
- taskFactory.RunTasksSynchronously = false;
- FakePackageManagementProject project = AddProjectToSolution ();
- project.AddPackageReference ("MyPackage", "1.0");
- AddUpdatedPackageToAggregateSourceRepository ("MyPackage", "1.1");
- updatedPackagesInSolution.CheckForUpdates ();
- bool progressMonitorCreated = checkForUpdatesTaskRunner.ProgressMonitorCreated != null;
- bool disposedBeforeTaskRun = progressMonitorFactory.ProgressMonitor.IsDisposed;
- var task = taskFactory.FakeTasksCreated [0] as FakeTask<CheckForUpdatesTask>;
- task.ExecuteTaskButNotContinueWith ();
- updatedPackagesInSolution.Clear ();
-
- task.ExecuteContinueWith ();
-
- Assert.IsTrue (progressMonitorCreated);
- Assert.IsFalse (disposedBeforeTaskRun);
- Assert.IsTrue (progressMonitorFactory.ProgressMonitor.IsDisposed);
- }
-
- [Test]
- public void CheckForUpdates_OnePackageUpdated_SuccessReportedToProgressMonitor ()
- {
- CreateUpdatedPackagesInSolution ();
- FakePackageManagementProject project = AddProjectToSolution ();
- project.AddPackageReference ("MyPackage", "1.0");
- AddUpdatedPackageToAggregateSourceRepository ("MyPackage", "1.1");
-
- updatedPackagesInSolution.CheckForUpdates ();
-
- Assert.AreEqual (GettextCatalog.GetString ("Package updates are available."), progressMonitorFactory.ProgressMonitor.ReportedSuccessMessage);
- }
-
- [Test]
- public void CheckForUpdates_NoPackagesUpdated_SuccessReportedToProgressMonitor ()
+ public void CheckForUpdates_NoPackagesUpdated_NoUpdates ()
{
CreateUpdatedPackagesInSolution ();
FakePackageManagementProject project = AddProjectToSolution ();
@@ -451,11 +394,10 @@ namespace MonoDevelop.PackageManagement.Tests
UpdatedPackagesInProject updatedPackages = updatedPackagesInSolution.GetUpdatedPackages (project.Project);
Assert.IsFalse (updatedPackagesInSolution.AnyUpdates ());
- Assert.AreEqual (GettextCatalog.GetString ("Packages are up to date."), progressMonitorFactory.ProgressMonitor.ReportedSuccessMessage);
}
[Test]
- public void CheckForUpdates_ExceptionThrownWhilstCheckingForUpdates_ErrorReportedToProgressMonitorWhichIsDisposed ()
+ public void CheckForUpdates_ExceptionThrownWhilstCheckingForUpdates_ExceptionLogged ()
{
CreateUpdatedPackagesInSolution ();
taskFactory.RunTasksSynchronously = false;
@@ -471,14 +413,12 @@ namespace MonoDevelop.PackageManagement.Tests
task.Result = null;
task.ExecuteContinueWith ();
- Assert.AreEqual (GettextCatalog.GetString ("Could not check for package updates."), progressMonitorFactory.ProgressMonitor.ReportedErrorMessage);
- Assert.IsTrue (checkForUpdatesTaskRunner.ProgressMonitorCreated.IsPackageConsoleShown);
- progressMonitorFactory.ProgressMonitor.AssertMessageIsLogged ("Inner exception error message");
- Assert.IsTrue (progressMonitorFactory.ProgressMonitor.IsDisposed);
+ Assert.AreEqual ("Current check for updates task error.", checkForUpdatesTaskRunner.LoggedErrorMessages[0]);
+ Assert.AreEqual (task.Exception, checkForUpdatesTaskRunner.LoggedExceptions[0]);
}
[Test]
- public void CheckForUpdates_ExceptionThrownWhilstCheckingForUpdatesButSolutionClosedBeforeCheckForUpdatesReturns_ErrorIsNotReportedButProgressMonitorIsDisposed ()
+ public void CheckForUpdates_ExceptionThrownWhilstCheckingForUpdatesButSolutionClosedBeforeCheckForUpdatesReturns_ErrorIsLogged ()
{
CreateUpdatedPackagesInSolution ();
taskFactory.RunTasksSynchronously = false;
@@ -494,13 +434,12 @@ namespace MonoDevelop.PackageManagement.Tests
task.Result = null;
task.ExecuteContinueWith ();
- Assert.IsNull (progressMonitorFactory.ProgressMonitor.ReportedErrorMessage);
- progressMonitorFactory.ProgressMonitor.AssertMessageIsNotLogged ("Error message");
- Assert.IsTrue (progressMonitorFactory.ProgressMonitor.IsDisposed);
+ Assert.AreEqual ("Check for updates task error.", checkForUpdatesTaskRunner.LoggedErrorMessages[0]);
+ Assert.AreEqual (task.Exception, checkForUpdatesTaskRunner.LoggedExceptions[0]);
}
[Test]
- public void CheckForUpdates_ExceptionThrownWhilstCheckingForUpdatesButSolutionClosedBeforeCheckForUpdatesReturnsAndSecondCheckForUpdatesIsStarted_ErrorIsNotReported ()
+ public void CheckForUpdates_ExceptionThrownWhilstCheckingForUpdatesButSolutionClosedBeforeCheckForUpdatesReturnsAndSecondCheckForUpdatesIsStarted_ErrorIsLogged ()
{
CreateUpdatedPackagesInSolution ();
taskFactory.RunTasksSynchronously = false;
@@ -516,9 +455,8 @@ namespace MonoDevelop.PackageManagement.Tests
task.Result = null;
task.ExecuteContinueWith ();
- Assert.IsNull (progressMonitorFactory.ProgressMonitor.ReportedErrorMessage);
- progressMonitorFactory.ProgressMonitor.AssertMessageIsNotLogged ("Error message");
- Assert.IsTrue (progressMonitorFactory.ProgressMonitor.IsDisposed);
+ Assert.AreEqual ("Check for updates task error.", checkForUpdatesTaskRunner.LoggedErrorMessages[0]);
+ Assert.AreEqual (task.Exception, checkForUpdatesTaskRunner.LoggedExceptions[0]);
}
[Test]
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
index 111d26d622..e1673e7ae1 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
@@ -46,6 +46,7 @@
<OutputPath>..\..\..\build\AddIns\MonoDevelop.PackageManagement</OutputPath>
<DebugSymbols>true</DebugSymbols>
<DebugType>pdbonly</DebugType>
+ <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
</PropertyGroup>
<ItemGroup>
<Reference Include="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
@@ -342,7 +343,6 @@
<Compile Include="MonoDevelop.PackageManagement\IUpdatedPackagesInSolution.cs" />
<Compile Include="MonoDevelop.PackageManagement\FallbackRepository.cs" />
<Compile Include="MonoDevelop.PackageManagement.Commands\PackageManagementStartupHandler.cs" />
- <Compile Include="MonoDevelop.PackageManagement\PackageUpdatesEventMonitor.cs" />
<Compile Include="MonoDevelop.PackageManagement\UpdatedPackagesMonitor.cs" />
<Compile Include="MonoDevelop.PackageManagement\UpdatePackagesProgressMonitorStatusMessage.cs" />
<Compile Include="MonoDevelop.PackageManagement\CheckForUpdatedPackagesAction.cs" />
@@ -364,13 +364,13 @@
<Compile Include="MonoDevelop.PackageManagement\MSBuildTargetsRestoredMonitor.cs" />
<Compile Include="MonoDevelop.PackageManagement\PackageManagementMSBuildExtension.cs" />
<Compile Include="MonoDevelop.PackageManagement\EnsureNuGetPackageBuildImportsTargetUpdater.cs" />
- <Compile Include="MonoDevelop.PackageManagement\CheckForUpdatesProgressMonitor.cs" />
<Compile Include="MonoDevelop.PackageManagement\CheckForUpdatesTaskRunner.cs" />
<Compile Include="MonoDevelop.PackageManagement\CheckForUpdatesTask.cs" />
<Compile Include="MonoDevelop.PackageManagement\ProjectReloadedEventArgs.cs" />
<Compile Include="MonoDevelop.PackageManagement\OpenPackageReadmeMonitor.cs" />
<Compile Include="MonoDevelop.PackageManagement\IOpenPackageReadMeMonitor.cs" />
<Compile Include="MonoDevelop.PackageManagement\NullOpenPackageReadMeMonitor.cs" />
+ <Compile Include="MonoDevelop.PackageManagement\PackageManagementSolutionExtensions.cs" />
<Compile Include="MonoDevelop.PackageManagement\DotNetProjectReferenceEventArgs.cs" />
<Compile Include="MonoDevelop.PackageManagement\LocalCopyReferenceMaintainer.cs" />
<Compile Include="MonoDevelop.PackageManagement\DotNetSolutionEventArgs.cs" />
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs
index fbe1ad52f9..258e102084 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs
@@ -210,7 +210,7 @@ namespace MonoDevelop.PackageManagement
public void ShowError (ProgressMonitorStatusMessage progressMessage, Exception exception)
{
- LoggingService.LogInternalError (progressMessage.Status, exception);
+ LoggingService.LogError (progressMessage.Error, exception);
ShowError (progressMessage, exception.Message);
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesProgressMonitor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesProgressMonitor.cs
deleted file mode 100644
index dbcb6fe501..0000000000
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesProgressMonitor.cs
+++ /dev/null
@@ -1,104 +0,0 @@
-//
-// CheckForUpdatesProgressMonitor.cs
-//
-// Author:
-// Matt Ward <matt.ward@xamarin.com>
-//
-// Copyright (c) 2014 Xamarin Inc. (http://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 ICSharpCode.PackageManagement;
-using MonoDevelop.Core;
-
-namespace MonoDevelop.PackageManagement
-{
- public class CheckForUpdatesProgressMonitor : IDisposable
- {
- ProgressMonitorStatusMessage progressMessage;
- IProgressMonitor progressMonitor;
- PackageUpdatesEventMonitor eventMonitor;
-
- public CheckForUpdatesProgressMonitor ()
- : this (
- PackageManagementServices.ProgressMonitorFactory,
- PackageManagementServices.PackageManagementEvents)
- {
- }
-
- public CheckForUpdatesProgressMonitor (
- IPackageManagementProgressMonitorFactory progressMonitorFactory,
- IPackageManagementEvents packageEvents)
- {
- progressMessage = ProgressMonitorStatusMessageFactory.CreateCheckingForPackageUpdatesMessage ();
- this.progressMonitor = progressMonitorFactory.CreateProgressMonitor (progressMessage.Status);
-
- eventMonitor = new PackageUpdatesEventMonitor (progressMonitor, packageEvents);
- }
-
- public void Dispose ()
- {
- eventMonitor.Dispose ();
- progressMonitor.Dispose ();
- }
-
- public void ReportError (Exception ex)
- {
- LoggingService.LogInternalError (ex);
- if (IsGuiDispatchException (ex)) {
- progressMonitor.Log.WriteLine (ex.InnerException.Message);
- } else if (ex is AggregateException) {
- LogAggregateException ((AggregateException)ex);
- } else {
- progressMonitor.Log.WriteLine (ex.Message);
- }
- progressMonitor.ReportError (progressMessage.Error, null);
- ShowPackageConsole ();
- }
-
- static bool IsGuiDispatchException (Exception ex)
- {
- return (ex.InnerException != null) &&
- (ex.Message == "An exception was thrown while dispatching a method call in the UI thread.");
- }
-
- void LogAggregateException (AggregateException ex)
- {
- progressMonitor.Log.WriteLine (new AggregateExceptionErrorMessage (ex));
- }
-
- protected virtual void ShowPackageConsole ()
- {
- progressMonitor.ShowPackageConsole ();
- }
-
- public void ReportSuccess (bool anyUpdates)
- {
- if (anyUpdates) {
- progressMonitor.ReportSuccess (GettextCatalog.GetString ("Package updates are available."));
- } else if (eventMonitor.WarningReported) {
- progressMonitor.ReportWarning (progressMessage.Warning);
- } else {
- progressMonitor.ReportSuccess (progressMessage.Success);
- }
- }
- }
-}
-
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTask.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTask.cs
index 45d7c73716..d59e6517f8 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTask.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTask.cs
@@ -65,7 +65,6 @@ namespace MonoDevelop.PackageManagement
public void CheckForUpdatesCompleted ()
{
- ProgressMonitor.ReportSuccess (projectsWithUpdatedPackages.Any ());
updatedPackagesInSolution.CheckForUpdatesCompleted (this);
}
@@ -73,23 +72,12 @@ namespace MonoDevelop.PackageManagement
get { return projectsWithUpdatedPackages; }
}
- public CheckForUpdatesProgressMonitor ProgressMonitor { get; set; }
-
public void Dispose ()
{
if (!disposed) {
disposed = true;
- if (ProgressMonitor != null) {
- ProgressMonitor.Dispose ();
- ProgressMonitor = null;
- }
}
}
-
- public void ReportError (Exception ex)
- {
- ProgressMonitor.ReportError (ex);
- }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTaskRunner.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTaskRunner.cs
index 0a01ea6163..c323d30246 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTaskRunner.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/CheckForUpdatesTaskRunner.cs
@@ -25,7 +25,6 @@
// THE SOFTWARE.
using System;
-using System.Collections.Generic;
using ICSharpCode.PackageManagement;
using MonoDevelop.Core;
using MonoDevelop.Ide;
@@ -35,26 +34,16 @@ namespace MonoDevelop.PackageManagement
public class CheckForUpdatesTaskRunner : IDisposable
{
ITaskFactory taskFactory;
- IPackageManagementProgressMonitorFactory progressMonitorFactory;
- IPackageManagementEvents packageManagementEvents;
CheckForUpdatesTask currentCheckForUpdatesTask;
ITask<CheckForUpdatesTask> task;
- public CheckForUpdatesTaskRunner (
- ITaskFactory taskFactory,
- IPackageManagementProgressMonitorFactory progressMonitorFactory,
- IPackageManagementEvents packageManagementEvents)
+ public CheckForUpdatesTaskRunner (ITaskFactory taskFactory)
{
this.taskFactory = taskFactory;
- this.progressMonitorFactory = progressMonitorFactory;
- this.packageManagementEvents = packageManagementEvents;
}
public CheckForUpdatesTaskRunner ()
- : this (
- new PackageManagementTaskFactory (),
- PackageManagementServices.ProgressMonitorFactory,
- PackageManagementServices.PackageManagementEvents)
+ : this (new PackageManagementTaskFactory ())
{
}
@@ -74,7 +63,6 @@ namespace MonoDevelop.PackageManagement
void CreateCheckForUpdatesTask (CheckForUpdatesTask checkForUpdatesTask)
{
currentCheckForUpdatesTask = checkForUpdatesTask;
- checkForUpdatesTask.ProgressMonitor = CreateProgressMonitor ();
task = taskFactory.CreateTask (
() => CheckForUpdates (checkForUpdatesTask),
@@ -108,9 +96,9 @@ namespace MonoDevelop.PackageManagement
{
if (task.IsFaulted) {
if (IsCurrentTask (task)) {
- ReportError (task.Exception);
+ LogError ("Current check for updates task error.", task.Exception);
} else {
- LoggingService.LogInternalError ("Check for updates task error.", task.Exception);
+ LogError ("Check for updates task error.", task.Exception);
}
} else if (task.IsCancelled) {
// Ignore.
@@ -134,13 +122,9 @@ namespace MonoDevelop.PackageManagement
return currentCheckForUpdatesTask == task;
}
- void ReportError (Exception ex)
+ protected virtual void LogError (string message, Exception ex)
{
- CheckForUpdatesTask task = currentCheckForUpdatesTask;
- task.ReportError (ex);
- GuiBackgroundDispatch (() => {
- task.Dispose ();
- });
+ LoggingService.LogError (message, ex);
}
bool IsCurrentTask (ITask<CheckForUpdatesTask> taskToCompare)
@@ -148,18 +132,6 @@ namespace MonoDevelop.PackageManagement
return taskToCompare == task;
}
- CheckForUpdatesProgressMonitor CreateProgressMonitor ()
- {
- return CreateProgressMonitor (progressMonitorFactory, packageManagementEvents);
- }
-
- protected virtual CheckForUpdatesProgressMonitor CreateProgressMonitor (
- IPackageManagementProgressMonitorFactory progressMonitorFactory,
- IPackageManagementEvents packageManagementEvents)
- {
- return new CheckForUpdatesProgressMonitor (progressMonitorFactory, packageManagementEvents);
- }
-
protected virtual void GuiBackgroundDispatch (MessageHandler handler)
{
DispatchService.BackgroundDispatch (handler);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageFromRepository.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageFromRepository.cs
index 56a5227376..f597c22480 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageFromRepository.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageFromRepository.cs
@@ -231,5 +231,10 @@ namespace ICSharpCode.PackageManagement
return true;
}
}
+
+ public void ExtractContents (IFileSystem fileSystem, string extractPath)
+ {
+ package.ExtractContents (fileSystem, extractPath);
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs
index 5e8ec633b8..a6130d65f7 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs
@@ -192,7 +192,7 @@ namespace MonoDevelop.PackageManagement
public void ReportError (ProgressMonitorStatusMessage progressMessage, Exception ex)
{
- LoggingService.LogInternalError (ex);
+ LoggingService.LogError (progressMessage.Error, ex);
progressMonitor.Log.WriteLine (ex.Message);
progressMonitor.ReportError (progressMessage.Error, null);
ShowPackageConsole (progressMonitor);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementServices.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementServices.cs
index ccf2cb438c..f07f6e48b2 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementServices.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementServices.cs
@@ -100,7 +100,7 @@ namespace ICSharpCode.PackageManagement
try {
return Settings.LoadDefaultSettings (null, null, null);
} catch (Exception ex) {
- LoggingService.LogInternalError ("Unable to load NuGet.Config.", ex);
+ LoggingService.LogError ("Unable to load NuGet.Config.", ex);
}
return NullSettings.Instance;
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableCheckForUpdatesProgressMonitor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementSolutionExtensions.cs
index d35e6aefe5..4f9ef87876 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/TestableCheckForUpdatesProgressMonitor.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementSolutionExtensions.cs
@@ -1,49 +1,43 @@
-//
-// TestableCheckForUpdatesProgressMonitor.cs
-//
-// Author:
-// Matt Ward <matt.ward@xamarin.com>
-//
-// Copyright (c) 2014 Xamarin Inc. (http://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 ICSharpCode.PackageManagement;
-
-namespace MonoDevelop.PackageManagement.Tests.Helpers
-{
- public class TestableCheckForUpdatesProgressMonitor : CheckForUpdatesProgressMonitor
- {
- public TestableCheckForUpdatesProgressMonitor (
- IPackageManagementProgressMonitorFactory progressMonitorFactory,
- IPackageManagementEvents packageEvents)
- : base (progressMonitorFactory, packageEvents)
- {
- }
-
- public bool IsPackageConsoleShown;
-
- protected override void ShowPackageConsole ()
- {
- IsPackageConsoleShown = true;
- }
- }
-}
-
+//
+// PackageManagementSolutionExtensions.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://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 MonoDevelop.PackageManagement;
+using MonoDevelop.Projects;
+
+namespace ICSharpCode.PackageManagement
+{
+ public static class PackageManagementSolutionExtensions
+ {
+ public static IPackageManagementProject GetProject (this IPackageManagementSolution solution, DotNetProject project)
+ {
+ var projectProxy = new DotNetProjectProxy (project);
+ var repository = PackageManagementServices.PackageRepositoryCache.CreateAggregateWithPriorityMachineCacheRepository ();
+ return solution.GetProject (repository, projectProxy);
+ }
+ }
+}
+
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs
index 2dd4d79a71..0b905a25cb 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestoreRunner.cs
@@ -82,7 +82,7 @@ namespace MonoDevelop.PackageManagement
try {
RestorePackages (progressMonitor, progressMessage);
} catch (Exception ex) {
- LoggingService.LogInternalError (ex);
+ LoggingService.LogError (progressMessage.Error, ex);
progressMonitor.Log.WriteLine (ex.Message);
progressMonitor.ReportError (progressMessage.Error, null);
progressMonitor.ShowPackageConsole ();
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestorer.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestorer.cs
index 912e981ecc..f13c9f3fb3 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestorer.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageRestorer.cs
@@ -77,7 +77,7 @@ namespace MonoDevelop.PackageManagement
RestoreWithProgressMonitor (progressMessage);
}
} catch (Exception ex) {
- LoggingService.LogInternalError (ex);
+ LoggingService.LogError ("Package restore failed", ex);
RestoreFailed = true;
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageUpdatesEventMonitor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageUpdatesEventMonitor.cs
deleted file mode 100644
index cfb21f91da..0000000000
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageUpdatesEventMonitor.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// PackageUpdatesEventMonitor.cs
-//
-// Author:
-// Matt Ward <matt.ward@xamarin.com>
-//
-// Copyright (c) 2014 Xamarin Inc. (http://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 ICSharpCode.PackageManagement;
-using MonoDevelop.Core;
-using NuGet;
-
-namespace MonoDevelop.PackageManagement
-{
- public class PackageUpdatesEventMonitor : IDisposable
- {
- IPackageManagementEvents packageEvents;
- IProgressMonitor progressMonitor;
-
- public PackageUpdatesEventMonitor (IProgressMonitor progressMonitor)
- : this (
- progressMonitor,
- PackageManagementServices.PackageManagementEvents)
- {
- }
-
- public PackageUpdatesEventMonitor (
- IProgressMonitor progressMonitor,
- IPackageManagementEvents packageEvents)
- {
- this.progressMonitor = progressMonitor;
- this.packageEvents = packageEvents;
-
- packageEvents.PackageOperationMessageLogged += PackageOperationMessageLogged;
- }
-
- void PackageOperationMessageLogged (object sender, PackageOperationMessageLoggedEventArgs e)
- {
- progressMonitor.Log.WriteLine (e.Message.ToString ());
-
- if (e.Message.Level == MessageLevel.Warning) {
- WarningReported = true;
- }
- }
-
- public void Dispose ()
- {
- packageEvents.PackageOperationMessageLogged -= PackageOperationMessageLogged;
- }
-
- public bool WarningReported { get; private set; }
- }
-}
-
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs
index cf75931581..6cb5f30fb4 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageOperationsAction.cs
@@ -28,9 +28,7 @@
using System.Collections.Generic;
using System.Linq;
-using MonoDevelop.PackageManagement;
using NuGet;
-using MonoDevelop.PackageManagement;
namespace ICSharpCode.PackageManagement
{
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs
index 6bc99bf3f8..6c42dbef5f 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs
@@ -213,15 +213,6 @@ namespace MonoDevelop.PackageManagement
);
}
- public static ProgressMonitorStatusMessage CreateCheckingForPackageUpdatesMessage ()
- {
- return new ProgressMonitorStatusMessage (
- GetString ("Checking for package updates..."),
- GetString ("Packages are up to date."),
- GetString ("Could not check for package updates."),
- GetString ("No updates found but warnings were reported."));
- }
-
static string GetString (string phrase)
{
return GettextCatalog.GetString (phrase);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs
index 8369605e22..1986fcc729 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs
@@ -39,7 +39,9 @@ namespace ICSharpCode.PackageManagement
{
public class RegisteredPackageSourceSettings
{
+ public static readonly string PackageSourcesSectionName = "packageSources";
public static readonly string ActivePackageSourceSectionName = "activePackageSource";
+ public static readonly string DisabledPackageSourceSectionName = "disabledPackageSources";
public static readonly PackageSource AggregatePackageSource =
new PackageSource("(Aggregate source)", "All");
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SettingsProvider.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SettingsProvider.cs
index 2488c558da..7f89c7f8bb 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SettingsProvider.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SettingsProvider.cs
@@ -66,7 +66,7 @@ namespace MonoDevelop.PackageManagement
try {
return LoadSettings (GetSolutionDirectory ());
} catch (Exception ex) {
- LoggingService.LogInternalError ("Unable to load NuGet.Config file.", ex);
+ LoggingService.LogError ("Unable to load NuGet.Config file.", ex);
}
return NullSettings.Instance;
}
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/AnalysisCommands.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/AnalysisCommands.cs
index 392aacd522..619a60fa9e 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/AnalysisCommands.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/AnalysisCommands.cs
@@ -25,6 +25,7 @@
// THE SOFTWARE.
using System;
+using MonoDevelop.Components;
using MonoDevelop.Components.Commands;
using System.Linq;
using MonoDevelop.Core;
@@ -120,6 +121,8 @@ namespace MonoDevelop.AnalysisCore
((System.Action)dataItem) ();
return;
}
+ if (!RefactoringService.CheckUserSettings ())
+ return;
var action = dataItem as IAnalysisFixAction;
if (action != null) {
action.Fix ();
@@ -289,7 +292,7 @@ namespace MonoDevelop.AnalysisCore
{
var lang = "text/x-csharp";
- OpenFileDialog dlg = new OpenFileDialog ("Export Rules", FileChooserAction.Save);
+ OpenFileDialog dlg = new OpenFileDialog ("Export Rules", MonoDevelop.Components.FileChooserAction.Save);
dlg.InitialFileName = "rules.html";
if (!dlg.Run ())
return;
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs
index 8cbdfbf6dc..fc93c8dc00 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs
@@ -429,6 +429,8 @@ namespace MonoDevelop.CodeActions
void PopulateFixes (FixMenuDescriptor menu, ref int items)
{
+ if (!RefactoringService.ShowFixes)
+ return;
int mnemonic = 1;
bool gotImportantFix = false, addedSeparator = false;
var fixesAdded = new List<string> ();
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs
index e4498221a7..69852183a5 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs
@@ -140,6 +140,7 @@ namespace MonoDevelop.Refactoring.Rename
buttonPreview.Clicked += OnPreviewClicked;
entry.Changed += delegate { buttonPreview.Sensitive = buttonOk.Sensitive = ValidateName (); };
ValidateName ();
+ this.hbox1.HideAll ();
}
bool ValidateName ()
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml
index 8151d80966..ed0ba0695c 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml
@@ -95,7 +95,7 @@
defaultHandler = "MonoDevelop.Refactoring.ResolveCommandHandler"
type="array"
_label = "Resolve"/>
-
+
<Command id = "MonoDevelop.Refactoring.RefactoryCommands.CurrentRefactoryOperations"
defaultHandler = "MonoDevelop.Refactoring.CurrentRefactoryOperationsHandler"
type="array"
@@ -182,7 +182,7 @@
func="MonoDevelop.AnalysisCore.Rules.NamingConventions.ClassNaming" />-->
</Category>
</Extension>
-
+
<Extension path = "/MonoDevelop/AnalysisCore/FixHandlers">
<Handler fixName="RenameMember" class = "MonoDevelop.AnalysisCore.Fixes.RenameMemberHandler" />
<Handler fixName="Generic" class = "MonoDevelop.AnalysisCore.Fixes.GenericFixHandler" />
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj
index d47fae2ad7..6fe3d47b41 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj
@@ -42,6 +42,7 @@
<NoWarn>1591;1573</NoWarn>
<DebugSymbols>true</DebugSymbols>
<DocumentationFile>..\..\..\build\AddIns\MonoDevelop.Refactoring\MonoDevelop.Refactoring.xml</DocumentationFile>
+ <DebugType>full</DebugType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseMac|AnyCPU' ">
<Optimize>true</Optimize>
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs
index 64096e8329..9e18efff67 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs
@@ -42,6 +42,7 @@ using Mono.TextEditor;
using MonoDevelop.Ide.TypeSystem;
using System.Diagnostics;
using MonoDevelop.Core.Instrumentation;
+using MonoDevelop.Ide;
namespace MonoDevelop.Refactoring
{
@@ -293,10 +294,53 @@ namespace MonoDevelop.Refactoring
return RunAll (allFixes, refactoringContext, script);
}
}
-
+
+ const string EnableRefactorings = "RefactoringSettings.EnableRefactorings";
+
+ internal static bool CheckUserSettings()
+ {
+ var hasRefactoringSettings = IdeApp.ProjectOperations.CurrentSelectedSolution == null ||
+ IdeApp.ProjectOperations.CurrentSelectedSolution.UserProperties.HasValue (EnableRefactorings);
+ if (!hasRefactoringSettings) {
+ var useRefactoringsButton = new AlertButton (GettextCatalog.GetString("Use refactorings on this solution"));
+ var text = GettextCatalog.GetString (
+@"WARNING: The Xamarin Studio refactoring operations do not yet support C# 6.
+
+You may continue to use refactoring operations with C# 6, however you should check the results carefully to make sure that they have not made incorrect changes to your code. In particular, the ""?."" null propagating dereference will be changed to ""."", a simple dereference, which can cause unexpected NullReferenceExceptions at runtime.");
+ var message = new QuestionMessage (text);
+ message.Buttons.Add (useRefactoringsButton);
+ message.Buttons.Add (AlertButton.Cancel);
+ message.Icon = Gtk.Stock.DialogWarning;
+ message.DefaultButton = 1;
+
+ var result = MessageService.AskQuestion (message);
+ if (result == AlertButton.Cancel)
+ return false;
+ ShowFixes = result == useRefactoringsButton;
+ }
+ return ShowFixes;
+ }
+
+ internal static bool ShowFixes {
+ get {
+ if (Ide.IdeApp.ProjectOperations.CurrentSelectedSolution != null) {
+ var hasRefactoringSettings = IdeApp.ProjectOperations.CurrentSelectedSolution.UserProperties.HasValue (EnableRefactorings);
+ return !hasRefactoringSettings || IdeApp.ProjectOperations.CurrentSelectedSolution.UserProperties.GetValue<bool> (EnableRefactorings);
+ }
+ return true;
+ }
+ set {
+ IdeApp.ProjectOperations.CurrentSelectedSolution.UserProperties.SetValue (EnableRefactorings, value);
+ IdeApp.ProjectOperations.CurrentSelectedSolution.SaveUserProperties ();
+ }
+ }
+
+
public static void ApplyFix (CodeAction action, IRefactoringContext context)
{
- using(var script = context.CreateScript ()) {
+ if (!CheckUserSettings ())
+ return;
+ using (var script = context.CreateScript ()) {
action.Run (context, script);
}
}
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
index 1dd79118c7..d89a7c4081 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoryCommands.cs
@@ -269,49 +269,49 @@ namespace MonoDevelop.Refactoring
}));
added = true;
}
-
- foreach (var refactoring in RefactoringService.Refactorings) {
- if (refactoring.IsValid (options)) {
- CommandInfo info = new CommandInfo (refactoring.GetMenuDescription (options));
- info.AccelKey = refactoring.AccelKey;
- ciset.CommandInfos.Add (info, new Action (new RefactoringOperationWrapper (refactoring, options).Operation));
+ if (RefactoringService.ShowFixes) {
+ foreach (var refactoring in RefactoringService.Refactorings) {
+ if (refactoring.IsValid (options)) {
+ CommandInfo info = new CommandInfo (refactoring.GetMenuDescription (options));
+ info.AccelKey = refactoring.AccelKey;
+ ciset.CommandInfos.Add (info, new Action (new RefactoringOperationWrapper (refactoring, options).Operation));
+ }
}
- }
- var refactoringInfo = doc.Annotation<RefactoringDocumentInfo> ();
- if (refactoringInfo == null) {
- refactoringInfo = new RefactoringDocumentInfo ();
- doc.AddAnnotation (refactoringInfo);
- }
- var loc = doc.Editor.Caret.Location;
- bool first = true;
- if (refactoringInfo.lastDocument != doc.ParsedDocument || loc != lastLocation) {
- try {
- refactoringInfo.validActions = RefactoringService.GetValidActions (doc, loc, new CancellationTokenSource (500).Token);
- } catch (TaskCanceledException) {
- } catch (AggregateException ae) {
- ae.Flatten ().Handle (x => x is TaskCanceledException);
+ var refactoringInfo = doc.Annotation<RefactoringDocumentInfo> ();
+ if (refactoringInfo == null) {
+ refactoringInfo = new RefactoringDocumentInfo ();
+ doc.AddAnnotation (refactoringInfo);
}
+ var loc = doc.Editor.Caret.Location;
+ bool first = true;
+ if (refactoringInfo.lastDocument != doc.ParsedDocument || loc != lastLocation) {
+ try {
+ refactoringInfo.validActions = RefactoringService.GetValidActions (doc, loc, new CancellationTokenSource (500).Token);
+ } catch (TaskCanceledException) {
+ } catch (AggregateException ae) {
+ ae.Flatten ().Handle (x => x is TaskCanceledException);
+ }
- lastLocation = loc;
- refactoringInfo.lastDocument = doc.ParsedDocument;
- }
- if (refactoringInfo.validActions != null && refactoringInfo.lastDocument != null && refactoringInfo.lastDocument.CreateRefactoringContext != null) {
- var context = refactoringInfo.lastDocument.CreateRefactoringContext (doc, CancellationToken.None);
+ lastLocation = loc;
+ refactoringInfo.lastDocument = doc.ParsedDocument;
+ }
+ if (refactoringInfo.validActions != null && refactoringInfo.lastDocument != null && refactoringInfo.lastDocument.CreateRefactoringContext != null) {
+ var context = refactoringInfo.lastDocument.CreateRefactoringContext (doc, CancellationToken.None);
- foreach (var fix_ in refactoringInfo.validActions.OrderByDescending (i => Tuple.Create (CodeActionEditorExtension.IsAnalysisOrErrorFix(i), (int)i.Severity, CodeActionEditorExtension.GetUsage (i.IdString)))) {
- if (CodeActionEditorExtension.IsAnalysisOrErrorFix (fix_))
- continue;
- var fix = fix_;
- if (first) {
- first = false;
- if (ciset.CommandInfos.Count > 0)
- ciset.CommandInfos.AddSeparator ();
- }
+ foreach (var fix_ in refactoringInfo.validActions.OrderByDescending (i => Tuple.Create (CodeActionEditorExtension.IsAnalysisOrErrorFix(i), (int)i.Severity, CodeActionEditorExtension.GetUsage (i.IdString)))) {
+ if (CodeActionEditorExtension.IsAnalysisOrErrorFix (fix_))
+ continue;
+ var fix = fix_;
+ if (first) {
+ first = false;
+ if (ciset.CommandInfos.Count > 0)
+ ciset.CommandInfos.AddSeparator ();
+ }
- ciset.CommandInfos.Add (fix.Title, new Action (() => RefactoringService.ApplyFix (fix, context)));
+ ciset.CommandInfos.Add (fix.Title, new Action (() => RefactoringService.ApplyFix (fix, context)));
+ }
}
}
-
if (ciset.CommandInfos.Count > 0) {
ainfo.Add (ciset, null);
added = true;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs
index 621ced902e..013f184cb4 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs
@@ -38,14 +38,24 @@ namespace MonoDevelop.SourceEditor.OptionPanels
public partial class HighlightingPanel : Gtk.Bin, IOptionsPanel
{
string schemeName;
+ ListStore styleStore = new ListStore (typeof (string), typeof (Mono.TextEditor.Highlighting.ColorScheme), typeof(bool));
+ Lazy<Gdk.Pixbuf> errorPixbuf = new Lazy<Gdk.Pixbuf> (() => ImageService.GetIcon (Stock.DialogError, IconSize.Menu).ToPixbuf ());
-
- ListStore styleStore = new ListStore (typeof (string), typeof (Mono.TextEditor.Highlighting.ColorScheme));
-
public HighlightingPanel ()
{
this.Build ();
- styleTreeview.AppendColumn ("", new CellRendererText (), "markup", 0);
+ var col = new TreeViewColumn ();
+ var crpixbuf = new CellRendererPixbuf ();
+ col.PackStart (crpixbuf, false);
+ col.SetCellDataFunc (crpixbuf, (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter) => {
+ var isError = (bool)styleStore.GetValue (iter, 2);
+ crpixbuf.Visible = isError;
+ crpixbuf.Pixbuf = isError ? errorPixbuf.Value : null;
+ });
+ var crtext = new CellRendererText ();
+ col.PackEnd (crtext, true);
+ col.SetAttributes (crtext, "markup", 0);
+ styleTreeview.AppendColumn (col);
styleTreeview.Model = styleStore;
// ensure that custom styles are loaded.
new SourceEditorDisplayBinding ();
@@ -101,7 +111,11 @@ namespace MonoDevelop.SourceEditor.OptionPanels
var sheme = (Mono.TextEditor.Highlighting.ColorScheme)styleStore.GetValue (iter, 1);
if (sheme == null)
return;
-
+ var isError = (bool)styleStore.GetValue (iter, 2);
+ if (isError) {
+ this.removeButton.Sensitive = true;
+ return;
+ }
DefaultSourceEditorOptions.Instance.ColorScheme = sheme.Name;
this.buttonExport.Sensitive = true;
string fileName = sheme.FileName;
@@ -118,19 +132,24 @@ namespace MonoDevelop.SourceEditor.OptionPanels
using (var editor = new ColorShemeEditor (this)) {
var colorScheme = (Mono.TextEditor.Highlighting.ColorScheme)this.styleStore.GetValue (selectedIter, 1);
editor.SetSheme (colorScheme);
- MessageService.ShowCustomDialog (editor, dialog);
+ MessageService. ShowCustomDialog (editor, dialog);
}
}
}
- Mono.TextEditor.Highlighting.ColorScheme LoadStyle (string styleName, bool showException = true)
+ Mono.TextEditor.Highlighting.ColorScheme LoadStyle (string styleName, out bool error)
{
try {
+ error = false;
return Mono.TextEditor.Highlighting.SyntaxModeService.GetColorStyle (styleName);
} catch (Exception e) {
- if (showException)
- MessageService.ShowError ("Error while importing color style " + styleName, (e.InnerException ?? e).Message);
- return Mono.TextEditor.Highlighting.SyntaxModeService.DefaultColorStyle;
+ LoggingService.LogError ("Error while loading color style " + styleName, e);
+ error = true;
+ var style = Mono.TextEditor.Highlighting.SyntaxModeService.DefaultColorStyle.Clone ();
+ style.Name = styleName;
+ style.Description = GettextCatalog.GetString ("Loading error:" + e.Message);
+ style.FileName = Mono.TextEditor.Highlighting.SyntaxModeService.GetFileName (styleName);
+ return style;
}
}
@@ -138,11 +157,12 @@ namespace MonoDevelop.SourceEditor.OptionPanels
internal void ShowStyles ()
{
styleStore.Clear ();
- TreeIter selectedIter = styleStore.AppendValues (GetMarkup (GettextCatalog.GetString ("Default"), GettextCatalog.GetString ("The default color scheme.")), LoadStyle ("Default"));
+ bool error;
+ TreeIter selectedIter = styleStore.AppendValues (GetMarkup (GettextCatalog.GetString ("Default"), GettextCatalog.GetString ("The default color scheme.")), LoadStyle ("Default", out error));
foreach (string styleName in Mono.TextEditor.Highlighting.SyntaxModeService.Styles) {
if (styleName == "Default")
continue;
- var style = LoadStyle (styleName);
+ var style = LoadStyle (styleName, out error);
string name = style.Name ?? "";
string description = style.Description ?? "";
// translate only build-in sheme names
@@ -154,7 +174,7 @@ namespace MonoDevelop.SourceEditor.OptionPanels
} catch {
}
}
- TreeIter iter = styleStore.AppendValues (GetMarkup (name, description), style);
+ TreeIter iter = styleStore.AppendValues (GetMarkup (name, description), style, error);
if (style.Name == DefaultSourceEditorOptions.Instance.ColorScheme)
selectedIter = iter;
}
@@ -179,7 +199,7 @@ namespace MonoDevelop.SourceEditor.OptionPanels
void HandleButtonExportClicked (object sender, EventArgs e)
{
- var dialog = new SelectFileDialog (GettextCatalog.GetString ("Highlighting Scheme"), Gtk.FileChooserAction.Save) {
+ var dialog = new SelectFileDialog (GettextCatalog.GetString ("Highlighting Scheme"), MonoDevelop.Components.FileChooserAction.Save) {
TransientFor = this.Toplevel as Gtk.Window,
};
dialog.AddFilter (GettextCatalog.GetString ("Color schemes"), "*.json");
@@ -198,7 +218,7 @@ namespace MonoDevelop.SourceEditor.OptionPanels
void AddColorScheme (object sender, EventArgs args)
{
- var dialog = new SelectFileDialog (GettextCatalog.GetString ("Highlighting Scheme"), Gtk.FileChooserAction.Open) {
+ var dialog = new SelectFileDialog (GettextCatalog.GetString ("Highlighting Scheme"), MonoDevelop.Components.FileChooserAction.Open) {
TransientFor = this.Toplevel as Gtk.Window,
};
dialog.AddFilter (GettextCatalog.GetString ("Color schemes"), "*.json");
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj
index 6030f79e7e..9c6b608723 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.csproj
@@ -44,7 +44,7 @@
</Execution>
<DebugSymbols>true</DebugSymbols>
<NoWarn>1591;1573</NoWarn>
- <DocumentationFile>..\..\..\build\AddIns\DisplayBindings\SourceEditor\MonoDevelop.SourceEditor.xml</DocumentationFile>
+ <DocumentationFile>..\..\..\build\AddIns\DisplayBindings\SourceEditor\MonoDevelop.SourceEditor2.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
diff --git a/main/src/addins/MonoDeveloperExtensions/NUnit/NUnit.csproj b/main/src/addins/MonoDeveloperExtensions/NUnit/NUnit.csproj
index 0303e2ded5..2074526569 100644
--- a/main/src/addins/MonoDeveloperExtensions/NUnit/NUnit.csproj
+++ b/main/src/addins/MonoDeveloperExtensions/NUnit/NUnit.csproj
@@ -9,6 +9,7 @@
<OutputType>Library</OutputType>
<RootNamespace>NUnit</RootNamespace>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <AssemblyName>MonoDeveloperExtensions_nunit</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
@@ -21,7 +22,6 @@
<Execution>
<Execution clr-version="Net_2_0" />
</Execution>
- <AssemblyName>MonoDeveloperExtensions_nunit</AssemblyName>
<DefineConstants>DEBUG</DefineConstants>
<NoWarn>1591;1573</NoWarn>
<DocumentationFile>..\..\..\..\build\AddIns\MonoDeveloperExtensions\MonoDeveloperExtensions_nunit.xml</DocumentationFile>
@@ -36,10 +36,9 @@
<Execution>
<Execution clr-version="Net_2_0" />
</Execution>
- <AssemblyName>NUnit</AssemblyName>
<DebugSymbols>true</DebugSymbols>
<NoWarn>1591;1573</NoWarn>
- <DocumentationFile>..\..\..\..\build\AddIns\MonoDeveloperExtensions\NUnit.xml</DocumentationFile>
+ <DocumentationFile>..\..\..\..\build\AddIns\MonoDeveloperExtensions\MonoDeveloperExtensions_nunit.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\MonoDeveloperExtensions.csproj">
diff --git a/main/src/addins/NUnit/Commands/NUnitCommands.cs b/main/src/addins/NUnit/Commands/NUnitCommands.cs
index f0d9322df4..0a581fdb81 100644
--- a/main/src/addins/NUnit/Commands/NUnitCommands.cs
+++ b/main/src/addins/NUnit/Commands/NUnitCommands.cs
@@ -41,7 +41,8 @@ namespace MonoDevelop.NUnit.Commands
ShowTestCode,
SelectTestInTree,
ShowTestDetails,
- GoToFailure
+ GoToFailure,
+ RerunTest,
}
public enum TestChartCommands
diff --git a/main/src/addins/NUnit/Gui/TestResultsPad.cs b/main/src/addins/NUnit/Gui/TestResultsPad.cs
index 7758886781..5110f4de4d 100644
--- a/main/src/addins/NUnit/Gui/TestResultsPad.cs
+++ b/main/src/addins/NUnit/Gui/TestResultsPad.cs
@@ -213,7 +213,7 @@ namespace MonoDevelop.NUnit
buttonRun = new Button ();
buttonRun.Label = GettextCatalog.GetString ("Rerun Tests");
- buttonRun.Image = new Gtk.Image (Gtk.Stock.Execute, IconSize.Menu);
+ buttonRun.Image = new ImageView (ImageService.GetIcon ("nunit-run", IconSize.Menu));
buttonRun.Image.Show ();
buttonRun.Sensitive = false;
toolbar.Add (buttonRun);
@@ -250,6 +250,8 @@ namespace MonoDevelop.NUnit
progressBar.HeightRequest = infoLabel.SizeRequest ().Height;
runPanel.ShowAll ();
+ progressBar.Hide ();
+ infoSep.Hide ();
resultSummary = new UnitTestResult ();
UpdateCounters ();
}
@@ -289,7 +291,9 @@ namespace MonoDevelop.NUnit
progressBar.Text = "";
testsRun = 0;
resultSummary = new UnitTestResult ();
- resultLabel.Markup = GetResultsMarkup ();
+ resultLabel.Markup = "";
+ resultLabel.Hide ();
+ labels.Show ();
UpdateCounters ();
}
@@ -512,7 +516,7 @@ namespace MonoDevelop.NUnit
Gtk.TreeIter iter;
if (!failuresTreeView.Selection.GetSelected (out foo, out iter))
return;
-
+
int type = (int)failuresStore.GetValue (iter, 5);
var clipboard = Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));
@@ -535,9 +539,23 @@ namespace MonoDevelop.NUnit
{
UnitTest test = GetSelectedTest ();
if (test != null) {
- var result = test.GetLastResult ();
- if (result != null) {
- info.Enabled = !string.IsNullOrEmpty (result.StackTrace);
+ var last = test.GetLastResult ();
+
+ Gtk.TreeModel foo;
+ Gtk.TreeIter iter;
+ if (!failuresTreeView.Selection.GetSelected (out foo, out iter)) {
+ info.Enabled = false;
+ return;
+ }
+
+ int type = (int)failuresStore.GetValue (iter, 5);
+ switch (type) {
+ case ErrorMessage:
+ info.Enabled = !string.IsNullOrEmpty (last.Message);
+ return;
+ case StackTrace:
+ default:
+ info.Enabled = !string.IsNullOrEmpty (last.StackTrace);
return;
}
}
@@ -586,9 +604,19 @@ namespace MonoDevelop.NUnit
if (loc != null)
IdeApp.Workbench.OpenDocument (loc.FileName, loc.Line, loc.Column);
}
+
+ [CommandHandler (TestCommands.RerunTest)]
+ protected void OnRerunTest ()
+ {
+ UnitTest test = GetSelectedTest ();
+ if (test == null)
+ return;
+ NUnitService.Instance.RunTest (test, null);
+ }
[CommandUpdateHandler (TestCommands.ShowTestCode)]
[CommandUpdateHandler (TestCommands.GoToFailure)]
+ [CommandUpdateHandler (TestCommands.RerunTest)]
protected void OnUpdateRunTest (CommandInfo info)
{
UnitTest test = GetSelectedTest ();
diff --git a/main/src/addins/NUnit/MonoDevelop.NUnit.csproj b/main/src/addins/NUnit/MonoDevelop.NUnit.csproj
index 65cda081fd..40f784226e 100644
--- a/main/src/addins/NUnit/MonoDevelop.NUnit.csproj
+++ b/main/src/addins/NUnit/MonoDevelop.NUnit.csproj
@@ -30,7 +30,7 @@
<Optimize>True</Optimize>
<OutputPath>..\..\..\build\AddIns\NUnit\</OutputPath>
<ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
+ <WarningLevel>3</WarningLevel>
<Execution>
<Execution clr-version="Net_2_0" />
</Execution>
diff --git a/main/src/addins/NUnit/MonoDevelopNUnit.addin.xml b/main/src/addins/NUnit/MonoDevelopNUnit.addin.xml
index 96f4fb6295..25aef50656 100644
--- a/main/src/addins/NUnit/MonoDevelopNUnit.addin.xml
+++ b/main/src/addins/NUnit/MonoDevelopNUnit.addin.xml
@@ -91,6 +91,7 @@
<Command id = "MonoDevelop.NUnit.Commands.TestCommands.GoToFailure" _label = "Go to failure" />
<Command id = "MonoDevelop.NUnit.Commands.TestCommands.SelectTestInTree" _label = "Select test in tree" />
<Command id = "MonoDevelop.NUnit.Commands.TestCommands.ShowTestDetails" _label = "Show results pad" />
+ <Command id = "MonoDevelop.NUnit.Commands.TestCommands.RerunTest" _label = "Rerun test" />
<Command id = "MonoDevelop.NUnit.Commands.TestChartCommands.UseTimeScale" _label = "Proportional time scale" type="check"/>
<Command id = "MonoDevelop.NUnit.Commands.TestChartCommands.SingleDayResult" _label = "Show one result per day" type="check"/>
<Command id = "MonoDevelop.NUnit.Commands.TestChartCommands.ShowResults" _label = "Results chart" type="radio"/>
@@ -136,6 +137,7 @@
<CommandItem id = "MonoDevelop.NUnit.Commands.TestCommands.GoToFailure" />
<CommandItem id = "MonoDevelop.NUnit.Commands.TestCommands.ShowTestCode" />
<CommandItem id = "MonoDevelop.NUnit.Commands.TestCommands.SelectTestInTree" />
+ <CommandItem id = "MonoDevelop.NUnit.Commands.TestCommands.RerunTest" />
<SeparatorItem id = "s1" />
<CommandItem id = "MonoDevelop.Ide.Commands.EditCommands.Copy" />
</Extension>
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/GenerateIndentedClassCodeTests.cs b/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/GenerateIndentedClassCodeTests.cs
new file mode 100644
index 0000000000..0810e2e783
--- /dev/null
+++ b/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/GenerateIndentedClassCodeTests.cs
@@ -0,0 +1,108 @@
+//
+// GenerateIndentedClassCodeTests.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2015 Xamarin Inc. (http://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.CodeDom;
+using System.CodeDom.Compiler;
+using NUnit.Framework;
+using System.IO;
+
+namespace Mono.TextTemplating.Tests
+{
+ [TestFixture]
+ public class GenerateIndentedClassCodeTests
+ {
+ [Test]
+ public void FieldAndPropertyGenerated ()
+ {
+ var provider = CodeDomProvider.CreateProvider ("C#");
+ var field = CreateBoolField ();
+ var property = CreateBoolProperty ();
+
+ string output = TemplatingEngine.GenerateIndentedClassCode (provider, field, property);
+ output = FixOutput (output);
+ string expectedOutput = FixOutput (MethodAndFieldGeneratedOutput);
+
+ Assert.AreEqual (expectedOutput, output);
+ }
+
+ static CodeTypeMember CreateVoidMethod ()
+ {
+ var meth = new CodeMemberMethod { Name = "MyMethod" };
+ meth.ReturnType = new CodeTypeReference (typeof(void));
+ return meth;
+ }
+
+ static CodeTypeMember CreateBoolField ()
+ {
+ var type = new CodeTypeReference (typeof(bool));
+ return new CodeMemberField { Name = "myField", Type = type };
+ }
+
+ static CodeTypeMember CreateBoolProperty ()
+ {
+ var type = new CodeTypeReference (typeof(bool));
+ var prop = new CodeMemberProperty { Name = "MyProperty", Type = type };
+ prop.GetStatements.Add (
+ new CodeMethodReturnStatement (
+ new CodePrimitiveExpression (true)
+ )
+ );
+ return prop;
+ }
+
+ /// <summary>
+ /// Remove empty lines which are not generated on Mono.
+ /// </summary>
+ static string FixOutput (string output, string newLine = "\n")
+ {
+ using (var writer = new StringWriter ()) {
+ using (var reader = new StringReader (output)) {
+
+ string line;
+ while ((line = reader.ReadLine ()) != null) {
+ if (!String.IsNullOrWhiteSpace (line)) {
+ writer.Write (line);
+ writer.Write (newLine);
+ }
+ }
+ }
+ return writer.ToString ();
+ }
+ }
+
+ public static string MethodAndFieldGeneratedOutput =
+@"
+ private bool myField;
+
+ private bool MyProperty {
+ get {
+ return true;
+ }
+ }
+";
+ }
+}
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/Mono.TextTemplating.Tests.csproj b/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/Mono.TextTemplating.Tests.csproj
index 3b67d5045d..fec16c1aac 100644
--- a/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/Mono.TextTemplating.Tests.csproj
+++ b/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/Mono.TextTemplating.Tests.csproj
@@ -41,6 +41,7 @@
<Compile Include="GenerationTests.cs" />
<Compile Include="TemplatingEngineHelper.cs" />
<Compile Include="TemplateEnginePreprocessTemplateTests.cs" />
+ <Compile Include="GenerateIndentedClassCodeTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Mono.TextTemplating\Mono.TextTemplating.csproj">
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs
index 8a312101d2..9425f6dae8 100644
--- a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs
+++ b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplatingEngine.cs
@@ -1091,7 +1091,7 @@ namespace Mono.TextTemplating
}
var cgType = typeof (CodeGenerator);
- var cgInit = cgType.GetMethod ("InitOutput", BindingFlags.NonPublic | BindingFlags.Instance);
+ var initializeCodeGenerator = GetInitializeCodeGeneratorAction (cgType);
var cgFieldGen = cgType.GetMethod ("GenerateField", BindingFlags.NonPublic | BindingFlags.Instance);
var cgPropGen = cgType.GetMethod ("GenerateProperty", BindingFlags.NonPublic | BindingFlags.Instance);
@@ -1103,19 +1103,42 @@ namespace Mono.TextTemplating
foreach (CodeTypeMember member in members) {
var f = member as CodeMemberField;
if (f != null) {
- cgInit.Invoke (generator, new object[] { sw, options });
+ initializeCodeGenerator (generator, sw, options);
cgFieldGen.Invoke (generator, new object[] { f });
continue;
}
var p = member as CodeMemberProperty;
if (p != null) {
- cgInit.Invoke (generator, new object[] { sw, options });
+ initializeCodeGenerator (generator, sw, options);
cgPropGen.Invoke (generator, new object[] { p, dummy });
continue;
}
}
}
+ static Action<CodeGenerator, StringWriter, CodeGeneratorOptions> GetInitializeCodeGeneratorAction (Type cgType)
+ {
+ var cgInit = cgType.GetMethod ("InitOutput", BindingFlags.NonPublic | BindingFlags.Instance);
+ if (cgInit != null) {
+ return new Action<CodeGenerator, StringWriter, CodeGeneratorOptions> ((generator, sw, options) => {
+ cgInit.Invoke (generator, new object[] { sw, options });
+ });
+ }
+
+ var cgOptions = cgType.GetField ("options", BindingFlags.NonPublic | BindingFlags.Instance);
+ var cgOutput = cgType.GetField ("output", BindingFlags.NonPublic | BindingFlags.Instance);
+
+ if (cgOptions != null && cgOutput != null) {
+ return new Action<CodeGenerator, StringWriter, CodeGeneratorOptions> ((generator, sw, options) => {
+ var output = new IndentedTextWriter (sw);
+ cgOptions.SetValue (generator, options);
+ cgOutput.SetValue (generator, output);
+ });
+ }
+
+ throw new InvalidOperationException ("Unable to initialize CodeGenerator.");
+ }
+
public static string GenerateIndentedClassCode (CodeDomProvider provider, params CodeTypeMember[] members)
{
return GenerateIndentedClassCode (provider, (IEnumerable<CodeTypeMember>)members);
diff --git a/main/src/addins/TextTemplating/TextTransform/TextTransform.csproj b/main/src/addins/TextTemplating/TextTransform/TextTransform.csproj
index 69822959b6..5cc987754f 100644
--- a/main/src/addins/TextTemplating/TextTransform/TextTransform.csproj
+++ b/main/src/addins/TextTemplating/TextTransform/TextTransform.csproj
@@ -32,6 +32,7 @@
<DebugSymbols>true</DebugSymbols>
<NoWarn>1591;1573</NoWarn>
<DocumentationFile>..\..\..\..\build\AddIns\MonoDevelop.TextTemplating\TextTransform.xml</DocumentationFile>
+ <Commandlineparameters>-o:out.txt in.tt</Commandlineparameters>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
diff --git a/main/src/addins/VBNetBinding/VBNetBinding.csproj b/main/src/addins/VBNetBinding/VBNetBinding.csproj
index d730d2a3f5..8fb1dca2f8 100644
--- a/main/src/addins/VBNetBinding/VBNetBinding.csproj
+++ b/main/src/addins/VBNetBinding/VBNetBinding.csproj
@@ -30,7 +30,7 @@
<Optimize>True</Optimize>
<OutputPath>..\..\..\build\AddIns\BackendBindings\</OutputPath>
<ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
+ <WarningLevel>3</WarningLevel>
<Execution>
<Execution clr-version="Net_2_0" />
</Execution>
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs
index a3d92cdaf7..e1767c556a 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs
@@ -392,6 +392,11 @@ index 0000000..009b64b
return new GitRepository (VersionControlService.GetVersionControlSystems ().First (id => id.Name == "Git"), path, url);
}
+ protected override Repository GetRepo ()
+ {
+ return new GitRepository ();
+ }
+
// This test is for a memory usage improvement on status.
[Test]
public void TestSameGitRevision ()
@@ -497,5 +502,34 @@ index 0000000..009b64b
foreach (var rev in revisions)
Assert.AreEqual (GettextCatalog.GetString ("working copy"), rev);
}
+
+ [Test]
+ public void TestGitRebaseCommitOrdering ()
+ {
+ var gitRepo = (GitRepository)Repo;
+
+ AddFile ("init", "init", toVcs: true, commit: true);
+
+ // Create a branch from initial commit.
+ gitRepo.CreateBranch ("test", null, null);
+
+ // Create two commits in master.
+ AddFile ("init2", "init", toVcs: true, commit: true);
+ AddFile ("init3", "init", toVcs: true, commit: true);
+
+ // Create two commits in test.
+ gitRepo.SwitchToBranch (new NullProgressMonitor (), "test");
+ AddFile ("init4", "init", toVcs: true, commit: true);
+ AddFile ("init5", "init", toVcs: true, commit: true);
+
+ gitRepo.Rebase ("master", GitUpdateOptions.None, new NullProgressMonitor ());
+
+ // Commits come in reverse (recent to old).
+ var history = gitRepo.GetHistory (LocalPath, null).Reverse ().ToArray ();
+ Assert.AreEqual (5, history.Length);
+ for (int i = 0; i < 5; ++i) {
+ Assert.AreEqual (string.Format ("Commit #{0}\n", i), history [i].Message);
+ }
+ }
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseRepositoryTests.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseRepositoryTests.cs
index bf8a61fa1c..46b64db071 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseRepositoryTests.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseRepositoryTests.cs
@@ -654,8 +654,11 @@ namespace MonoDevelop.VersionControl.Tests
protected void Checkout (string path, string url)
{
- Repository _repo = GetRepo (path, url);
- _repo.Checkout (path, true, new NullProgressMonitor ());
+ var mockRepo = (UrlBasedRepository)GetRepo ();
+ mockRepo.Url = url;
+ mockRepo.Checkout (path, true, new NullProgressMonitor ());
+
+ var _repo = GetRepo (path, url);
if (Repo == null)
Repo = _repo;
else
@@ -714,6 +717,7 @@ namespace MonoDevelop.VersionControl.Tests
AddedItems.Add (added);
}
+ protected abstract Repository GetRepo ();
protected abstract Repository GetRepo (string path, string url);
protected static void DeleteDirectory (string path)
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/GitIntegrityTests.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/GitIntegrityTests.cs
index 491a8ff3df..99288e1474 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/GitIntegrityTests.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/GitIntegrityTests.cs
@@ -24,7 +24,7 @@
// 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;
using System.Linq;
using NUnit.Framework;
using System.IO;
@@ -54,7 +54,6 @@ namespace MonoDevelop.VersionControl.Git.Tests
}
[Test]
- [Ignore ("This fails with NGit, probably because the diff algorithm is different")]
public void TestBlameRevisionsWithMultipleCommits ()
{
Commit[] blameCommits = GetBlameForFixedFile ("c5f4319ee3e077436e3950c8a764959d50bf57c0");
@@ -84,7 +83,6 @@ namespace MonoDevelop.VersionControl.Git.Tests
}
[Test]
- [Ignore ("This fails with NGit, probably because the diff algorithm is different")]
public void TestBlameRevisionsWithTwoCommits ()
{
string commit1 = "b6e41ee2dd00e8744abc4835567e06667891b2cf";
@@ -134,12 +132,10 @@ namespace MonoDevelop.VersionControl.Git.Tests
[Test]
public void TestBlameLineCountWithNoCommits ()
{
- Commit[] blameCommits = GetBlameForFixedFile ("39fe1158de8da8b82822e299958d35c51d493298");
- Assert.That (blameCommits, Is.Null);
+ Assert.Throws<NotFoundException> (() => GetBlameForFixedFile ("39fe1158de8da8b82822e299958d35c51d493298"));
}
[Test]
- [Ignore]
public void TestBlameForProjectDom ()
{
Commit[] blameCommits = GetBlameForFile ("6469602e3c0ba6953fd3ef0ae01d77abe1d9ab70", "main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Dom.Parser/ProjectDom.cs");
@@ -277,13 +273,20 @@ namespace MonoDevelop.VersionControl.Git.Tests
if (blame == null)
{
- var result = repo.Blame (filePath);
- if (result == null)
+ var result = repo.Blame (filePath, new BlameOptions {
+ StartingAt = revision,
+ });
+ if (!result.Any ())
return null;
- blame = new Commit [result.Count ()];
- for (int i = 0; i < result.Count (); i ++)
- blame [i] = result[i].FinalCommit;
+ var count = result.Sum (hunk => hunk.LineCount);
+ blame = new Commit [count];
+ int x = 0;
+ foreach (var res in result) {
+ for (int i = 0; i < res.LineCount; ++i)
+ blame [x++] = res.FinalCommit;
+ }
+
blames.Add(key, blame);
}
@@ -316,4 +319,4 @@ namespace MonoDevelop.VersionControl.Git.Tests
}
}
}
-*/
+
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/MonoDevelop.VersionControl.Git.Tests.csproj b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/MonoDevelop.VersionControl.Git.Tests.csproj
index 8d3035bf6f..1fc7c56620 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/MonoDevelop.VersionControl.Git.Tests.csproj
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/MonoDevelop.VersionControl.Git.Tests.csproj
@@ -80,6 +80,7 @@
<NoWarn>1591;1573</NoWarn>
<DebugType>pdbonly</DebugType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ <ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseMac|AnyCPU' ">
<Optimize>true</Optimize>
@@ -89,6 +90,7 @@
<NoWarn>1591;1573</NoWarn>
<DebugType>pdbonly</DebugType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ <ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseGnome|AnyCPU' ">
<Optimize>true</Optimize>
@@ -98,6 +100,7 @@
<NoWarn>1591;1573</NoWarn>
<DebugType>pdbonly</DebugType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ <ConsolePause>false</ConsolePause>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj
index 12e0013822..7b5fee7c62 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj
@@ -80,10 +80,11 @@
<OutputPath>..\..\..\..\build\AddIns\VersionControl</OutputPath>
<WarningLevel>4</WarningLevel>
<DebugSymbols>true</DebugSymbols>
- <NoWarn>1591;1573</NoWarn>
+ <NoWarn>1591</NoWarn>
<DocumentationFile>..\..\..\..\build\AddIns\VersionControl\MonoDevelop.VersionControl.Git.xml</DocumentationFile>
<DebugType>pdbonly</DebugType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ <ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseMac|AnyCPU' ">
<Optimize>true</Optimize>
@@ -94,6 +95,7 @@
<DocumentationFile>..\..\..\..\build\AddIns\VersionControl\MonoDevelop.VersionControl.Git.xml</DocumentationFile>
<DebugType>pdbonly</DebugType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ <ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseGnome|AnyCPU' ">
<Optimize>true</Optimize>
@@ -104,6 +106,7 @@
<DocumentationFile>..\..\..\..\build\AddIns\VersionControl\MonoDevelop.VersionControl.Git.xml</DocumentationFile>
<DebugType>pdbonly</DebugType>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+ <ConsolePause>false</ConsolePause>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditRemoteDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditRemoteDialog.cs
index 06d6659086..5e05821a6e 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditRemoteDialog.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditRemoteDialog.cs
@@ -36,6 +36,7 @@ namespace MonoDevelop.VersionControl.Git
{
}
+ bool sameUrls;
public EditRemoteDialog (Remote remote)
{
this.Build ();
@@ -47,10 +48,20 @@ namespace MonoDevelop.VersionControl.Git
entryUrl.Text = remote.Url ?? "";
entryPushUrl.Text = remote.PushUrl ?? "";
}
+
+ sameUrls = entryPushUrl.Text == entryUrl.Text;
+ SetPushUrlTextStyle (sameUrls);
+
checkImportTags.Visible = remote == null;
UpdateButtons ();
}
+ void SetPushUrlTextStyle (bool disabled)
+ {
+ entryPushUrl.ModifyText (Gtk.StateType.Normal, entryUrl.Style.Text (disabled ? Gtk.StateType.Insensitive : Gtk.StateType.Normal));
+ entryPushUrl.ModifyText (Gtk.StateType.Active, entryUrl.Style.Text (disabled ? Gtk.StateType.Insensitive : Gtk.StateType.Active));
+ }
+
public string RemoteName {
get { return entryName.Text; }
}
@@ -79,11 +90,21 @@ namespace MonoDevelop.VersionControl.Git
protected virtual void OnEntryUrlChanged (object sender, System.EventArgs e)
{
+ // If we had the same text or we're now having matching text, then change styling.
+ if (sameUrls || entryPushUrl.Text == entryUrl.Text) {
+ entryPushUrl.Text = entryUrl.Text;
+ sameUrls = true;
+ SetPushUrlTextStyle (sameUrls);
+ }
+
UpdateButtons ();
}
protected void OnEntryPushUrlChanged (object sender, System.EventArgs e)
{
+ sameUrls = entryPushUrl.Text == entryUrl.Text;
+ SetPushUrlTextStyle (sameUrls);
+
UpdateButtons ();
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs
index eb5035ecf0..e058292500 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs
@@ -55,6 +55,12 @@ namespace MonoDevelop.VersionControl.Git
return false;
}
+ public override string FormatDialogTitle (ChangeSet changeSet, string title)
+ {
+ var gitRepo = changeSet.Repository as GitRepository;
+ return gitRepo != null ? string.Format ("{0} ({1})", title, gitRepo.GetCurrentBranch ()) : title;
+ }
+
public override bool OnBeginCommit (ChangeSet changeSet)
{
// In this callback we check if the user information configured in Git
@@ -178,10 +184,12 @@ namespace MonoDevelop.VersionControl.Git
var text = textView.Buffer.Text;
var lines = text.Split ('\n');
if (lines.Length > 0 && lines [0].Length > maxLengthConventionForFirstLineOfCommitMessage) {
- textView.TooltipText = String.Format (GettextCatalog.GetString (
- "When using Git, it is not recommended to surpass the character count of {0} in the first line of the commit message"),
- maxLengthConventionForFirstLineOfCommitMessage);
- textView.HasTooltip = true;
+ if (!textView.HasTooltip) {
+ textView.TooltipText = String.Format (GettextCatalog.GetString (
+ "When using Git, it is not recommended to surpass the character count of {0} in the first line of the commit message"),
+ maxLengthConventionForFirstLineOfCommitMessage);
+ textView.HasTooltip = true;
+ }
textView.Buffer.GetBounds (out start, out unused);
start.ForwardChars (maxLengthConventionForFirstLineOfCommitMessage);
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCredentials.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCredentials.cs
index 0c23113c5d..f6aaa17013 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCredentials.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCredentials.cs
@@ -34,23 +34,42 @@ using MonoDevelop.Components;
namespace MonoDevelop.VersionControl.Git
{
+ public enum GitCredentialsType
+ {
+ Normal,
+ Tfs,
+ }
+
+ public class GitCredentialsState
+ {
+ public string UrlUsed { get; set; }
+ public bool AgentUsed { get; set; }
+ public int KeyUsed { get; set; }
+ public bool NativePasswordUsed { get; set; }
+ public Dictionary<string, int> KeyForUrl = new Dictionary<string, int> ();
+ public Dictionary<string, bool> AgentForUrl = new Dictionary<string, bool> ();
+
+ public GitCredentialsState ()
+ {
+ KeyUsed = -1;
+ }
+ }
+
static class GitCredentials
{
// Gather keys on initialize.
static readonly List<string> Keys = new List<string> ();
- static readonly Dictionary<string, int> KeyForUrl = new Dictionary<string, int> ();
- static readonly Dictionary<string, bool> AgentForUrl = new Dictionary<string, bool> ();
- static string urlUsed;
- static bool agentUsed;
- static int keyUsed = -1;
- static bool nativePasswordUsed;
+ static Dictionary<GitCredentialsType, GitCredentialsState> credState = new Dictionary<GitCredentialsType, GitCredentialsState> ();
static GitCredentials ()
{
string keyStorage = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.Personal), ".ssh");
- if (!Directory.Exists (keyStorage))
- return;
+ if (!Directory.Exists (keyStorage)) {
+ keyStorage = Path.Combine (Environment.ExpandEnvironmentVariables ("%HOME%"), ".ssh");
+ if (!Directory.Exists (keyStorage))
+ return;
+ }
foreach (var privateKey in Directory.EnumerateFiles (keyStorage)) {
string publicKey = privateKey + ".pub";
@@ -59,12 +78,15 @@ namespace MonoDevelop.VersionControl.Git
}
}
- public static Credentials TryGet (string url, string userFromUrl, SupportedCredentialTypes types)
+ public static Credentials TryGet (string url, string userFromUrl, SupportedCredentialTypes types, GitCredentialsType type)
{
bool result = true;
Uri uri = null;
- urlUsed = url;
+ GitCredentialsState state;
+ if (!credState.TryGetValue (type, out state))
+ credState [type] = state = new GitCredentialsState ();
+ state.UrlUsed = url;
// We always need to run the TryGet* methods as we need the passphraseItem/passwordItem populated even
// if the password store contains an invalid password/no password
@@ -72,8 +94,8 @@ namespace MonoDevelop.VersionControl.Git
uri = new Uri (url);
string username;
string password;
- if (!nativePasswordUsed && TryGetUsernamePassword (uri, out username, out password)) {
- nativePasswordUsed = true;
+ if (!state.NativePasswordUsed && TryGetUsernamePassword (uri, out username, out password)) {
+ state.NativePasswordUsed = true;
return new UsernamePasswordCredentials {
Username = username,
Password = password
@@ -86,13 +108,13 @@ namespace MonoDevelop.VersionControl.Git
cred = new UsernamePasswordCredentials ();
else {
// Try ssh-agent on Linux.
- if (!Platform.IsWindows && !agentUsed) {
+ if (!Platform.IsWindows && !state.AgentUsed) {
bool agentUsable;
- if (!AgentForUrl.TryGetValue (url, out agentUsable))
- AgentForUrl [url] = agentUsable = true;
+ if (!state.AgentForUrl.TryGetValue (url, out agentUsable))
+ state.AgentForUrl [url] = agentUsable = true;
if (agentUsable) {
- agentUsed = true;
+ state.AgentUsed = true;
return new SshAgentCredentials {
Username = userFromUrl,
};
@@ -100,9 +122,9 @@ namespace MonoDevelop.VersionControl.Git
}
int key;
- if (!KeyForUrl.TryGetValue (url, out key)) {
- if (keyUsed + 1 < Keys.Count)
- keyUsed++;
+ if (!state.KeyForUrl.TryGetValue (url, out key)) {
+ if (state.KeyUsed + 1 < Keys.Count)
+ state.KeyUsed++;
else {
SelectFileDialog dlg = null;
bool success = false;
@@ -135,13 +157,13 @@ namespace MonoDevelop.VersionControl.Git
throw new VersionControlException (GettextCatalog.GetString ("Invalid credentials were supplied. Aborting operation."));
}
} else
- keyUsed = key;
+ state.KeyUsed = key;
cred = new SshUserKeyCredentials {
Username = userFromUrl,
Passphrase = "",
- PrivateKey = Keys [keyUsed],
- PublicKey = Keys [keyUsed] + ".pub",
+ PrivateKey = Keys [state.KeyUsed],
+ PublicKey = Keys [state.KeyUsed] + ".pub",
};
return cred;
}
@@ -194,31 +216,40 @@ namespace MonoDevelop.VersionControl.Git
return false;
}
- internal static void StoreCredentials ()
+ internal static void StoreCredentials (GitCredentialsType type)
{
- nativePasswordUsed = false;
+ GitCredentialsState state;
+ if (!credState.TryGetValue (type, out state))
+ return;
+
+ var url = state.UrlUsed;
+ var key = state.KeyUsed;
- if (!string.IsNullOrEmpty (urlUsed))
- if (keyUsed != -1)
- KeyForUrl [urlUsed] = keyUsed;
+ state.NativePasswordUsed = false;
- Cleanup ();
+ if (!string.IsNullOrEmpty (url) && key != -1)
+ state.KeyForUrl [url] = key;
+
+ Cleanup (state);
}
- internal static void InvalidateCredentials ()
+ internal static void InvalidateCredentials (GitCredentialsType type)
{
- if (!string.IsNullOrEmpty (urlUsed))
- if (AgentForUrl.ContainsKey (urlUsed))
- AgentForUrl [urlUsed] &= !agentUsed;
+ GitCredentialsState state;
+ if (!credState.TryGetValue (type, out state))
+ return;
+
+ if (!string.IsNullOrEmpty (state.UrlUsed) && state.AgentForUrl.ContainsKey (state.UrlUsed))
+ state.AgentForUrl [state.UrlUsed] &= !state.AgentUsed;
- Cleanup ();
+ Cleanup (state);
}
- static void Cleanup ()
+ static void Cleanup (GitCredentialsState state)
{
- urlUsed = null;
- agentUsed = false;
- keyUsed = -1;
+ state.UrlUsed = null;
+ state.AgentUsed = false;
+ state.KeyUsed = -1;
}
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs
index 4385ab1ec2..a91ff501a2 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs
@@ -62,14 +62,14 @@ namespace MonoDevelop.VersionControl.Git
public GitRepository (VersionControlSystem vcs, FilePath path, string url) : base (vcs)
{
RootPath = path;
- string discovered = LibGit2Sharp.Repository.Discover (path);
- if (!string.IsNullOrEmpty (discovered))
- RootRepository = new LibGit2Sharp.Repository (discovered);
+ RootRepository = new LibGit2Sharp.Repository (path);
Url = url;
}
public override void Dispose ()
{
+ base.Dispose ();
+
if (VersionControlSystem != null)
((GitVersionControl)VersionControlSystem).UnregisterRepo (this);
@@ -77,7 +77,6 @@ namespace MonoDevelop.VersionControl.Git
RootRepository.Dispose ();
foreach (var rep in cachedSubmodules)
rep.Item2.Dispose ();
- base.Dispose ();
}
public override string[] SupportedProtocols {
@@ -163,33 +162,49 @@ namespace MonoDevelop.VersionControl.Git
return true;
}
+ const int progressThrottle = 200;
+ static System.Diagnostics.Stopwatch throttleWatch = new System.Diagnostics.Stopwatch ();
static bool OnTransferProgress (TransferProgress tp, IProgressMonitor monitor, ref int progress)
{
- if (progress == 0 && tp.ReceivedObjects == 0)
+ if (progress == 0 && tp.ReceivedObjects == 0) {
monitor.BeginTask ("Receiving and indexing objects", 2 * tp.TotalObjects);
+ throttleWatch.Restart ();
+ }
int currentProgress = tp.ReceivedObjects + tp.IndexedObjects;
int steps = currentProgress - progress;
- monitor.Step (steps);
+ if (throttleWatch.ElapsedMilliseconds > progressThrottle) {
+ monitor.Step (steps);
+ throttleWatch.Restart ();
+ }
progress = currentProgress;
- if (tp.IndexedObjects >= tp.TotalObjects)
+ if (tp.IndexedObjects >= tp.TotalObjects) {
monitor.EndTask ();
+ throttleWatch.Stop ();
+ }
return !monitor.IsCancelRequested;
}
static void OnCheckoutProgress (int completedSteps, int totalSteps, IProgressMonitor monitor, ref int progress)
{
- if (progress == 0 && completedSteps == 0)
+ if (progress == 0 && completedSteps == 0) {
monitor.BeginTask ("Checking out files", totalSteps);
+ throttleWatch.Restart ();
+ }
int steps = completedSteps - progress;
- monitor.Step (steps);
+ if (throttleWatch.ElapsedMilliseconds > progressThrottle) {
+ monitor.Step (steps);
+ throttleWatch.Restart ();
+ }
progress = completedSteps;
- if (completedSteps >= totalSteps)
+ if (completedSteps >= totalSteps) {
monitor.EndTask ();
+ throttleWatch.Stop ();
+ }
}
void NotifyFilesChangedForStash (Stash stash)
@@ -215,7 +230,7 @@ namespace MonoDevelop.VersionControl.Git
OnCheckoutProgress = (path, completedSteps, totalSteps) => OnCheckoutProgress (completedSteps, totalSteps, monitor, ref progress),
OnCheckoutNotify = RefreshFile,
CheckoutNotifyFlags = refreshFlags,
- }
+ },
});
NotifyFilesChangedForStash (RootRepository.Stashes [stashIndex]);
@@ -237,7 +252,7 @@ namespace MonoDevelop.VersionControl.Git
OnCheckoutProgress = (path, completedSteps, totalSteps) => OnCheckoutProgress (completedSteps, totalSteps, monitor, ref progress),
OnCheckoutNotify = RefreshFile,
CheckoutNotifyFlags = refreshFlags,
- }
+ },
});
NotifyFilesChangedForStash (stash);
if (monitor != null)
@@ -559,18 +574,16 @@ namespace MonoDevelop.VersionControl.Git
RootRepository.Branches.Update (RootRepository.Branches ["master"], branch => branch.TrackedBranch = "refs/remotes/origin/master");
- RetryUntilSuccess (monitor, delegate {
- RootRepository.Network.Push (RootRepository.Head, new PushOptions {
- OnPushStatusError = delegate (PushStatusError e) {
- RootRepository.Dispose ();
- RootRepository = null;
- if (RootPath.Combine (".git").IsDirectory)
- Directory.Delete (RootPath.Combine (".git"), true);
- throw new VersionControlException (e.Message);
- },
- CredentialsProvider = GitCredentials.TryGet
- });
- });
+ RetryUntilSuccess (monitor, credType => RootRepository.Network.Push (RootRepository.Head, new PushOptions {
+ OnPushStatusError = delegate (PushStatusError e) {
+ RootRepository.Dispose ();
+ RootRepository = null;
+ if (RootPath.Combine (".git").IsDirectory)
+ Directory.Delete (RootPath.Combine (".git"), true);
+ throw new VersionControlException (e.Message);
+ },
+ CredentialsProvider = (url, userFromUrl, types) => GitCredentials.TryGet (url, userFromUrl, types, credType)
+ }));
return this;
}
@@ -595,35 +608,36 @@ namespace MonoDevelop.VersionControl.Git
monitor.EndTask ();
}
- static void RetryUntilSuccess (IProgressMonitor monitor, Action func)
+ static void RetryUntilSuccess (IProgressMonitor monitor, Action<GitCredentialsType> func)
{
bool retry;
using (var tfsSession = new TfsSmartSession ()) {
do {
+ var credType = tfsSession.Disposed ? GitCredentialsType.Normal : GitCredentialsType.Tfs;
try {
- func ();
- GitCredentials.StoreCredentials ();
+ func (credType);
+ GitCredentials.StoreCredentials (credType);
retry = false;
} catch (AuthenticationException) {
- GitCredentials.InvalidateCredentials ();
+ GitCredentials.InvalidateCredentials (credType);
retry = true;
} catch (VersionControlException e) {
- GitCredentials.InvalidateCredentials ();
+ GitCredentials.InvalidateCredentials (credType);
if (monitor != null)
monitor.ReportError (e.Message, null);
retry = false;
} catch (UserCancelledException) {
- GitCredentials.StoreCredentials ();
+ GitCredentials.StoreCredentials (credType);
retry = false;
} catch (LibGit2SharpException e) {
+ GitCredentials.InvalidateCredentials (credType);
+
if (!tfsSession.Disposed) {
retry = true;
tfsSession.Dispose ();
continue;
}
- GitCredentials.InvalidateCredentials ();
-
string message;
// TODO: Remove me once https://github.com/libgit2/libgit2/pull/3137 goes in.
if (string.Equals (e.Message, "early EOF", StringComparison.OrdinalIgnoreCase))
@@ -645,12 +659,10 @@ namespace MonoDevelop.VersionControl.Git
{
monitor.Log.WriteLine (GettextCatalog.GetString ("Fetching from '{0}'", remote));
int progress = 0;
- RetryUntilSuccess (monitor, delegate {
- RootRepository.Fetch (remote, new FetchOptions {
- CredentialsProvider = GitCredentials.TryGet,
- OnTransferProgress = (tp) => OnTransferProgress (tp, monitor, ref progress),
- });
- });
+ RetryUntilSuccess (monitor, credType => RootRepository.Fetch (remote, new FetchOptions {
+ CredentialsProvider = (url, userFromUrl, types) => GitCredentials.TryGet (url, userFromUrl, types, credType),
+ OnTransferProgress = tp => OnTransferProgress (tp, monitor, ref progress),
+ }));
monitor.Step (1);
}
@@ -690,26 +702,27 @@ namespace MonoDevelop.VersionControl.Git
return true;
}
- void ConflictResolver(IProgressMonitor monitor, Commit resetToIfFail, string message)
+ bool ConflictResolver(IProgressMonitor monitor, Commit resetToIfFail, string message)
{
- bool commit = true;
foreach (var conflictFile in RootRepository.Index.Conflicts) {
ConflictResult res = ResolveConflict (RootRepository.FromGitPath (conflictFile.Ancestor.Path));
if (res == ConflictResult.Abort) {
RootRepository.Reset (ResetMode.Hard, resetToIfFail);
- commit = false;
- break;
+ return false;
}
if (res == ConflictResult.Skip) {
Revert (RootRepository.FromGitPath (conflictFile.Ancestor.Path), false, monitor);
break;
}
}
- if (commit)
- RootRepository.Commit (message);
+ if (!string.IsNullOrEmpty (message)) {
+ var sig = GetSignature ();
+ RootRepository.Commit (message, sig, sig);
+ }
+ return true;
}
- void CommonPostMergeRebase(int stashIndex, GitUpdateOptions options, IProgressMonitor monitor)
+ void CommonPostMergeRebase(int stashIndex, GitUpdateOptions options, IProgressMonitor monitor, Commit oldHead)
{
if ((options & GitUpdateOptions.SaveLocalChanges) == GitUpdateOptions.SaveLocalChanges) {
monitor.Step (1);
@@ -717,7 +730,13 @@ namespace MonoDevelop.VersionControl.Git
// Restore local changes
if (stashIndex != -1) {
monitor.Log.WriteLine (GettextCatalog.GetString ("Restoring local changes"));
- PopStash (monitor, stashIndex);
+ ApplyStash (monitor, stashIndex);
+ // FIXME: No StashApplyStatus.Conflicts here.
+ if (RootRepository.Index.Conflicts.Any () && !ConflictResolver (monitor, oldHead, string.Empty))
+ PopStash (monitor, stashIndex);
+ else
+ RootRepository.Stashes.Remove (stashIndex);
+
monitor.Step (1);
}
}
@@ -727,6 +746,8 @@ namespace MonoDevelop.VersionControl.Git
public void Rebase (string branch, GitUpdateOptions options, IProgressMonitor monitor)
{
int stashIndex = -1;
+ var oldHead = RootRepository.Head.Tip;
+
try {
monitor.BeginTask (GettextCatalog.GetString ("Rebasing"), 5);
if (!CommonPreMergeRebase (options, monitor, out stashIndex))
@@ -735,14 +756,14 @@ namespace MonoDevelop.VersionControl.Git
// Do a rebase.
var divergence = RootRepository.ObjectDatabase.CalculateHistoryDivergence (RootRepository.Head.Tip, RootRepository.Branches [branch].Tip);
var toApply = RootRepository.Commits.QueryBy (new CommitFilter {
- Since = RootRepository.Head.Tip,
- Until = divergence.CommonAncestor,
- SortBy = CommitSortStrategies.Topological
- });
+ IncludeReachableFrom = RootRepository.Head.Tip,
+ ExcludeReachableFrom = divergence.CommonAncestor,
+ SortBy = CommitSortStrategies.Topological | CommitSortStrategies.Reverse
+ }).ToArray ();
RootRepository.Reset (ResetMode.Hard, divergence.Another);
- int count = toApply.Count ();
+ int count = toApply.Length;
int i = 1;
foreach (var com in toApply) {
monitor.Log.WriteLine ("Cherry-picking {0} - {1}/{2}", com.Id, i, count);
@@ -755,13 +776,14 @@ namespace MonoDevelop.VersionControl.Git
++i;
}
} finally {
- CommonPostMergeRebase (stashIndex, options, monitor);
+ CommonPostMergeRebase (stashIndex, options, monitor, oldHead);
}
}
public void Merge (string branch, GitUpdateOptions options, IProgressMonitor monitor)
{
int stashIndex = -1;
+ var oldHead = RootRepository.Head.Tip;
Signature sig = GetSignature ();
if (sig == null)
@@ -780,7 +802,7 @@ namespace MonoDevelop.VersionControl.Git
if (mergeResult.Status == MergeStatus.Conflicts)
ConflictResolver (monitor, RootRepository.Head.Tip, RootRepository.Info.Message);
} finally {
- CommonPostMergeRebase (stashIndex, GitUpdateOptions.SaveLocalChanges, monitor);
+ CommonPostMergeRebase (stashIndex, GitUpdateOptions.SaveLocalChanges, monitor, oldHead);
}
}
@@ -832,7 +854,7 @@ namespace MonoDevelop.VersionControl.Git
(string)changeSet.ExtendedProperties ["Git.AuthorEmail"],
DateTimeOffset.Now), sig);
else
- repo.RootRepository.Commit (message, sig);
+ repo.RootRepository.Commit (message, sig, sig);
}
public bool IsUserInfoDefault ()
@@ -885,9 +907,9 @@ namespace MonoDevelop.VersionControl.Git
{
int transferProgress = 0;
int checkoutProgress = 0;
- RetryUntilSuccess (monitor, delegate {
+ RetryUntilSuccess (monitor, credType => {
RootPath = LibGit2Sharp.Repository.Clone (Url, targetLocalPath, new CloneOptions {
- CredentialsProvider = GitCredentials.TryGet,
+ CredentialsProvider = (url, userFromUrl, types) => GitCredentials.TryGet (url, userFromUrl, types, credType),
OnTransferProgress = (tp) => OnTransferProgress (tp, monitor, ref transferProgress),
OnCheckoutProgress = (path, completedSteps, totalSteps) => OnCheckoutProgress (completedSteps, totalSteps, monitor, ref checkoutProgress),
@@ -1103,10 +1125,10 @@ namespace MonoDevelop.VersionControl.Git
RootRepository.Branches.Update (branch, b => b.TrackedBranch = "refs/remotes/" + remote + "/" + remoteBranch);
}
- RetryUntilSuccess (monitor, () =>
+ RetryUntilSuccess (monitor, credType =>
RootRepository.Network.Push (RootRepository.Network.Remotes [remote], "refs/heads/" + remoteBranch, new PushOptions {
OnPushStatusError = pushStatusErrors => success = false,
- CredentialsProvider = GitCredentials.TryGet
+ CredentialsProvider = (url, userFromUrl, types) => GitCredentials.TryGet (url, userFromUrl, types, credType)
})
);
@@ -1225,11 +1247,9 @@ namespace MonoDevelop.VersionControl.Git
public void PushTag (string name)
{
- RetryUntilSuccess (null, delegate {
- RootRepository.Network.Push (RootRepository.Network.Remotes [GetCurrentRemote ()], "refs/tags/" + name + ":refs/tags/" + name, new PushOptions {
- CredentialsProvider = GitCredentials.TryGet,
- });
- });
+ RetryUntilSuccess (null, credType => RootRepository.Network.Push (RootRepository.Network.Remotes [GetCurrentRemote ()], "refs/tags/" + name + ":refs/tags/" + name, new PushOptions {
+ CredentialsProvider = (url, userFromUrl, types) => GitCredentials.TryGet (url, userFromUrl, types, credType),
+ }));
}
public IEnumerable<string> GetRemoteBranches (string remoteName)
@@ -1388,6 +1408,9 @@ namespace MonoDevelop.VersionControl.Git
protected override void OnMoveFile (FilePath localSrcPath, FilePath localDestPath, bool force, IProgressMonitor monitor)
{
+ var srcRepo = GetRepository (localSrcPath);
+ var dstRepo = GetRepository (localDestPath);
+
VersionInfo vi = GetVersionInfo (localSrcPath, VersionInfoQueryFlags.IgnoreCache);
if (vi == null || !vi.IsVersioned) {
base.OnMoveFile (localSrcPath, localDestPath, force, monitor);
@@ -1396,10 +1419,16 @@ namespace MonoDevelop.VersionControl.Git
vi = GetVersionInfo (localDestPath, VersionInfoQueryFlags.IgnoreCache);
if (vi != null && ((vi.Status & (VersionStatus.ScheduledDelete | VersionStatus.ScheduledReplace)) != VersionStatus.Unversioned))
- RootRepository.Unstage (localDestPath);
+ dstRepo.Unstage (localDestPath);
- RootRepository.Move (localSrcPath, localDestPath);
- ClearCachedVersionInfo (localSrcPath, localDestPath);
+ if (srcRepo == dstRepo) {
+ srcRepo.Move (localSrcPath, localDestPath);
+ ClearCachedVersionInfo (localSrcPath, localDestPath);
+ } else {
+ File.Copy (localSrcPath, localDestPath);
+ srcRepo.Remove (localSrcPath, true);
+ dstRepo.Stage (localDestPath);
+ }
}
protected override void OnMoveDirectory (FilePath localSrcPath, FilePath localDestPath, bool force, IProgressMonitor monitor)
@@ -1433,7 +1462,7 @@ namespace MonoDevelop.VersionControl.Git
repositoryPath = repository.ToGitPath (repositoryPath);
var status = repository.RetrieveStatus (repositoryPath);
if (status != FileStatus.NewInIndex && status != FileStatus.NewInWorkdir) {
- foreach (var hunk in repository.Blame (repositoryPath, new BlameOptions { Strategy = BlameStrategy.FollowExactRenames })) {
+ foreach (var hunk in repository.Blame (repositoryPath, new BlameOptions { FindExactRenames = true, })) {
var commit = hunk.FinalCommit;
var author = hunk.FinalSignature;
working = new Annotation (commit.Sha, author.Name, author.When.LocalDateTime, String.Format ("<{0}>", author.Email));
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs
index 57b2afc7f3..44776dafe0 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs
@@ -71,12 +71,5 @@ namespace MonoDevelop.VersionControl.Git
repo.Network.Remotes.Add ("origin", url);
return repo;
}
-
- internal static bool IsGitRepository (this FilePath path)
- {
- // Maybe check if it has a HEAD file? But this check should be enough.
- var newPath = path.Combine (".git");
- return Directory.Exists (newPath) && Directory.Exists (newPath.Combine ("objects")) && Directory.Exists (newPath.Combine ("refs"));
- }
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitVersionControl.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitVersionControl.cs
index 89d279df66..96bc74e8fc 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitVersionControl.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitVersionControl.cs
@@ -63,11 +63,7 @@ namespace MonoDevelop.VersionControl.Git
protected override FilePath OnGetRepositoryPath (FilePath path, string id)
{
- if (path.IsEmpty || path.ParentDirectory.IsEmpty || path.IsNull || path.ParentDirectory.IsNull)
- return null;
- if (path.IsGitRepository ())
- return path;
- return OnGetRepositoryPath (path.ParentDirectory, id);
+ return LibGit2Sharp.Repository.Discover (path.ResolveLinks ());
}
internal void UnregisterRepo (GitRepository repo)
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/TfsSmartSubtransport.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/TfsSmartSubtransport.cs
index 5d90c377b4..a9b1485780 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/TfsSmartSubtransport.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/TfsSmartSubtransport.cs
@@ -79,12 +79,19 @@ namespace MonoDevelop.VersionControl.Git
}
// Grab the credentials from the user.
- var cred = (UsernamePasswordCredentials)GitCredentials.TryGet (url, "", SupportedCredentialTypes.UsernamePassword);
-
- var httpClient = new HttpClient (new HttpClientHandler { Credentials = new System.Net.NetworkCredential (cred.Username, cred.Password) }) {
+ var httpClient = new HttpClient {
Timeout = TimeSpan.FromMinutes (1.0),
};
+ var res = httpClient.GetAsync (serviceUri).Result;
+ if (res.StatusCode == System.Net.HttpStatusCode.Unauthorized) {
+ var cred = (UsernamePasswordCredentials)GitCredentials.TryGet (url, "", SupportedCredentialTypes.UsernamePassword, GitCredentialsType.Tfs);
+
+ httpClient = new HttpClient (new HttpClientHandler { Credentials = new System.Net.NetworkCredential (cred.Username, cred.Password) }) {
+ Timeout = TimeSpan.FromMinutes (1.0),
+ };
+ }
+
return new TfsSmartSubtransportStream(this) {
HttpClient = httpClient,
ServiceUri = new Uri (serviceUri),
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Tests/RepositoryTests.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Tests/RepositoryTests.cs
index ddbc5124ab..d46fe7313a 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Tests/RepositoryTests.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Tests/RepositoryTests.cs
@@ -137,6 +137,11 @@ namespace VersionControl.Subversion.Unix.Tests
{
return new SubversionRepository (new SvnClient (), url, path);
}
+
+ protected override Repository GetRepo ()
+ {
+ return new SubversionRepository (new SvnClient (), string.Empty, FilePath.Empty);
+ }
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix.csproj b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix.csproj
index b787abf01d..39a4ab53a3 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix.csproj
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix.csproj
@@ -57,6 +57,8 @@
<DebugSymbols>true</DebugSymbols>
<DocumentationFile>..\..\..\..\build\AddIns\VersionControl\MonoDevelop.VersionControl.Subversion.Unix.xml</DocumentationFile>
<DebugType>pdbonly</DebugType>
+ <ConsolePause>false</ConsolePause>
+ <NoWarn>1591;1573</NoWarn>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.csproj b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.csproj
index 5ffb4039fe..191e7cc630 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.csproj
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.csproj
@@ -29,9 +29,9 @@
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>True</Optimize>
- <OutputPath>..\..\..\..\build\AddIns\VersionControl\</OutputPath>
+ <OutputPath>..\..\..\..\build\AddIns\VersionControl</OutputPath>
<ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
+ <WarningLevel>3</WarningLevel>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<Execution>
<Execution clr-version="Net_2_0" />
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 13e705e53a..54dae06291 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
@@ -124,7 +124,7 @@ namespace MonoDevelop.VersionControl.Subversion
var toLock = new List<FilePath>();
foreach (var path in paths) {
- if (!File.Exists (path) || !Svn.HasNeedLock (path) || (File.GetAttributes (path) & FileAttributes.ReadOnly) == 0)
+ if (!File.Exists (path) || !GetVersionInfo (path).IsVersioned || !Svn.HasNeedLock (path) || (File.GetAttributes (path) & FileAttributes.ReadOnly) == 0)
continue;
toLock.Add (path);
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs
index 76b7e4337b..437ef02106 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs
@@ -39,14 +39,16 @@ using Mono.Addins;
using MonoDevelop.Ide;
using MonoDevelop.Projects;
using MonoDevelop.Components;
+using System.Collections.Generic;
+using System.Linq;
namespace MonoDevelop.VersionControl.Dialogs
{
partial class CommitDialog : Gtk.Dialog
{
ListStore store;
- ArrayList selected = new ArrayList ();
- ArrayList extensions = new ArrayList ();
+ List<FilePath> selected = new List<FilePath> ();
+ List<CommitDialogExtension> extensions = new List<CommitDialogExtension> ();
ChangeSet changeSet;
string oldMessage;
bool responseSensitive;
@@ -90,6 +92,10 @@ namespace MonoDevelop.VersionControl.Dialogs
continue;
}
if (ext.Initialize (changeSet)) {
+ var newTitle = ext.FormatDialogTitle (changeSet, Title);
+ if (newTitle != null)
+ Title = newTitle;
+
ext.CommitMessageTextViewHook (textview);
if (separatorRequired) {
HSeparator sep = new HSeparator ();
@@ -216,7 +222,7 @@ namespace MonoDevelop.VersionControl.Dialogs
}
// Update the change set
- ArrayList todel = new ArrayList ();
+ List<FilePath> todel = new List<FilePath> ();
foreach (ChangeSetItem it in changeSet.Items) {
if (!selected.Contains (it.LocalPath))
todel.Add (it.LocalPath);
@@ -229,7 +235,7 @@ namespace MonoDevelop.VersionControl.Dialogs
int n;
for (n=0; n<extensions.Count; n++) {
- CommitDialogExtension ext = (CommitDialogExtension) extensions [n];
+ CommitDialogExtension ext = extensions [n];
bool res;
try {
res = ext.OnBeginCommit (changeSet);
@@ -240,7 +246,7 @@ namespace MonoDevelop.VersionControl.Dialogs
if (!res) {
// Commit failed. Rollback the previous extensions
for (int m=0; m<n; m++) {
- ext = (CommitDialogExtension) extensions [m];
+ ext = extensions [m];
try {
ext.OnEndCommit (changeSet, false);
} catch {}
@@ -285,7 +291,7 @@ namespace MonoDevelop.VersionControl.Dialogs
public string[] GetFilesToCommit ()
{
- return (string[]) selected.ToArray (typeof(string));
+ return selected.ToPathStrings ().ToArray ();
}
public string Message {
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitMessageStylePanelWidget.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitMessageStylePanelWidget.cs
index ec28d6d478..79a73b6d11 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitMessageStylePanelWidget.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitMessageStylePanelWidget.cs
@@ -44,8 +44,7 @@ namespace MonoDevelop.VersionControl
public CommitMessageStylePanelWidget()
{
this.Build();
-
- textview.ModifyFont (FontService.MonospaceFont.CopyModified (0.8d));
+
textview.AcceptsTab = true;
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/EditRepositoryDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/EditRepositoryDialog.cs
index 32a43eddf8..091af96b7b 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/EditRepositoryDialog.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/EditRepositoryDialog.cs
@@ -1,12 +1,13 @@
using System;
using System.Collections;
+using System.Collections.Generic;
namespace MonoDevelop.VersionControl.Dialogs
{
internal partial class EditRepositoryDialog : Gtk.Dialog
{
Repository repo;
- ArrayList systems = new ArrayList ();
+ List<VersionControlSystem> systems = new List<VersionControlSystem> ();
IRepositoryEditor editor;
public EditRepositoryDialog (Repository editedRepository)
@@ -58,7 +59,7 @@ namespace MonoDevelop.VersionControl.Dialogs
string oldname = repo != null ? repo.Name : "";
- VersionControlSystem vcs = (VersionControlSystem) systems [versionControlType.Active];
+ VersionControlSystem vcs = systems [versionControlType.Active];
repo = vcs.CreateRepositoryInstance ();
repo.Name = oldname;
repo.NameChanged += OnNameChanged;
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/SelectRepositoryDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/SelectRepositoryDialog.cs
index 972fad24cf..a514938b0e 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/SelectRepositoryDialog.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/SelectRepositoryDialog.cs
@@ -6,6 +6,7 @@ using MonoDevelop.Core;
using Gtk;
using MonoDevelop.Ide;
using MonoDevelop.Components;
+using System.Collections.Generic;
namespace MonoDevelop.VersionControl.Dialogs
{
@@ -18,10 +19,10 @@ namespace MonoDevelop.VersionControl.Dialogs
internal partial class SelectRepositoryDialog : Gtk.Dialog
{
Repository repo;
- ArrayList systems = new ArrayList ();
+ List<VersionControlSystem> systems = new List<VersionControlSystem> ();
Gtk.TreeStore store;
SelectRepositoryMode mode;
- ArrayList loadingRepos = new ArrayList ();
+ List<Repository> loadingRepos = new List<Repository> ();
IRepositoryEditor currentEditor;
string defaultPath;
@@ -116,7 +117,7 @@ namespace MonoDevelop.VersionControl.Dialogs
if (repCombo.Active == -1)
return;
- VersionControlSystem vcs = (VersionControlSystem) systems [repCombo.Active];
+ VersionControlSystem vcs = systems [repCombo.Active];
repo = vcs.CreateRepositoryInstance ();
currentEditor = vcs.CreateRepositoryEditor (repo);
repoContainer.Add (currentEditor.Widget);
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/BlameWidget.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/BlameWidget.cs
index 51c3dbfa41..ef94cc2166 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/BlameWidget.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/BlameWidget.cs
@@ -399,7 +399,7 @@ namespace MonoDevelop.VersionControl.Views
}
internal double highlightPositon;
- internal Annotation highlightAnnotation;
+ internal Annotation highlightAnnotation, menuAnnotation;
protected override bool OnMotionNotifyEvent (EventMotion evnt)
{
TooltipText = null;
@@ -438,6 +438,9 @@ namespace MonoDevelop.VersionControl.Views
protected override bool OnButtonPressEvent (EventButton evnt)
{
if (evnt.TriggersContextMenu ()) {
+ int startLine = widget.Editor.YToLine (widget.Editor.VAdjustment.Value + evnt.Y);
+ menuAnnotation = startLine > 0 && startLine <= annotations.Count ? annotations[startLine - 1] : null;
+
CommandEntrySet opset = new CommandEntrySet ();
opset.AddItem (BlameCommands.ShowDiff);
opset.AddItem (BlameCommands.ShowLog);
@@ -460,24 +463,24 @@ namespace MonoDevelop.VersionControl.Views
[CommandHandler (BlameCommands.CopyRevision)]
protected void OnCopyRevision ()
{
- if (highlightAnnotation == null)
+ if (menuAnnotation == null)
return;
var clipboard = Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));
- clipboard.Text = highlightAnnotation.Revision.ToString ();
+ clipboard.Text = menuAnnotation.Revision.ToString ();
clipboard = Clipboard.Get (Gdk.Atom.Intern ("PRIMARY", false));
- clipboard.Text = highlightAnnotation.Revision.ToString ();
+ clipboard.Text = menuAnnotation.Revision.ToString ();
}
[CommandHandler (BlameCommands.ShowDiff)]
protected void OnShowDiff ()
{
- if (highlightAnnotation == null)
+ if (menuAnnotation == null)
return;
foreach (var view in widget.info.Document.ParentDocument.Views) {
DiffView diffView = view.GetContent<DiffView> ();
if (diffView != null) {
view.Select ();
- var rev = widget.info.History.FirstOrDefault (h => h.ToString () == highlightAnnotation.Revision);
+ var rev = widget.info.History.FirstOrDefault (h => h.ToString () == menuAnnotation.Revision);
if (rev == null)
return;
diffView.ComparisonWidget.SetRevision (diffView.ComparisonWidget.DiffEditor, rev.GetPrevious ());
@@ -490,13 +493,13 @@ namespace MonoDevelop.VersionControl.Views
[CommandHandler (BlameCommands.ShowLog)]
protected void OnShowLog ()
{
- if (highlightAnnotation == null)
+ if (menuAnnotation == null)
return;
foreach (var view in widget.info.Document.ParentDocument.Views) {
LogView logView = view.GetContent<LogView> ();
if (logView != null) {
view.Select ();
- var rev = widget.info.History.FirstOrDefault (h => h.ToString () == highlightAnnotation.Revision);
+ var rev = widget.info.History.FirstOrDefault (h => h.ToString () == menuAnnotation.Revision);
if (rev == null)
return;
logView.LogWidget.SelectedRevision = rev;
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 166eadcd2b..32905950ad 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
@@ -469,7 +469,7 @@ namespace MonoDevelop.VersionControl.Views
// Grab today's day and the start of tomorrow's day to make Today/Yesterday calculations.
var now = DateTime.Now;
- var age = new DateTime (now.Year, now.Month, now.Day + 1) - rev.Time;
+ var age = new DateTime (now.Year, now.Month, now.Day).AddDays(1) - rev.Time;
if (age.Days >= 0 && age.Days < 1) { // Check whether it's a commit that's less than a day away. Also discard future commits.
day = GettextCatalog.GetString ("Today");
} else if (age.Days < 2) { // Check whether it's a commit from yesterday.
@@ -477,7 +477,7 @@ namespace MonoDevelop.VersionControl.Views
} else {
day = rev.Time.ToShortDateString ();
}
- renderer.Text = string.Format ("{0} {1:HH:MM}", day, rev.Time);
+ renderer.Text = string.Format ("{0} {1:HH:mm}", day, rev.Time);
}
static void GraphFunc (Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/VersionControlDocumentInfo.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/VersionControlDocumentInfo.cs
index 62faf89ddb..a002693010 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/VersionControlDocumentInfo.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/VersionControlDocumentInfo.cs
@@ -58,8 +58,8 @@ namespace MonoDevelop.VersionControl.Views
}
public Repository Repository {
- get;
- set;
+ get { return Item.Repository; }
+ set { Item.Repository = value; }
}
public bool Started {
@@ -70,7 +70,7 @@ namespace MonoDevelop.VersionControl.Views
{
this.Document = document;
this.Item = item;
- this.Repository = repository;
+ item.Repository = repository;
}
public void Start (bool rerun = false)
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs
index 70766591ea..7a164f686a 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs
@@ -33,13 +33,14 @@ namespace MonoDevelop.VersionControl
protected override void Run ()
{
IProgressMonitor monitor = Monitor;
-
+
foreach (VersionControlItemList list in items.SplitByRepository ())
list[0].Repository.Add (list.Paths, true, monitor);
Gtk.Application.Invoke (delegate {
VersionControlService.NotifyFileStatusChanged (items);
});
+ monitor.ReportSuccess (GettextCatalog.GetString ("Add operation completed."));
}
}
@@ -133,6 +134,7 @@ namespace MonoDevelop.VersionControl
Gtk.Application.Invoke (delegate {
VersionControlService.NotifyFileStatusChanged (items);
});
+ Monitor.ReportSuccess (GettextCatalog.GetString ("Remove operation completed."));
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/ChangeLogWriter.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/ChangeLogWriter.cs
index 40317e6674..c49cea3faa 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/ChangeLogWriter.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/ChangeLogWriter.cs
@@ -89,6 +89,7 @@ namespace MonoDevelop.VersionControl
formatter.MaxColumns = MessageFormat.MaxColumns;
formatter.TabWidth = MessageFormat.TabWidth;
formatter.TabsAsSpaces = MessageFormat.TabsAsSpaces;
+ formatter.KeepLines = true;
if (message_style.Header.Length > 0) {
string [,] tags = new string[,] { {"AuthorName", uinfo.Name}, {"AuthorEmail", uinfo.Email} };
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs
index a8ffdc9e4a..64dd18ff92 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs
@@ -37,21 +37,20 @@ namespace MonoDevelop.VersionControl
{
VersionControlItemList list = new VersionControlItemList ();
- WorkspaceItem wob;
- SolutionItem sol;
+ IWorkspaceObject wob;
Repository repo = null;
wob = IdeApp.ProjectOperations.CurrentSelectedWorkspaceItem;
if (wob != null)
repo = VersionControlService.GetRepository (wob);
if (repo == null) {
- sol = IdeApp.ProjectOperations.CurrentSelectedSolutionItem;
- if (sol != null)
- repo = VersionControlService.GetRepository (sol);
+ wob = IdeApp.ProjectOperations.CurrentSelectedSolutionItem;
+ if (wob != null)
+ repo = VersionControlService.GetRepository (wob);
}
if (repo == null || repo.VersionControlSystem == null || !repo.VersionControlSystem.IsInstalled)
return list;
- list.Add (new VersionControlItem (repo, wob, wob.FileName, true, null));
+ list.Add (new VersionControlItem (repo, wob, wob.BaseDirectory, true, null));
return list;
}
@@ -107,7 +106,7 @@ namespace MonoDevelop.VersionControl
return new VersionControlItem (repo, project, doc.FileName, false, null);
}
- protected override void Run ()
+ protected sealed override void Run ()
{
VersionControlItemList items = GetItems ();
RunCommand (items, false);
@@ -244,30 +243,28 @@ namespace MonoDevelop.VersionControl
}
}
- class CurrentFileDiffHandler : FileVersionControlCommandHandler
+ class CurrentFileViewHandler<T> : FileVersionControlCommandHandler where T:IAttachableViewContent
{
- protected override void Run ()
+ protected override bool RunCommand (VersionControlItemList items, bool test)
{
+ if (test)
+ return true;
+
var window = IdeApp.Workbench.ActiveDocument.Window;
- window.SwitchView (window.FindView<IDiffView> ());
+ window.SwitchView (window.FindView<T> ());
+ return true;
}
}
+
+ class CurrentFileDiffHandler : CurrentFileViewHandler<IDiffView>
+ {
+ }
- class CurrentFileBlameHandler : FileVersionControlCommandHandler
+ class CurrentFileBlameHandler : CurrentFileViewHandler<IBlameView>
{
- protected override void Run ()
- {
- var window = IdeApp.Workbench.ActiveDocument.Window;
- window.SwitchView (window.FindView<IBlameView> ());
- }
}
- class CurrentFileLogHandler : FileVersionControlCommandHandler
+ class CurrentFileLogHandler : CurrentFileViewHandler<ILogView>
{
- protected override void Run ()
- {
- var window = IdeApp.Workbench.ActiveDocument.Window;
- window.SwitchView (window.FindView<ILogView> ());
- }
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitDialogExtension.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitDialogExtension.cs
index 6c51bed69f..eb2d119063 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitDialogExtension.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitDialogExtension.cs
@@ -24,6 +24,11 @@ namespace MonoDevelop.VersionControl
return true;
}
+ public virtual string FormatDialogTitle (ChangeSet changeSet, string title)
+ {
+ return null;
+ }
+
public virtual void CommitMessageTextViewHook (Gtk.TextView textView)
{
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/IgnoreCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/IgnoreCommand.cs
index b36d523c30..b39bfb8af4 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/IgnoreCommand.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/IgnoreCommand.cs
@@ -81,7 +81,6 @@ namespace MonoDevelop.VersionControl
foreach (VersionControlItemList list in items.SplitByRepository ())
list[0].Repository.Ignore (list.Paths);
- Monitor.ReportSuccess (GettextCatalog.GetString ("Ignore operation completed."));
Gtk.Application.Invoke (delegate {
foreach (VersionControlItem item in items)
if (!item.IsDirectory)
@@ -89,6 +88,7 @@ namespace MonoDevelop.VersionControl
VersionControlService.NotifyFileStatusChanged (items);
});
+ Monitor.ReportSuccess (GettextCatalog.GetString ("Ignore operation completed."));
}
}
}
@@ -144,7 +144,6 @@ namespace MonoDevelop.VersionControl
foreach (VersionControlItemList list in items.SplitByRepository ())
list[0].Repository.Unignore (list.Paths);
- Monitor.ReportSuccess (GettextCatalog.GetString ("Unignore operation completed."));
Gtk.Application.Invoke (delegate {
foreach (VersionControlItem item in items)
if (!item.IsDirectory)
@@ -152,6 +151,7 @@ namespace MonoDevelop.VersionControl
VersionControlService.NotifyFileStatusChanged (items);
});
+ Monitor.ReportSuccess (GettextCatalog.GetString ("Unignore operation completed."));
}
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/LockCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/LockCommand.cs
index 66507132e4..2e318afdd6 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/LockCommand.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/LockCommand.cs
@@ -60,11 +60,11 @@ namespace MonoDevelop.VersionControl
foreach (VersionControlItemList list in items.SplitByRepository ())
list[0].Repository.Lock (Monitor, list.Paths);
- Monitor.ReportSuccess (GettextCatalog.GetString ("Lock operation completed."));
Gtk.Application.Invoke (delegate {
VersionControlService.NotifyFileStatusChanged (items);
});
+ Monitor.ReportSuccess (GettextCatalog.GetString ("Lock operation completed."));
}
}
}
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 1650087e48..7f0f78f8d1 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/PublishCommand.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/PublishCommand.cs
@@ -57,7 +57,7 @@ namespace MonoDevelop.VersionControl
{
// 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).Where (file => file.IsChildPathOf (entry.BaseDirectory)));
+ files.AddRange (((IWorkspaceFileObject)entry).GetItemFiles (true).Where (file => file.CanonicalPath.IsChildPathOf (entry.BaseDirectory)));
}
public static bool CanPublish (Repository vc, string path, bool isDir) {
@@ -101,11 +101,10 @@ namespace MonoDevelop.VersionControl
return;
}
- Monitor.ReportSuccess (GettextCatalog.GetString ("Publish operation completed."));
-
Gtk.Application.Invoke (delegate {
VersionControlService.NotifyFileStatusChanged (new FileUpdateEventArgs (vc, path, true));
});
+ Monitor.ReportSuccess (GettextCatalog.GetString ("Publish operation completed."));
}
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs
index 0d80dc03d1..205c00e128 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Repository.cs
@@ -94,9 +94,19 @@ namespace MonoDevelop.VersionControl
if (--references == 0)
Dispose ();
}
-
+
+ internal bool Disposed { get; private set; }
public virtual void Dispose ()
{
+ Disposed = true;
+ if (!queryRunning)
+ return;
+
+ lock (queryLock) {
+ fileQueryQueue.Clear ();
+ directoryQueryQueue.Clear ();
+ recursiveDirectoryQueryQueue.Clear ();
+ }
}
// Display name of the repository
@@ -327,7 +337,7 @@ namespace MonoDevelop.VersionControl
class RecursiveDirectoryInfoQuery : DirectoryInfoQuery
{
- public VersionInfo[] Result;
+ public VersionInfo[] Result = new VersionInfo[0];
public ManualResetEvent ResetEvent;
public int Count;
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertCommand.cs
index 8543f3733b..600af23154 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertCommand.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertCommand.cs
@@ -59,7 +59,6 @@ namespace MonoDevelop.VersionControl
foreach (VersionControlItemList list in items.SplitByRepository ())
list[0].Repository.Revert (list.Paths, true, Monitor);
- Monitor.ReportSuccess (GettextCatalog.GetString ("Revert operation completed."));
Gtk.Application.Invoke (delegate {
foreach (VersionControlItem item in items) {
if (!item.IsDirectory) {
@@ -72,6 +71,7 @@ namespace MonoDevelop.VersionControl
}
VersionControlService.NotifyFileStatusChanged (items);
});
+ Monitor.ReportSuccess (GettextCatalog.GetString ("Revert operation completed."));
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs
index 6e365cd1d5..dea73b39bf 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs
@@ -115,7 +115,6 @@ namespace MonoDevelop.VersionControl
if (!(isDir || Directory.Exists (path)))
isDir = false;
- Monitor.ReportSuccess (GettextCatalog.GetString ("Revert operation completed."));
Gtk.Application.Invoke (delegate {
if (!isDir) {
// Reload reverted files
@@ -128,6 +127,7 @@ namespace MonoDevelop.VersionControl
VersionControlService.NotifyFileStatusChanged (new FileUpdateEventArgs (vc, path, true));
}
});
+ Monitor.ReportSuccess (GettextCatalog.GetString ("Revert operation completed."));
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UnlockCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UnlockCommand.cs
index 599e3d56f0..52b57bec2f 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UnlockCommand.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UnlockCommand.cs
@@ -62,10 +62,10 @@ namespace MonoDevelop.VersionControl
foreach (VersionControlItemList list in items.SplitByRepository ())
list[0].Repository.Unlock (Monitor, list.Paths);
- Monitor.ReportSuccess (GettextCatalog.GetString ("Unlock operation completed."));
Gtk.Application.Invoke (delegate {
VersionControlService.NotifyFileStatusChanged (items);
});
+ Monitor.ReportSuccess (GettextCatalog.GetString ("Unlock operation completed."));
}
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UpdateCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UpdateCommand.cs
index 6677562bb1..5c4c641fc3 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UpdateCommand.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UpdateCommand.cs
@@ -33,10 +33,10 @@ namespace MonoDevelop.VersionControl
foreach (VersionControlItemList list in items.SplitByRepository ()) {
list[0].Repository.Update (list.Paths, true, Monitor);
}
- Monitor.ReportSuccess (GettextCatalog.GetString ("Update operation completed."));
Gtk.Application.Invoke (delegate {
VersionControlService.NotifyFileStatusChanged (items);
});
+ Monitor.ReportSuccess (GettextCatalog.GetString ("Update operation completed."));
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlItem.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlItem.cs
index 5eea5c18aa..9ee8889509 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlItem.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlItem.cs
@@ -48,10 +48,17 @@ namespace MonoDevelop.VersionControl
get;
private set;
}
-
+
+ Repository repository;
public Repository Repository {
- get;
- private set;
+ get {
+ if (repository != null && repository.Disposed)
+ repository = VersionControlService.GetRepository (WorkspaceObject);
+ return repository;
+ }
+ internal set {
+ repository = value;
+ }
}
public FilePath Path {
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs
index 800859dc81..1b305bdee5 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs
@@ -95,7 +95,15 @@ namespace MonoDevelop.VersionControl
static void OnExtensionChanged (object s, ExtensionNodeEventArgs args)
{
- VersionControlSystem vcs = (VersionControlSystem) args.ExtensionObject;
+ VersionControlSystem vcs;
+
+ try {
+ vcs = (VersionControlSystem) args.ExtensionObject;
+ } catch (Exception e) {
+ LoggingService.LogError ("Failed to initialize VersionControlSystem type.", e);
+ return;
+ }
+
if (args.Change == ExtensionChange.Add) {
handlers.Add (vcs);
try {
@@ -210,26 +218,28 @@ namespace MonoDevelop.VersionControl
return repo;
}
-
+
public static Repository GetRepositoryReference (string path, string id)
{
VersionControlSystem detectedVCS = null;
- FilePath shortestPath = FilePath.Null;
+ FilePath bestMatch = FilePath.Null;
foreach (VersionControlSystem vcs in GetVersionControlSystems ()) {
var newPath = vcs.GetRepositoryPath (path, id);
if (!newPath.IsNullOrEmpty) {
- if (string.IsNullOrEmpty (shortestPath)) {
- shortestPath = newPath;
+ // Check whether we have no match or if a new match is found with a longer path.
+ // TODO: If the repo root is not the same as the repo reference, ask user for input.
+ // TODO: If we have two version control directories in the same place, ask user for input.
+ if (bestMatch.IsNullOrEmpty) {
+ bestMatch = newPath;
detectedVCS = vcs;
- } else if (shortestPath.CompareTo (newPath) <= 0) {
- // They are guaranteed to be on the same path segments, so choose by path length.
- shortestPath = newPath;
+ } else if (bestMatch.CompareTo (newPath) <= 0) {
+ bestMatch = newPath;
detectedVCS = vcs;
}
}
}
- return detectedVCS == null ? null : detectedVCS.GetRepositoryReference (shortestPath, id);
+ return detectedVCS == null ? null : detectedVCS.GetRepositoryReference (bestMatch, id);
}
diff --git a/main/src/addins/VersionControl/Subversion.Win32.Tests/RepositoryTests.cs b/main/src/addins/VersionControl/Subversion.Win32.Tests/RepositoryTests.cs
index 3d93fc42cf..e57d6c0ec5 100644
--- a/main/src/addins/VersionControl/Subversion.Win32.Tests/RepositoryTests.cs
+++ b/main/src/addins/VersionControl/Subversion.Win32.Tests/RepositoryTests.cs
@@ -42,19 +42,10 @@ namespace MonoDevelop.VersionControl.Subversion.Tests
public override void Setup ()
{
RemotePath = new FilePath (FileService.CreateTempDirectory ());
- RemoteUrl = "svn://localhost:3690/repo";
- SvnServe = new Process ();
+ RemoteUrl = "file://" + RemotePath + "/repo";
base.Setup ();
}
- [TearDown]
- public override void TearDown ()
- {
- SvnServe.Kill ();
-
- base.TearDown ();
- }
-
protected override void TestDiff ()
{
string difftext = @"--- testfile (revision 1)
@@ -131,6 +122,11 @@ namespace MonoDevelop.VersionControl.Subversion.Tests
{
return new SubversionRepository (new SvnSharpClient (), url, path);
}
+
+ protected override Repository GetRepo ()
+ {
+ return new SubversionRepository (new SvnSharpClient (), string.Empty, FilePath.Empty);
+ }
}
}
diff --git a/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs b/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs
index e15becae6d..009341e6e9 100644
--- a/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs
+++ b/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs
@@ -419,6 +419,9 @@ namespace SubversionAddinWindows
public override IEnumerable<VersionInfo> Status (Repository repo, FilePath path, SvnRevision revision, bool descendDirs, bool changedItemsOnly, bool remoteStatus)
{
+ if (path == FilePath.Null)
+ throw new ArgumentNullException ();
+
var list = new List<VersionInfo> ();
var args = new SvnStatusArgs {
Revision = GetRevision (revision),
@@ -430,12 +433,14 @@ namespace SubversionAddinWindows
try {
client.Status (path, args, (o, a) => list.Add (CreateVersionInfo (repo, a)));
} catch (SvnInvalidNodeKindException e) {
- if (e.SvnErrorCode == SvnErrorCode.SVN_ERR_WC_NOT_WORKING_COPY)
- list.Add (VersionInfo.CreateUnversioned (e.File, true));
- else if (e.SvnErrorCode == SvnErrorCode.SVN_ERR_WC_NOT_FILE)
- list.Add (VersionInfo.CreateUnversioned (e.File, false));
- else
- throw;
+ if (!string.IsNullOrEmpty (e.File)) {
+ if (e.SvnErrorCode == SvnErrorCode.SVN_ERR_WC_NOT_WORKING_COPY)
+ list.Add (VersionInfo.CreateUnversioned (e.File, true));
+ else if (e.SvnErrorCode == SvnErrorCode.SVN_ERR_WC_NOT_FILE)
+ list.Add (VersionInfo.CreateUnversioned (e.File, false));
+ else
+ throw;
+ }
} catch (SvnWorkingCopyPathNotFoundException e) {
list.Add (VersionInfo.CreateUnversioned (e.File, Directory.Exists (e.File)));
}
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/CommonFileDialogExtensions.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/CommonFileDialogExtensions.cs
index 8f3ad07d78..71cbbdc966 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/CommonFileDialogExtensions.cs
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/CommonFileDialogExtensions.cs
@@ -26,8 +26,8 @@
using System;
using System.IO;
using System.Linq;
-using Gtk;
using Microsoft.WindowsAPICodePack.Dialogs;
+using MonoDevelop.Components;
using MonoDevelop.Components.Extensions;
using MonoDevelop.Core;
@@ -50,11 +50,11 @@ namespace MonoDevelop.Platform
dialog.Title = data.Title;
dialog.InitialDirectory = data.CurrentFolder;
+ dialog.ShowHiddenItems = data.ShowHidden;
var fileDialog = dialog as CommonOpenFileDialog;
if (fileDialog != null) {
fileDialog.Multiselect = data.SelectMultiple;
- fileDialog.ShowHiddenItems = data.ShowHidden;
if (data.Action == FileChooserAction.SelectFolder) {
fileDialog.IsFolderPicker = true;
return;
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/OpenFileDialogHandler.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/OpenFileDialogHandler.cs
index 51e84a743f..de8c74197f 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/OpenFileDialogHandler.cs
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/OpenFileDialogHandler.cs
@@ -34,14 +34,15 @@ using System.Runtime.InteropServices;
using System.Text;
using Microsoft.WindowsAPICodePack.Dialogs;
using Microsoft.WindowsAPICodePack.Dialogs.Controls;
+using MonoDevelop.Components;
using MonoDevelop.Core;
+using MonoDevelop.Components.Extensions;
using MonoDevelop.Ide;
using MonoDevelop.Ide.Extensions;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Projects.Text;
using Microsoft.WindowsAPICodePack.Shell;
using System.Windows;
-using Gtk;
namespace MonoDevelop.Platform
{
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs
index ec5123aded..ee641eb696 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs
@@ -29,8 +29,8 @@
using System;
using System.IO;
using System.Linq;
-using Gtk;
using Microsoft.WindowsAPICodePack.Dialogs;
+using MonoDevelop.Components;
using MonoDevelop.Components.Extensions;
using MonoDevelop.Core;
using MonoDevelop.Ide;
@@ -44,7 +44,7 @@ namespace MonoDevelop.Platform
var parent = data.TransientFor ?? MessageService.RootWindow;
CommonFileDialog dialog;
- if (data.Action == FileChooserAction.Open || data.Action == FileChooserAction.SelectFolder)
+ if ((data.Action & (FileChooserAction.Open | FileChooserAction.SelectFolder)) != 0)
dialog = new CustomCommonOpenFileDialog ();
else
dialog = new CommonSaveFileDialog ();
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj b/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj
index 2a4612a1f0..0f19949e44 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj
@@ -32,7 +32,7 @@
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<DebugSymbols>true</DebugSymbols>
<NoWarn>1591;1573</NoWarn>
- <DocumentationFile>..\..\..\build\AddIns\WindowsPlatform.xml</DocumentationFile>
+ <DocumentationFile>..\..\..\..\build\AddIns\WindowsPlatform\WindowsPlatform.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
diff --git a/main/src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml b/main/src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml
index 632f38711b..d2da8c8f7e 100644
--- a/main/src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml
+++ b/main/src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml
@@ -23,6 +23,7 @@
<Extension path = "/MonoDevelop/Xml/Editor/XmlFileAssociations">
<Association extension = ".build" namespaceUri="http://nant.sf.net/release/0.85-rc3/nant.xsd" />
<Association extension = ".config" namespaceUri="urn:app-config" />
+ <Association extension = ".manifest" namespaceUri="schemas-microsoft-com:asm.v1" />
<Association extension = ".xsd" namespaceUri="http://www.w3.org/2001/XMLSchema" namespacePrefix="xs" />
<Association extension = ".xsl" namespaceUri="http://www.w3.org/1999/XSL/Transform" namespacePrefix="xsl" />
<Association extension = ".xslt" namespaceUri="http://www.w3.org/1999/XSL/Transform" namespacePrefix="xsl" />
diff --git a/main/src/addins/Xml/Tests/MonoDevelop.Xml.Tests.csproj b/main/src/addins/Xml/Tests/MonoDevelop.Xml.Tests.csproj
index 19cc5c4b38..f218032b4d 100644
--- a/main/src/addins/Xml/Tests/MonoDevelop.Xml.Tests.csproj
+++ b/main/src/addins/Xml/Tests/MonoDevelop.Xml.Tests.csproj
@@ -39,6 +39,7 @@
</Execution>
<DebugSymbols>true</DebugSymbols>
<NoWarn>1591;1573</NoWarn>
+ <DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">