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:
authorVsevolod Kukol <sevoku@xamarin.com>2016-05-23 15:13:46 +0300
committerVsevolod Kukol <sevoku@xamarin.com>2016-05-23 15:13:46 +0300
commit3d429dc136049b292ec531922d12554162806ce7 (patch)
treec5a945623d384bca1e90cf76334c1da077a5c3a2
parent09e9871fdac14cae9e86a2f8c264206c7f5589c5 (diff)
parentf019727ae2405f91cf399aa7e960eb1b102fce78 (diff)
Merge remote-tracking branch 'origin/master' into main-menu-redesign
-rw-r--r--.gitmodules1
-rw-r--r--Makefile10
-rw-r--r--main/Main.sln9
-rw-r--r--main/Makefile.am2
m---------main/external/debugger-libs0
m---------main/external/fsharpbinding10
m---------main/external/guiunit0
m---------main/external/mono-addins0
-rw-r--r--main/po/uk.po782
-rw-r--r--main/po/zh_CN.po3907
-rw-r--r--main/src/addins/AspNet/Commands/AddViewFromControllerCommandHandler.cs7
-rw-r--r--main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs2
-rw-r--r--main/src/addins/AspNet/Commands/GoToViewCommandHandler.cs2
-rw-r--r--main/src/addins/AspNet/Execution/XspParameters.cs4
-rw-r--r--main/src/addins/AspNet/Html/DocTypeCompletionData.cs6
-rw-r--r--main/src/addins/AspNet/Html/HtmlParser.cs4
-rw-r--r--main/src/addins/AspNet/Html/HtmlPathCompletion.cs10
-rw-r--r--main/src/addins/AspNet/ProjectPad/AspNetFolderNodeCommandHandler.cs6
-rw-r--r--main/src/addins/AspNet/Projects/AspNetAppProjectFlavor.cs6
-rw-r--r--main/src/addins/AspNet/Projects/GtkAspNetProjectTemplateWizardPageWidget.cs49
-rw-r--r--main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml10
-rw-r--r--main/src/addins/AspNet/Razor/Generator/PreprocessedCSharpRazorCodeParser.cs13
-rw-r--r--main/src/addins/AspNet/Razor/Generator/RazorTemplatePreprocessor.cs2
-rw-r--r--main/src/addins/AspNet/Razor/RazorCSharpEditorExtension.cs16
-rw-r--r--main/src/addins/AspNet/Razor/RazorCompletion.cs32
-rw-r--r--main/src/addins/AspNet/WebForms/Parser/WebFormsAttributeValueState.cs6
-rw-r--r--main/src/addins/AspNet/WebForms/Parser/WebFormsDirectiveState.cs7
-rw-r--r--main/src/addins/AspNet/WebForms/SuggestedHandlerCompletionData.cs24
-rw-r--r--main/src/addins/AspNet/WebForms/WebFormsCodeBehind.cs4
-rw-r--r--main/src/addins/AspNet/WebForms/WebFormsDirectiveCompletion.cs28
-rw-r--r--main/src/addins/AspNet/WebForms/WebFormsEditorExtension.cs8
-rw-r--r--main/src/addins/AspNet/WebForms/WebFormsMemberListBuilder.cs3
-rw-r--r--main/src/addins/AspNet/WebForms/WebFormsPageInfo.cs13
-rw-r--r--main/src/addins/AspNet/WebForms/WebFormsParser.cs6
-rw-r--r--main/src/addins/CSharpBinding/CSharpBinding.addin.xml12
-rw-r--r--main/src/addins/CSharpBinding/CSharpBinding.csproj1
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/CreateConstructorGenerator.cs13
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/WriteLineGenerator.cs7
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/Resources.cs95
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/AnonymousMethodCompletionData.cs19
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CSharpCompletionTextEditorExtension.cs11
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CastCompletionData.cs19
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreateOverrideCompletionData.cs8
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreatePartialCompletionData.cs10
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/EventCreationCompletionData.cs6
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ImportSymbolCompletionData.cs27
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ProtocolCompletionData.cs8
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynCodeCompletionFactory.cs3
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs3
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionPanelWidget.cs22
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/Completion/ContextHandler/DelegateCreationContextHandler.cs12
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs10
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextEditorIndentation.cs25
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs21
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindBaseSymbolsHandler.cs9
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindDerivedSymbolsHandler.cs37
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindExtensionMethodsHandler.cs5
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindImplementingMembersHandler.cs5
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindMemberOverloadsHandler.cs12
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpCodeGenerator.cs68
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFeaturesTextEditorExtension.cs6
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs5
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/ConstructFixer.cs208
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindProjectReferenceUsagesHandler.cs50
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindReferencesHandler.cs8
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoDeclarationHandler.cs2
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp.UnitTests/UnitTestTextEditorExtension.cs2
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpNavigationTextEditorExtension.cs20
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs424
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonIndentEngine.cs11
-rw-r--r--main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonTextEditorExtension.cs7
-rw-r--r--main/src/addins/ChangeLogAddIn/ChangeLogAddIn.cs2
-rw-r--r--main/src/addins/ChangeLogAddIn/CommitDialogExtensionWidget.cs6
-rw-r--r--main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Targets/SourcesZipPackageBuilder.cs2
-rw-r--r--main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml2
-rw-r--r--main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml2
-rw-r--r--main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs2
-rw-r--r--main/src/addins/MacPlatform/Dialogs/MacExceptionDialogHandler.cs262
-rw-r--r--main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs1
-rw-r--r--main/src/addins/MacPlatform/Dialogs/SelectEncodingPopUpButton.cs1
-rw-r--r--main/src/addins/MacPlatform/MacPlatform.addin.xml1
-rw-r--r--main/src/addins/MacPlatform/MacPlatform.cs67
-rw-r--r--main/src/addins/MacPlatform/MacPlatform.csproj2
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/AwesomeBar.cs85
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/ButtonBar.cs6
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/ButtonBarContainer.cs2
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs9
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/MultiResImage.cs2
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/RunButton.cs27
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/SearchBar.cs21
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/SelectorView.cs10
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/StatusBar.cs31
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/Styles.cs5
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs6
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs52
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs55
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs7
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs15
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomEventNodeBuilder.cs6
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomFieldNodeBuilder.cs6
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomMethodNodeBuilder.cs6
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomPropertyNodeBuilder.cs6
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomTypeNodeBuilder.cs6
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.PreviewVisualizers/GenericPreviewVisualizer.cs10
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs47
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/AttachToProcessDialog.cs2
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs7
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs39
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerConsoleView.cs13
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs8
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs9
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExpressionEvaluatorDialog.cs8
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs84
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs5
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/Styles.cs2
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/TextEntryWithCodeCompletion.cs8
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ThreadsPad.cs8
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs456
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs14
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/CodeTemplateToolboxProvider.cs25
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ComponentSelectorDialog.cs57
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/Toolbox.cs4
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/Commands.cs4
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/PropertyPad.cs1
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/SwitchBetweenRelatedFilesCommand.cs2
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/ToolboxService.cs35
-rw-r--r--main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood/DocFoodTextEditorExtension.cs5
-rw-r--r--main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/Styles.cs2
-rw-r--r--main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.addin.xml2
-rw-r--r--main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext/GettextTool.cs3
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/AddinInfo.cs3
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/ActionGroupDisplayBinding.cs1
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs2
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/ActionGroupNodeBuilder.cs2
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WidgetNodeBuilder.cs2
-rw-r--r--main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.csproj28
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/Styles.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageManager.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageRepository.cs16
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProjectManager.cs12
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopPackageManagerTests.cs145
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/FileConflictResolver.cs8
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IMonoDevelopPackageManager.cs4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs3
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/LicenseAcceptanceService.cs3
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ManagePackagesViewTitle.cs4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopPackageManager.cs35
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopProjectSystem.cs22
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageActionRunner.cs4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressMonitor.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementSolutionExtensions.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageReferenceMonitor.cs (renamed from main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RemovedPackageReferenceMonitor.cs)17
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageViewModelOperationLogger.cs7
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs144
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs6
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSources.cs4
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ReinstallPackageAction.cs2
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs6
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UninstallPackageAction.cs6
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatePackageAction.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInSolution.cs6
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs2
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeRefactoringService.cs3
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeDiagnosticRunner.cs16
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeIssuePanelWidget.cs58
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/Pad/CodeAnalysisBatchRunner.cs1
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs83
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/InsertionPointService.cs2
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringOptions.cs4
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs111
-rw-r--r--main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringSymbolInfo.cs2
-rw-r--r--main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit/ElementHelpWidget.cs2
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs23
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs13
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/DocumentLineWrapper.cs5
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/TooltipProviderWrapper.cs7
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/DebugValueWindow.cs4
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs31
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs21
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs142
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic34
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs4
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelopNUnit.addin.xml4
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/EventListenerWrapper.cs49
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj3
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnitTestRunner.cs16
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/packages.config1
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Gui/TestChart.cs9
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs4
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs10
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Services/AbstractUnitTestEditorExtension.cs22
-rw-r--r--main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Commands/WebReferenceCommandHandler.cs15
-rw-r--r--main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/Library.cs4
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating.Tests/EngineTests.cs72
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating.Tests/Mono.TextTemplating.Tests.csproj1
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating/AssemblyInfo.cs2
-rw-r--r--main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs64
-rw-r--r--main/src/addins/TextTemplating/MonoDevelop.TextTemplating/T4FileTemplate.cs2
-rw-r--r--main/src/addins/TextTemplating/MonoDevelop.TextTemplating/TextTemplatingFilePreprocessor.cs4
-rw-r--r--main/src/addins/TextTemplating/TextTransform/TextTransform.cs30
-rw-r--r--main/src/addins/VBNetBinding/VBNetBinding.addin.xml6
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs1
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseRepositoryTests.cs17
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/GitIgnore.txt10
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditBranchDialog.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs20
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.ConflictResolutionDialog.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.EditBranchDialog.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/gui.stetic4
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Tests/RepositoryTests.cs7
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs10
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs9
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/MonoDevelop.VersionControl.Subversion.Gui.SslServerTrustDialog.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/gui.stetic2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitMessageStylePanelWidget.cs9
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/SelectRepositoryDialog.cs3
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/BlameWidget.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/CommonTextEditorOptions.cs8
-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/StatusView.cs3
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/Styles.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj1
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UrlBasedRepositoryEditor.cs15
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlInitializer.cs39
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs10
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlTask.cs19
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml1
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.UrlBasedRepositoryEditor.cs1
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Views.LogWidget.cs6
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic7
-rw-r--r--main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs4
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/ComboMenu.cs14
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/StatusBar.xaml.cs11
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/WPFTitlebar.cs27
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/WPFToolbar.cs10
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/Styles.cs2
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/Win32.cs24
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.cs30
-rw-r--r--main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj1
-rw-r--r--main/src/addins/Xml/Completion/XmlCompletionData.cs10
-rw-r--r--main/src/addins/Xml/Completion/XmlTagCompletionData.cs8
-rw-r--r--main/src/addins/Xml/Editor/BaseXmlEditorExtension.cs6
-rw-r--r--main/src/addins/Xml/Editor/XmlEditorService.cs4
-rw-r--r--main/src/addins/Xml/Editor/XmlTextEditorExtension.cs12
-rw-r--r--main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs93
-rw-r--r--main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/GtkWorkarounds.cs10
-rw-r--r--main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/MonoTextEditor.cs7
-rw-r--r--main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextArea.cs59
-rw-r--r--main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml36
-rw-r--r--main/src/core/Mono.Texteditor/SyntaxModes/VBNetSyntaxMode.xml1
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetFramework.cs6
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessWrapper.cs8
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Instrumentation/InstrumentationService.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/AggregatedProgressMonitor.cs38
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/ConsoleProjectLoadProgressMonitor.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/FilteredProgressMonitor.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj1
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs55
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core/Gettext.cs50
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core/ProgressMonitor.cs58
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs8
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildPropertyCore.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/RemoteProjectBuilder.cs15
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/AssemblyReference.cs65
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs47
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs7
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs7
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectService.cs8
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs2
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs67
-rw-r--r--main/src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/GtkWidgetResult.cs38
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs5
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/ObjectResult.cs5
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AppResult.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs10
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestSession.cs15
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs29
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/DockNotebook.cs1
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/TabStrip.cs17
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs4
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs49
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs11
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Extensions/ErrorDialog.cs76
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FirstCategory.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs8
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/StatusArea.cs9
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs17
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGridTable.cs50
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ConsoleView.cs32
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ContextMenuTreeView.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs5
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkWorkarounds.cs48
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/IdeTheme.cs22
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageView.cs15
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/SearchEntry.cs7
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Windows/GtkWPFWidget.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs408
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs16
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWidget.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWindow.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindow.cs14
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs10
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/TooltipInformationWindow.cs14
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateCompletionData.cs8
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplatePanel.cs22
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/PadCodon.cs7
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/EditCommands.cs1
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentFileStorage.cs111
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentOpen.cs40
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AutoInsertBracketTextEditorExtension.cs5
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/BraceMatcherTextEditorExtension.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs53
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/ErrorHandlerTextEditorExtension.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextEditorExtension.cs7
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxModeService.cs22
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs11
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedCompletionExtension.cs8
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedFilterCompletionTextEditorExtension.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorViewContent.cs30
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Extensions/MimeTypeNode.cs4
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FileProvider.cs24
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs39
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs133
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs16
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultPad.cs24
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs10
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs44
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkErrorDialog.cs185
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/OptionsDialog.cs4
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/IDEStyleOptionsPanel.cs8
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs17
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TasksOptionsPanel.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/ClassBrowserPadWidget.cs8
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs13
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderFileNodeBuilder.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs4
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/DefaultMonitorPad.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs27
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs45
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs38
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/IPadContainer.cs16
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/PadContent.cs1
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs24
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs5
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/StockIcons.cs1
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Styles.cs22
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewContent.cs4
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs58
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/NamespaceSynchronisationPanel.cs8
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs27
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.UI.cs18
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs37
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskListEntry.cs9
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs11
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeDomFileDescriptionTemplate.cs4
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeTranslationFileDescriptionTemplate.cs11
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SingleFileDescriptionTemplate.cs4
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/XmlCodeDomReader.cs9
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopSourceTextContainer.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs259
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs13
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/Style.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs19
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdePreferences.cs32
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeVersionInfo.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ImageService.cs1
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs61
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs15
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs46
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Services.cs2
-rw-r--r--main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.Shared.cs30
-rw-r--r--main/src/core/MonoDevelop.Startup/app.manifest2
-rw-r--r--main/tests/Ide.Tests/ProjectTemplateTests.cs72
-rw-r--r--main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/CodeCompletionCSharpTests.cs1
-rw-r--r--main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/ImportCompletionTests.cs65
-rw-r--r--main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/MiscTests.cs27
-rw-r--r--main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/ProtocolMemberContextHandlerTests.cs2
-rw-r--r--main/tests/UnitTests/MonoDevelop.CSharpBinding/AutomaticBracketInsertionTests.cs2
-rw-r--r--main/tests/UnitTests/MonoDevelop.CSharpBinding/NamedArgumentCompletionTests.cs2
-rw-r--r--main/tests/UnitTests/MonoDevelop.CSharpBinding/OnTheFlyFormatterTests.cs52
-rw-r--r--main/tests/UnitTests/MonoDevelop.Ide.Editor/TextSourceTestBase.cs14
-rw-r--r--main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs343
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/FlavorMigration.cs2
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs348
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs46
-rw-r--r--main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs66
-rw-r--r--main/tests/UnitTests/MonoDevelop.SourceEditor/JSonIndentEngineTests.cs16
-rw-r--r--main/tests/UnitTests/TestBase.cs2
-rw-r--r--main/tests/UnitTests/UnitTests.csproj5
-rw-r--r--main/tests/UserInterfaceTests/Controllers/NewFileController.cs2
-rw-r--r--main/tests/UserInterfaceTests/Controllers/NewProjectController.cs3
-rw-r--r--main/tests/UserInterfaceTests/Controllers/NuGetController.cs2
-rw-r--r--main/tests/UserInterfaceTests/UserInterfaceTests.csproj1
-rw-r--r--main/tests/UserInterfaceTests/VersionControlTests/Git/GitBase.cs2
-rw-r--r--main/tests/UserInterfaceTests/VersionControlTests/VCSBase.cs2
-rwxr-xr-xmain/tests/test-projects/msbuild-tests/aliased-references.csproj39
-rwxr-xr-xversion-checks2
422 files changed, 7355 insertions, 6796 deletions
diff --git a/.gitmodules b/.gitmodules
index 580034a176..14771724d1 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -49,6 +49,7 @@
[submodule "main/external/libgit-binary"]
path = main/external/libgit-binary
url = git://github.com/mono/libgit-binary.git
+ branch = xs-5.10-v2
[submodule "main/external/libgit2"]
path = main/external/libgit2
url = git://github.com/mono/libgit2.git
diff --git a/Makefile b/Makefile
index b40350491f..c13049636e 100644
--- a/Makefile
+++ b/Makefile
@@ -8,12 +8,20 @@ MONO_AOT:=MONO_PATH=$(AOT_DIRECTORIES):$(MONO_PATH) mono --aot --debug
all: update_submodules all-recursive
-update_submodules:
+GIT_FOUND = $$(echo $$(which git))
+SYNC_SUBMODULES = \
if test -d ".git"; then \
+ if [ "x$(GIT_FOUND)" = "x" ]; then \
+ echo "git not found; please install it first"; \
+ exit 1; \
+ fi; \
git submodule sync; \
git submodule update --init --recursive || exit 1; \
fi
+update_submodules:
+ @$(SYNC_SUBMODULES)
+
top_srcdir=.
include $(top_srcdir)/config.make
diff --git a/main/Main.sln b/main/Main.sln
index 1ac2b9d21b..d79b983766 100644
--- a/main/Main.sln
+++ b/main/Main.sln
@@ -908,16 +908,16 @@ Global
{7E4B15FB-E8C4-419A-A31C-9310FD9062BD}.ReleaseWin32|Any CPU.Build.0 = Release|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7FCDB0D9-AA7D-44E4-BE74-55312B432389}.DebugGnome|Any CPU.ActiveCfg = Debug|Any CPU
- {7FCDB0D9-AA7D-44E4-BE74-55312B432389}.DebugGnome|Any CPU.Build.0 = Debug|Any CPU
+ {7FCDB0D9-AA7D-44E4-BE74-55312B432389}.DebugGnome|Any CPU.ActiveCfg = DebugGnome|Any CPU
+ {7FCDB0D9-AA7D-44E4-BE74-55312B432389}.DebugGnome|Any CPU.Build.0 = DebugGnome|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.DebugMac|Any CPU.ActiveCfg = Debug|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.DebugMac|Any CPU.Build.0 = Debug|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.DebugWin32|Any CPU.ActiveCfg = Debug|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.DebugWin32|Any CPU.Build.0 = Debug|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.Release|Any CPU.Build.0 = Release|Any CPU
- {7FCDB0D9-AA7D-44E4-BE74-55312B432389}.ReleaseGnome|Any CPU.ActiveCfg = Release|Any CPU
- {7FCDB0D9-AA7D-44E4-BE74-55312B432389}.ReleaseGnome|Any CPU.Build.0 = Release|Any CPU
+ {7FCDB0D9-AA7D-44E4-BE74-55312B432389}.ReleaseGnome|Any CPU.ActiveCfg = ReleaseGnome|Any CPU
+ {7FCDB0D9-AA7D-44E4-BE74-55312B432389}.ReleaseGnome|Any CPU.Build.0 = ReleaseGnome|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.ReleaseMac|Any CPU.ActiveCfg = Release|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.ReleaseMac|Any CPU.Build.0 = Release|Any CPU
{7FCDB0D9-AA7D-44E4-BE74-55312B432389}.ReleaseWin32|Any CPU.ActiveCfg = Release|Any CPU
@@ -1918,6 +1918,7 @@ Global
{9E061B40-12E7-470A-B225-E566BAF745EB}.DebugGnome|Any CPU.ActiveCfg = DebugGnome|Any CPU
{9E061B40-12E7-470A-B225-E566BAF745EB}.ReleaseMac|Any CPU.ActiveCfg = ReleaseMac|Any CPU
{9E061B40-12E7-470A-B225-E566BAF745EB}.ReleaseWin32|Any CPU.ActiveCfg = ReleaseWin32|Any CPU
+ {9E061B40-12E7-470A-B225-E566BAF745EB}.ReleaseWin32|Any CPU.Build.0 = ReleaseWin32|Any CPU
{9E061B40-12E7-470A-B225-E566BAF745EB}.ReleaseGnome|Any CPU.ActiveCfg = ReleaseGnome|Any CPU
{D2A4E99E-FC2D-45A9-8BE7-1AB7DF95BA2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D2A4E99E-FC2D-45A9-8BE7-1AB7DF95BA2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
diff --git a/main/Makefile.am b/main/Makefile.am
index ec59c6dc87..494b5ceb9c 100644
--- a/main/Makefile.am
+++ b/main/Makefile.am
@@ -117,7 +117,7 @@ run: run-sgen
endif
run-bundle: $(PROGRAM)
- $(MD_LAUNCH_SETUP) $(MD_LAUNCH_EXTRA_ENV) $(MD_BIN_PATH)/MonoDevelop --no-redirect
+ LANG= LC_ALL= $(MD_LAUNCH_SETUP) $(MD_LAUNCH_EXTRA_ENV) $(MD_BIN_PATH)/MonoDevelop --no-redirect
run-64: run-sgen-64
run-boehm: runmd
diff --git a/main/external/debugger-libs b/main/external/debugger-libs
-Subproject 14fc5ac5da9b2d5d41119b0ce278ca2fcd8c083
+Subproject 79c308eb36525b1b9e414569684ce0190c54d09
diff --git a/main/external/fsharpbinding b/main/external/fsharpbinding
-Subproject 87a3056b2bd2c31a3ded4dbf1841c811fc18ae6
+Subproject c3b2632255d295da31856648d123f9f7a06eb6b
diff --git a/main/external/guiunit b/main/external/guiunit
-Subproject ad28ae12928cce579ae2f9450291dd7648dad76
+Subproject 4ca8636c93566489558465ab1855cf077e8f539
diff --git a/main/external/mono-addins b/main/external/mono-addins
-Subproject 6e892971381c39bfac70df6aa5c4b8312f0f128
+Subproject 8f6214ff2ef873283c70a68026dd59eb107a888
diff --git a/main/po/uk.po b/main/po/uk.po
index 38cf355417..3a412f1d4d 100644
--- a/main/po/uk.po
+++ b/main/po/uk.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: MonoDevelop 2.4.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-15 15:35:25-0500\n"
-"PO-Revision-Date: 2016-02-06 10:23+0200\n"
+"PO-Revision-Date: 2016-04-17 10:43+0300\n"
"Last-Translator: Olexandr Pylypchuk <pilipchukap@rambler.ru>\n"
"Language-Team: Ukrainian <kde-i18n-doc@kde.org>\n"
"Language: uk\n"
@@ -26,7 +26,7 @@ msgstr "{0} Ð—Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ ÐºÐ¾Ð½Ñоль"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs:23
msgid "The application was terminated by a signal: {0}"
-msgstr "ЗаÑтоÑунок припинив роботу з кодом виходу: {0}"
+msgstr "ЗаÑтоÑунок зупинено Ñигналом: {0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs:23
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:211
@@ -134,9 +134,8 @@ msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»Ñ–"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:77
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:87
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:90
-#, fuzzy
msgid "Custom command execution failed"
-msgstr "Ðе вдалоÑÑŒ виконати команду"
+msgstr "Ðе вдалоÑÑŒ виконати влаÑну команду"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:166
msgid "Cannot create directory {0}, as a file with that name exists."
@@ -375,7 +374,7 @@ msgstr "Копіювати, Ñкщо новіший"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:53
msgid "Incompatible target framework: {0}"
-msgstr "Ðе ÑуміÑний цільовий фреймворк: {0}"
+msgstr "ÐеÑуміÑний цільовий фреймворк: {0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:205
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CompiledAssemblyProject.cs:4
@@ -522,7 +521,7 @@ msgid ""
"targetting ({2})"
msgstr ""
"Проект '{0}' збережено у форматі '{1}', але Ñ†Ñ Ð²ÐµÑ€ÑÑ–Ñ Visual Studio не "
-"підтримує цыльового фреймворку проекту ({2})"
+"підтримує цільового фреймворку проекту ({2})"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:6
msgid "Saving solution: {0}"
@@ -554,8 +553,7 @@ msgstr ""
msgid ""
"{0}({1}): Projects with non-local source (http://...) not supported. '{2}'."
msgstr ""
-"{0}({1}): Проекти з нелокальними ÑирцÑми (http://...) не пыдтримуютьÑÑ. "
-"'{2}'."
+"{0}({1}): Проекти з нелокальними ÑирцÑми (http://...) не підтримуютьÑÑ. '{2}'."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:58
msgid "Invalid project path found in {0} : {1}"
@@ -732,19 +730,19 @@ msgstr "ТайÑьке"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs:2
msgid "ApplicationName"
-msgstr "ÐазваЗаÑтоÑунку"
+msgstr "ApplicationName"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs:2
msgid "SuiteName"
-msgstr ""
+msgstr "SuiteName"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs:2
msgid "ProfileDirectoryName"
-msgstr ""
+msgstr "ProfileDirectoryName"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs:2
msgid "StatusAreaSteadyIcon"
-msgstr ""
+msgstr "StatusAreaSteadyIcon"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/UnknownProjectTypeNode.cs:15
msgid "This project type is not supported by MonoDevelop on {0}."
@@ -773,19 +771,19 @@ msgstr "ОчищеннÑ: {0} ({1})"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/InvalidProjectFileException.cs:7
msgid "errorCode"
-msgstr "кодПомилки"
+msgstr "errorCode"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/InvalidProjectFileException.cs:7
msgid "errorSubcategory"
-msgstr "підкатегоріÑПомилки"
+msgstr "errorSubcategory"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/InvalidProjectFileException.cs:7
msgid "helpKeyword"
-msgstr "ключовеСловоДовідки"
+msgstr "helpKeyword"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/InvalidProjectFileException.cs:7
msgid "projectFile"
-msgstr "файлПроекту"
+msgstr "projectFile"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml:14
msgid "Mono"
@@ -1060,7 +1058,7 @@ msgstr "Шаблон Ð´Ð»Ñ Ð²Ð¸Ð½Ñтку"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "ExceptionName"
-msgstr ""
+msgstr "ExceptionName"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Template for an indexer"
@@ -1072,7 +1070,7 @@ msgstr "Повернути тип індекÑатора"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Type to index with"
-msgstr ""
+msgstr "Тип, Ñким індекÑувати"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Template for a short property"
@@ -1128,7 +1126,7 @@ msgstr "Вираз Ð´Ð»Ñ Ð¾Ñ†Ñ–Ð½ÐºÐ¸ препроцеÑором"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
msgid "Template checked block"
-msgstr ""
+msgstr "Шаблон блоку checked"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
msgid "Template for class declaration"
@@ -1277,7 +1275,7 @@ msgstr "ПроÑÑ‚Ñ–Ñ€ назв:"
#: ../src/addins/AspNet/Razor/Razor-templates.xml:25
#: ../src/addins/AspNet/Razor/Razor-templates.xml:26
msgid "Template for try...catch"
-msgstr "Шаблон Ð´Ð»Ñ 'try...catch'"
+msgstr "Шаблон Ð´Ð»Ñ try...catch"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:10
msgid "Template for parentheses"
@@ -2054,7 +2052,7 @@ msgstr "Закрити активне Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ Ð°Ð±Ð¾ елемент роÐ
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:17
msgid "_Revert"
-msgstr "_Відновити"
+msgstr "_Відкотити"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Revert to a saved version of the file"
@@ -2147,14 +2145,12 @@ msgid "Opens the folder that contains this file."
msgstr "Відкрити теку, Ñка міÑтить цей файл."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Reveal in Finder"
-msgstr "Замінити у файлах"
+msgstr ""
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Reveals the file in Finder."
-msgstr "Відкрити теку в оглÑдачі файлів"
+msgstr ""
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs:7
@@ -2370,12 +2366,12 @@ msgstr "1 колонка"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
#, fuzzy
msgid "Move to Next Notebook"
-msgstr "_Перейти до наÑтупного викориÑтаннÑ"
+msgstr "ПереміÑтити до наÑтупного Notebook"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
#, fuzzy
msgid "Move to Previous Notebook"
-msgstr "До попередньої закладки"
+msgstr "ПереміÑтити до попереднього Notebook"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
msgid "_Focus Document"
@@ -2413,12 +2409,11 @@ msgstr "Моніторинг інÑтрументарію"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:23
msgid "Start Session Recorder"
-msgstr ""
+msgstr "Розпочати Ð·Ð°Ð¿Ð¸Ñ ÑеанÑу"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:24
-#, fuzzy
msgid "Replay Session..."
-msgstr "За_мінити..."
+msgstr "Програти ÑеанÑ..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:26
#: ../src/addins/MonoDevelop.GtkCore/templates/Window.xft.xml:0
@@ -2955,6 +2950,8 @@ msgstr ""
msgid ""
"Cycles completing the current word from matching words in all open files"
msgstr ""
+"Циклічно пропонує Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ñлова вÑіма підхожими Ñловами зі вÑÑ–Ñ… "
+"відкритих файлів"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Find caret"
@@ -3095,9 +3092,8 @@ msgid "Other"
msgstr "Інші"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:7
-#, fuzzy
msgid "Automated Feedback"
-msgstr "Повідомити про помилку"
+msgstr "Ðвтоматичне Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:7
msgid "MonoDevelop Maintenance"
@@ -3220,7 +3216,7 @@ msgstr "_ВиконаннÑ"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:11
msgid "Session Recorder"
-msgstr ""
+msgstr "ЗапиÑувач ÑеанÑу"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:12
msgid "_Window"
@@ -3350,9 +3346,8 @@ msgid "F# files"
msgstr "Файли F#"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid "MSBuild targets file"
-msgstr "Ðазва цілі побудови:"
+msgstr "цільові файли MSBuild"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Pads.addin.xml:3
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:12
@@ -3458,14 +3453,12 @@ msgid "Mono Options"
msgstr "Параметри Mono"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "General Pad Text"
-msgstr "Загальні"
+msgstr ""
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "Output Pad Contents"
-msgstr "Панелі Ð´Ð»Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ"
+msgstr ""
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Policies.addin.xml:2
msgid "Text Style"
@@ -3726,7 +3719,7 @@ msgstr "ВміÑÑ‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewCommandHandlers.cs:6
msgid "Revert unsaved changes to document '{0}'?"
-msgstr ""
+msgstr "СкаÑувати незбережені зміни у документі '{0}'?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewCommandHandlers.cs:6
msgid "All changes made to the document will be permanently lost."
@@ -4103,11 +4096,8 @@ msgid "Unknown language '{0}'"
msgstr "Ðевідома мова '{0}'"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs:9
-#, fuzzy
msgid "Invalid configuration mapping"
-msgstr ""
-"\n"
-"Ðеправильна ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ {0}. Правильні конфігурації : "
+msgstr "Ðеправильна карта конфігурації"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs:9
msgid "Project not built in active configuration"
@@ -4483,14 +4473,12 @@ msgid "Create New Task"
msgstr "Створити нове завданнÑ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:8
-#, fuzzy
msgid "Copy Task"
msgstr "Копіювати завданнÑ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:8
-#, fuzzy
msgid "Copy Task Description"
-msgstr "ОпиÑ"
+msgstr "Копіювати Ð¾Ð¿Ð¸Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:8
msgid "Delete Task"
@@ -5057,6 +5045,10 @@ msgid ""
"the .NET runtime to be used for building and running applications when none "
"is specifically selected."
msgstr ""
+"Якщо ви маєте паралельно вÑтановлену Mono, можна зареєÑтрувати Ñ—Ñ— тут, "
+"піÑÐ»Ñ Ñ‡Ð¾Ð³Ð¾ Ñ—Ñ— можна буде викориÑтовувати Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ Ñ– запуÑку проектів. "
+"<b>Типовим Ñередовищем</b> Ñ” .NET, Ñке викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð±ÑƒÐ´Ð¾Ð²Ð¸ Ñ– "
+"запуÑку проектів, Ñкщо не вказано інше."
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.MonoRuntimePanelWidget.cs:2
msgid "Set as Default"
@@ -5065,7 +5057,7 @@ msgstr "Зробити Ñтандартним"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.MonoRuntimePanelWidget.cs:2
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.AddinInfoView.cs:2
msgid "label1"
-msgstr ""
+msgstr "label1"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultPad.cs:8
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs:6
@@ -5350,7 +5342,7 @@ msgstr "Символи GDB"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Profiler"
-msgstr ""
+msgstr "Профілювальник"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Verbose Level"
@@ -5419,7 +5411,7 @@ msgstr "ШлÑхи, нечутливі до регіÑтру"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Managed Watcher"
-msgstr ""
+msgstr "Керований ÑпоÑтерігач"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "No SMP"
@@ -5455,7 +5447,7 @@ msgstr "XDebug"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Garbage Collector"
-msgstr "Прибиральник"
+msgstr "Збирач ÑміттÑ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Enable LLVM"
@@ -5624,6 +5616,8 @@ msgid ""
"When set, System.IO.FileSystemWatcher will use the default managed "
"implementation (slow)."
msgstr ""
+"Якщо вÑтановити, System.IO.FileSystemWatcher викориÑтає типову керовану "
+"реалізацію (повільно)."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid ""
@@ -5676,6 +5670,8 @@ msgid ""
"If set, an exception is thrown when a X11 error is encountered. By default a "
"message is displayed but execution continues."
msgstr ""
+"Якщо вÑтановлено, кидаєтьÑÑ Ð²Ð¸Ð½Ñток при помилці X11. Типово "
+"виводитьÑÑ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ, але Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÑƒÑ”Ñ‚ÑŒÑÑ."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid ""
@@ -5719,7 +5715,7 @@ msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:5
msgid "Additional command line options to be provided to the Mono command."
-msgstr ""
+msgstr "Додаткові параметри командного Ñ€Ñдка, Ñкі передаютьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ– Mono."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:5
msgid "Disabled"
@@ -5918,11 +5914,11 @@ msgstr "Помилки при Ñтворенні файлу '{0}'."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:27
msgid "Errors in file generation."
-msgstr ""
+msgstr "Помилки при Ñтворенні файлу."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:27
msgid "Warnings in file generation."
-msgstr ""
+msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ Ñтворенні файлу."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:27
msgid "Generated files successfully."
@@ -6036,7 +6032,7 @@ msgstr "Групувати за категоріÑми"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs:77
msgid "Sort alphabetically"
-msgstr "Сортувати за алфавітом"
+msgstr "УпорÑдкувати за алфавітом"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid.Editors/CollectionEditor.cs:58
msgid "(Collection)"
@@ -6203,6 +6199,8 @@ msgid ""
"Some files may need to be reloaded, and editing status for those files (such "
"as the undo queue) will be lost."
msgstr ""
+"ДеÑкі файли можливо Ñлід перезавантажити, Ñ– Ñтан Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð½Ð¸Ñ… "
+"(наприклад, черга ÑкаÑуваннÑ) буде втрачено."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:54
#: ../src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderProject.cs:8
@@ -6510,7 +6508,7 @@ msgstr "Зміни, зроблені у цих файлах, будуть пер
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:20
msgid "The workspace already contains '{0}'."
-msgstr ""
+msgstr "Робочий проÑÑ‚Ñ–Ñ€ вже міÑтить '{0}'."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:21
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:28
@@ -7306,12 +7304,11 @@ msgstr "Ð’Ñе одно продовжити"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:65
msgid "CustomizerAssemblyPath"
-msgstr ""
+msgstr "CustomizerAssemblyPath"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:66
-#, fuzzy
msgid "CustomizerType"
-msgstr "ВлаÑна"
+msgstr "CustomizerType"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/StringTagSelectorButton.cs:2
msgid "More"
@@ -7720,6 +7717,8 @@ msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/LogAgentOptionsPanel.cs:5
msgid "Report errors and usage information to help {0} improve my experience."
msgstr ""
+"ПовідомлÑти про помилки та дані щодо викориÑтаннÑ, щоб допомогти {0} "
+"покращити роботу."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/LogReportingStartup.cs:4
msgid "Do _Not Send"
@@ -8052,6 +8051,8 @@ msgid ""
"Illegal project name.\n"
"Name cannot contain a language keyword."
msgstr ""
+"ÐеприпуÑтима назва проекту.\n"
+"Ðазва не може бути ключовим Ñловом мови."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:654
msgid ""
@@ -8096,7 +8097,7 @@ msgstr "Ðазва рішеннÑ:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.GtkProjectConfigurationWidget.cs:113
msgid "Create a .gitignore file to ignore inessential files."
-msgstr ""
+msgstr "Створити файл .gitignore Ð´Ð»Ñ Ð½ÐµÑ…Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½ÐµÐ²Ð°Ð¶Ð»Ð¸Ð²Ð¸Ñ… файлів."
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.GtkProjectConfigurationWidget.cs:129
msgid "Create a project within the solution directory."
@@ -8138,9 +8139,8 @@ msgid "E_rrors only"
msgstr "_Лише помилки"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectConfiguration.cs:145
-#, fuzzy
msgid "Illegal characters used in location."
-msgstr "Ð Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту"
+msgstr "Ð’ розташуванні викориÑтано недопуÑтимі Ñимволи."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectConfiguration.cs:150
msgid ""
@@ -8160,7 +8160,7 @@ msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectConfiguration.cs:162
msgid "Illegal characters used in project location."
-msgstr ""
+msgstr "Ð’ розташуванні проекту викориÑтано недопуÑтимі Ñимволи."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs:16
msgid "Search Files"
@@ -8176,16 +8176,15 @@ msgstr "Пошук членів"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs:77
msgid "Press ‘{0}’ to search"
-msgstr ""
+msgstr "Ð”Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ натиÑніть ‘{0}’"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs:77
msgid "Search solution"
msgstr "Шукати рішеннÑ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CodeAnalysisPanel.cs:12
-#, fuzzy
msgid "Enable Code Analysis on Build"
-msgstr "Увімкнути аналіз коду відкритих файлів"
+msgstr "Увімкнути аналіз коду при побудові"
#: ../src/core/Mono.Texteditor/Mono.TextEditor.PopupWindow/ModeHelpWindow.cs:44
msgid "Use [%UP%] [%DOWN%] to move to another location."
@@ -8197,7 +8196,7 @@ msgstr "ÐатиÑни [ENTER], щоб вибрати розташуваннÑ."
#: ../src/core/Mono.Texteditor/Mono.TextEditor.PopupWindow/ModeHelpWindow.cs:44
msgid "Press [ESC] to cancel this operation."
-msgstr ""
+msgstr "Щоб ÑкаÑувати цю операцію, натиÑніть [ESC]."
#: ../src/addins/ILAsmBinding/ILAsmConsoleProject.xpt.xml:0
#: ../src/addins/VBNetBinding/templates/VBConsoleApplicationProject.xpt.xml:0
@@ -8274,11 +8273,11 @@ msgstr "_Журнал"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:17
msgid "_Review and Commit"
-msgstr "ПереглÑнути Ñ– надіÑлати"
+msgstr "ПереглÑнути Ñ– подати"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:17
msgid "_Review Solution and Commit"
-msgstr "ПереглÑнути _Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ Ñ– надіÑлати"
+msgstr "ПереглÑнути _Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ Ñ– подати"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:17
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:41
@@ -8355,7 +8354,7 @@ msgstr "К_ÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:25
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:26
msgid "Commit Message Style"
-msgstr "Стиль Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ"
+msgstr "Стиль Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ñ–"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogView.cs:2
msgid "Log"
@@ -8373,11 +8372,11 @@ msgstr "Ðе вдалоÑÑŒ виконати команду ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:22
msgid "Commit..."
-msgstr "ДодаваннÑ..."
+msgstr "ПодаваннÑ..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:22
msgid "Revert"
-msgstr "Відновити"
+msgstr "Відкотити"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:22
msgid "Show Remote Status"
@@ -8395,7 +8394,7 @@ msgstr ""
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:35
msgid "Commit message:"
-msgstr "Додати повідомленнÑ:"
+msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ñ–:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:55
msgid "Create Patch"
@@ -8437,15 +8436,15 @@ msgstr "Ðемає файлів, змінених локально або від
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:97
msgid "Commit message for file '{0}':"
-msgstr "Додати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ñƒ '{0}':"
+msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ñ– Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ñƒ '{0}':"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:97
msgid "Commit message (multiple selection):"
-msgstr "Додати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ (вибрано декілька файлів):"
+msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ñ– (вибрано декілька файлів):"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:117
msgid "Some of the files in this commit do not have ChangeLog messages."
-msgstr ""
+msgstr "ДеÑкі з файлів у цій подачі не мають повідомлень у журналі змін."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:117
msgid "You may have forgotten to unselect items."
@@ -8479,15 +8478,15 @@ msgstr "Ðе вдалоÑÑŒ отримати інформацію про відÐ
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs:16
msgid "You are trying to commit files which have unsaved changes."
-msgstr "Ви намагаєтеÑÑŒ надіÑлати файли, Ñкі мають незбережені зміни."
+msgstr "Ви намагаєтеÑÑŒ подати файли, Ñкі мають незбережені зміни."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs:16
msgid "Do you want to save the changes before committing?"
-msgstr "Бажаєте зберегти зміни перед надÑиланнÑм?"
+msgstr "Бажаєте зберегти зміни перед подаваннÑм?"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/CommitDialog.cs:19
msgid "Some files could not be saved. Commit operation aborted"
-msgstr "ДеÑкі файли неможливо зберегти. Операцію надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾"
+msgstr "ДеÑкі файли неможливо зберегти. Операцію Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Dialogs/SelectRepositoryDialog.cs:3
msgid "Repository"
@@ -8553,7 +8552,7 @@ msgstr "Вилучити файл"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs:11
msgid "Revert File"
-msgstr ""
+msgstr "Повернути файл"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs:11
msgid "Lock File"
@@ -8565,11 +8564,11 @@ msgstr "Розблокувати файл"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitCommand.cs:4
msgid "Committing {0}..."
-msgstr "ÐадÑÐ¸Ð»Ð°Ð½Ð½Ñ {0}..."
+msgstr "ÐŸÐ¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ {0}..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitCommand.cs:4
msgid "Commit operation completed."
-msgstr "Операцію надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¾."
+msgstr "Операцію Ð¿Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¾."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/PublishCommand.cs:6
msgid "Initial check-in of module {0}"
@@ -8601,12 +8600,12 @@ msgstr "Ð’ÑÑ– зміни, зроблені у вибраних файлах, б
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertCommand.cs:6
msgid "Reverting ..."
-msgstr "СкаÑуваннÑ..."
+msgstr "ВідкочуваннÑ..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertCommand.cs:6
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs:6
msgid "Revert operation completed."
-msgstr "Операцію ÑкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¾."
+msgstr "Операцію відкоту завершено."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UpdateCommand.cs:2
msgid "Updating..."
@@ -8725,19 +8724,19 @@ msgstr "<small><span color='red'>Ðеправильний URL</span></small>"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs:2
msgid "Commit Files"
-msgstr "ÐадіÑлати зміни"
+msgstr "Подати зміни"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs:2
msgid "The following files will be committed:"
-msgstr "ÐадіÑлано буде такі файли:"
+msgstr "Буде подано такі файли:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs:2
msgid "Commit _message:"
-msgstr "ÐадіÑлати _повідомленнÑ:"
+msgstr "_ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ñ–:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs:2
msgid "1/1"
-msgstr ""
+msgstr "1/1"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs:2
msgid "C_ommit"
@@ -8748,26 +8747,30 @@ msgid ""
"Are you sure you want to revert the selected resources to the revision "
"specified (all local changes will be discarded)?"
msgstr ""
+"Справді повернути вказану ревізію Ð´Ð»Ñ Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¸Ñ… реÑурÑів "
+"(уÑÑ– локальні зміни буде втрачено)?"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs:3
msgid ""
"Are you sure you want to revert the changes from the revision selected on "
"these resources?"
-msgstr ""
+msgstr "Справді бажаєте повернути вибрану ревізію Ð´Ð»Ñ Ñ†Ð¸Ñ… реÑурÑів?"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs:3
msgid ""
"Note: The reversion will occur in your working copy, so you will still need "
"to perform a commit to complete it."
msgstr ""
+"Примітка: зміни з’ÑвлÑÑ‚ÑŒÑÑ Ñƒ вашій робочій копії, тому Ð´Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ "
+"потрібно буде подати їх."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs:5
msgid "Reverting to revision {0}..."
-msgstr "ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ верÑÑ–Ñ— {0}..."
+msgstr "Відкіт до ревізії {0}..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/RevertRevisionsCommands.cs:5
msgid "Reverting revision {0}..."
-msgstr ""
+msgstr "ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ñ€ÐµÐ²Ñ–Ð·Ñ–Ñ— {0}..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/LockCommand.cs:3
msgid "Locking..."
@@ -8856,7 +8859,7 @@ msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ñторії"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/MergeView.cs:3
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.MergeDialog.cs:2
msgid "Merge"
-msgstr "Об'єднати"
+msgstr "ЗлиттÑ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/MergeWidget.cs:8
msgid "My"
@@ -8872,7 +8875,7 @@ msgstr "Їхні"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/EditorCompareWidgetBase.cs:69
msgid "Revert this change"
-msgstr ""
+msgstr "Відкотити цю зміну"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/DiffView.cs:3
msgid "Changes"
@@ -8905,7 +8908,7 @@ msgstr "(робоча копіÑ)"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/DiffWidget.cs:3
msgid "(base)"
-msgstr ""
+msgstr "(базовий)"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/DiffWidget.cs:3
msgid "(revision {0})"
@@ -8939,7 +8942,7 @@ msgstr "Ñторінка2"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs:5
msgid "Revert changes from this revision"
-msgstr ""
+msgstr "Відкотити зміни до цієї ревізії"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs:6
msgid "Revert to this revision"
@@ -8963,7 +8966,7 @@ msgstr "Ðвтор"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs:10
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitSelectRevisionDialog.cs:97
msgid "Revision"
-msgstr "ВерÑÑ–Ñ"
+msgstr "РевізіÑ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs:11
msgid "Operation"
@@ -9146,7 +9149,7 @@ msgstr "Завжди приймати цей Ñертифікат"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/MonoDevelop.VersionControl.Subversion.Gui.SslServerTrustDialog.cs:1
msgid "Accept this certificate temporarily for this session"
-msgstr "ПрийнÑти цей Ñертифікат на Ñ‡Ð°Ñ Ñ†Ñ–Ñ”Ñ— ÑеÑÑ–Ñ—"
+msgstr "ПрийнÑти цей Ñертифікат на Ñ‡Ð°Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ÑеанÑу"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/MonoDevelop.VersionControl.Subversion.Gui.SslServerTrustDialog.cs:1
msgid "Do not accept this certificate and do not connect to this repository"
@@ -9154,19 +9157,18 @@ msgstr "Ðе приймати цього Ñертифікату Ñ– не з'єдÐ
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/MonoDevelop.VersionControl.Subversion.Gui.UserPasswordDialog.cs:1
msgid "Subversion"
-msgstr "SVN"
+msgstr "Subversion"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/MonoDevelop.VersionControl.Subversion.Gui.UserPasswordDialog.cs:1
msgid ""
"<b>User credentials are required to access the Subversion repository.</b>"
msgstr ""
-"<b>Ð”Ð»Ñ Ð´Ð¾Ñтупу до Ñховища SVN необхідно вказати реєÑтраційні дані "
+"<b>Ð”Ð»Ñ Ð´Ð¾Ñтупу до Ñховища Subversion необхідно вказати реєÑтраційні дані "
"кориÑтувача.</b>"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.Gui/WorkingCopyFormatDialog.cs:1
-#, fuzzy
msgid "Upgrade working copy"
-msgstr "робоча копіÑ"
+msgstr "Оновити робочу копію"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.Gui/WorkingCopyFormatDialog.cs:1
msgid "Disable version control"
@@ -9174,22 +9176,23 @@ msgstr "Вимкнути ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.Gui/WorkingCopyFormatDialog.cs:2
msgid "The subversion working copy format is too old."
-msgstr ""
+msgstr "Формат робочої копії Subversion занадто Ñтарий."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.Gui/WorkingCopyFormatDialog.cs:2
msgid ""
"Would you like to upgrade the working copy or disable subversion integration "
"for this solution?"
msgstr ""
+"Бажаєте оновити робочу копію чи вимкнути Ñ–Ð½Ñ‚ÐµÐ³Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Subversion "
+"Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ рішеннÑ?"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.Gui/WorkingCopyFormatDialog.cs:2
msgid "The subversion working copy format is too new."
-msgstr ""
+msgstr "Формат робочої копії Subversion занадто новий."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.Gui/WorkingCopyFormatDialog.cs:2
-#, fuzzy
msgid "Subversion integration will be disabled for this solution."
-msgstr "Вимкнути ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ рішеннÑ"
+msgstr "Ð†Ð½Ñ‚ÐµÐ³Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Subversion Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ вимкнено."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:83
msgid "Updating"
@@ -9201,7 +9204,7 @@ msgstr "Ð’Ð¸Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð· '{0}'"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:95
msgid "You have uncommitted changes"
-msgstr "У Ð²Ð°Ñ Ñ” не надіÑлані зміни"
+msgstr "У Ð²Ð°Ñ Ñ” не подані зміни"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:95
msgid "What do you want to do?"
@@ -9217,7 +9220,7 @@ msgstr "Ð’Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… змін"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:103
msgid "Rebasing"
-msgstr "ПеренеÑеннÑ"
+msgstr "ПеребазуваннÑ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:109
msgid "Merging"
@@ -9225,11 +9228,11 @@ msgstr "ЗлиттÑ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:128
msgid "Reverting files"
-msgstr ""
+msgstr "Відкіт файлів"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:153
msgid "Push operation successfully completed."
-msgstr ""
+msgstr "ÐадÑÐ¸Ð»Ð°Ð½Ð½Ñ ÑƒÑпішно завершено."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:176
msgid "Switching to branch {0}"
@@ -9240,27 +9243,25 @@ msgid "Updating solution"
msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/Commands.cs:14
-#, fuzzy
msgid "Changes successfully stashed"
-msgstr "Мову '{0}' уÑпішно додано."
+msgstr "Зміни уÑпішно Ñховано"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/Commands.cs:14
msgid "No changes were available to stash"
-msgstr ""
+msgstr "Ðемає змін, доÑтупних Ð´Ð»Ñ Ñ…Ð¾Ð²Ð°Ð½Ð½Ñ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/Commands.cs:16
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/Commands.cs:18
-#, fuzzy
msgid "Stash operation failed"
-msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð²ÑÑ Ð½ÐµÐ²Ð´Ð°Ñ‡ÐµÑŽ."
+msgstr "Сховати не вдалоÑÑ."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.PushDialog.cs:1
msgid "Push to Repository"
-msgstr ""
+msgstr "ÐадіÑлати у Ñховище"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.PushDialog.cs:1
msgid "Push to:"
-msgstr ""
+msgstr "ÐадіÑлати у:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.PushDialog.cs:1
msgid "Branch:"
@@ -9268,15 +9269,15 @@ msgstr "Гілка:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.PushDialog.cs:1
msgid "Push Changes"
-msgstr ""
+msgstr "ÐадіÑлати зміни"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs:7
msgid "Pushing changes..."
-msgstr ""
+msgstr "ÐадÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs:9
msgid "Rebasing branch '{0}'..."
-msgstr "ПеренеÑÐµÐ½Ð½Ñ Ð³Ñ–Ð»ÐºÐ¸ '{0}'..."
+msgstr "ÐŸÐµÑ€ÐµÐ±Ð°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ñ–Ð»ÐºÐ¸ '{0}'..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs:9
msgid "Merging branch '{0}'..."
@@ -9284,15 +9285,15 @@ msgstr "Ð—Ð»Ð¸Ñ‚Ñ‚Ñ Ð³Ñ–Ð»ÐºÐ¸ '{0}'..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs:12
msgid "Stash operation failed."
-msgstr ""
+msgstr "Сховати не вдалоÑÑ."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs:13
msgid "Stash applied with conflicts"
-msgstr ""
+msgstr "Сховано з конфліктами"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs:13
msgid "Stash successfully applied"
-msgstr ""
+msgstr "Сховано уÑпішно"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.UserInfoConflictDialog.cs:1
msgid "User Information Conflict"
@@ -9304,7 +9305,7 @@ msgid ""
"user information configured in MonoDevelop. Which user information do you "
"want to use?"
msgstr ""
-"Ім'Ñ Ñ‚Ð° електронна адреÑа, вказані Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð°Ñ€Ñ–ÑŽ Git, не відповідають "
+"Ім'Ñ Ñ‚Ð° електронна адреÑа, вказані Ð´Ð»Ñ Ñховища Git, не відповідають "
"інформації про кориÑтувача, вказаній у MonoDevelop. Які дані про кориÑтувача "
"викориÑтати?"
@@ -9334,7 +9335,7 @@ msgstr "ПропуÑтити латку"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.ConflictResolutionDialog.cs:1
msgid "Accept Merge"
-msgstr ""
+msgstr "ПрийнÑти злиттÑ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/ConflictResolutionDialog.cs:4
msgid "A merge conflict has been detected in file <b>{0}</b>"
@@ -9346,7 +9347,7 @@ msgstr "Гілка"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitConfigurationDialog.cs:8
msgid "Tracking"
-msgstr ""
+msgstr "СтеженнÑ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitConfigurationDialog.cs:19
msgid "Tag"
@@ -9389,7 +9390,7 @@ msgstr "Гілки"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitConfigurationDialog.cs:2
msgid "_Push"
-msgstr ""
+msgstr "_ÐадіÑлати"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitConfigurationDialog.cs:2
msgid "Tags"
@@ -9397,7 +9398,7 @@ msgstr "Теги"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitConfigurationDialog.cs:2
msgid "Track in Local Branch"
-msgstr ""
+msgstr "Стежити в локальній гілці"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitConfigurationDialog.cs:2
msgid "Fetch"
@@ -9427,7 +9428,7 @@ msgstr "ВлаÑтивоÑÑ‚Ñ– гілки"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.EditBranchDialog.cs:2
msgid "Track a branch:"
-msgstr ""
+msgstr "Стежити за гілкою:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.EditRemoteDialog.cs:2
msgid "Remote Source"
@@ -9435,7 +9436,7 @@ msgstr "Віддалене джерело"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.EditRemoteDialog.cs:2
msgid "Push Url:"
-msgstr ""
+msgstr "ÐдреÑа надÑиланнÑ:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.EditRemoteDialog.cs:2
msgid "Import tags"
@@ -9447,31 +9448,31 @@ msgstr "Виберіть гілку Ð´Ð»Ñ Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð· поточною гі
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.MergeDialog.cs:2
msgid "Stash/unstash local changes before/after the merge"
-msgstr ""
+msgstr "Сховати/розкрити локальні зміни перед/піÑÐ»Ñ Ð·Ð»Ð¸Ñ‚Ñ‚Ñ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/MergeDialog.cs:9
msgid "Select the branch to which to rebase:"
-msgstr "Виберіть гілку, в Ñку перенеÑти:"
+msgstr "Виберіть гілку, в Ñку перебазувати:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/MergeDialog.cs:9
msgid "Stash/unstash local changes before/after rebasing"
-msgstr ""
+msgstr "Сховати/розкрити локальні зміни перед/піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ±Ð°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/MergeDialog.cs:9
msgid "Rebase"
-msgstr "ПеренеÑеннÑ"
+msgstr "ПеребазуваннÑ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/MergeDialog.cs:21
msgid "The branch <b>{1}</b> will be rebased to the branch <b>{0}</b>."
-msgstr "Гілка <b>{1}</b> буде перенеÑена у гілку <b>{0}</b>."
+msgstr "Гілку <b>{1}</b> буде перебазовано у гілку <b>{0}</b>."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/MergeDialog.cs:21
msgid "The branch <b>{1}</b> will be rebased to the tag <b>{0}</b>."
-msgstr "Гілка <b>{1}</b> буде перенеÑена до тегу <b>{0}</b>."
+msgstr "Гілку <b>{1}</b> буде перебазовано до тегу <b>{0}</b>."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/MergeDialog.cs:21
msgid "The branch <b>{1}</b> will be rebased to the remote branch <b>{0}</b>."
-msgstr "Гілка <b>{1}</b> буде перенеÑена до віддаленої гілки <b>{0}</b>."
+msgstr "Гілку <b>{1}</b> буде перебазовано до віддаленої гілки <b>{0}</b>."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/MergeDialog.cs:21
msgid "The branch <b>{0}</b> will be merged into the branch <b>{1}</b>."
@@ -9504,7 +9505,7 @@ msgstr ""
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitOptionsPanelWidget.cs:1
msgid "Automatically stash/unstash changes when switching branches"
-msgstr ""
+msgstr "Ðвтоматично Ñховати/розкрити зміни при перемиканні гілок"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitOptionsPanelWidget.cs:1
msgid "Behavior of the Update command:"
@@ -9512,11 +9513,11 @@ msgstr "Поведінка команди оновленнÑ:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitOptionsPanelWidget.cs:1
msgid "Use the Rebase option for merging"
-msgstr "СкориÑтайтеÑÑŒ параметром \"ПеренеÑеннÑ\" Ð´Ð»Ñ Ð·Ð»Ð¸Ñ‚Ñ‚Ñ"
+msgstr "СкориÑтайтеÑÑŒ параметром \"ПеребазуваннÑ\" Ð´Ð»Ñ Ð·Ð»Ð¸Ñ‚Ñ‚Ñ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitOptionsPanelWidget.cs:1
msgid "Automatically stash/unstash local changes"
-msgstr ""
+msgstr "Ðвтоматично Ñховати/розкрити локальні зміни"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/StashManagerDialog.cs:5
msgid "Date/Time"
@@ -9529,7 +9530,7 @@ msgstr "Коментар"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/StashManagerDialog.cs:7
msgid "Temporary stash created by {0}"
-msgstr ""
+msgstr "ТимчаÑовий Ñховок Ñтворено {0}"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/StashManagerDialog.cs:7
msgid "Local changes of branch '{0}'"
@@ -9537,7 +9538,7 @@ msgstr "Локальні зміни гілки '{0}'"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.StashManagerDialog.cs:2
msgid "Stash Manager"
-msgstr ""
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñховками"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.StashManagerDialog.cs:2
msgid "Apply and Remove"
@@ -9549,7 +9550,7 @@ msgstr "Перетворити на гілку"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.NewStashDialog.cs:1
msgid "Stash"
-msgstr ""
+msgstr "Сховати"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.NewStashDialog.cs:1
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
@@ -9558,11 +9559,11 @@ msgstr "Коментар:"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitCommitDialogExtensionWidget.cs:1
msgid "Push changes to remote repository after commit"
-msgstr ""
+msgstr "ПіÑÐ»Ñ Ð¿Ð¾Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð´Ñ–Ñлати зміни до віддаленого Ñховища"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitCommitDialogExtensionWidget.cs:1
msgid "Override the commit author"
-msgstr ""
+msgstr "ЗаміÑтити автора подачі"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitCommitDialogExtensionWidget.cs:1
msgid "Author e-mail:"
@@ -9585,6 +9586,8 @@ msgid ""
"When using Git, it is not recommended to surpass the character count of {0} "
"in the first line of the commit message"
msgstr ""
+"При кориÑтуванні Git не рекомендуєтьÑÑ, щоб чиÑло Ñимволів у першому Ñ€Ñдку "
+"Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ð°Ñ‡Ñ– перевищувало {0}"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.UserGitConfigDialog.cs:49
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.SshFuseFileCopyConfigurationEditorWidget.cs:1
@@ -9609,7 +9612,7 @@ msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‚ÐµÐ³Ñƒ"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:2
msgid "Push Changes..."
-msgstr ""
+msgstr "ÐадіÑлати зміни..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:2
msgid "Manage Branches and Remotes"
@@ -9617,23 +9620,23 @@ msgstr ""
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:2
msgid "Merge Branch..."
-msgstr ""
+msgstr "Приєднати гілку..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:2
msgid "Rebase to Branch..."
-msgstr "ПеренеÑÐµÐ½Ð½Ñ Ð´Ð¾ гілки..."
+msgstr "ÐŸÐµÑ€ÐµÐ±Ð°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ гілки..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:2
msgid "Stash..."
-msgstr ""
+msgstr "Сховати..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:2
msgid "Pop stash"
-msgstr ""
+msgstr "Забрати зі Ñховку"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:2
msgid "Manage stashes"
-msgstr ""
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñховками"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:8
msgid "Git"
@@ -9680,12 +9683,12 @@ msgstr "Відновлено '{0}'"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs:150
#: ../src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs:742
msgid "Reverted '{0}'"
-msgstr "Повернуто '{0}'"
+msgstr "Відкочено '{0}'"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs:150
#: ../src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs:745
msgid "Failed to revert '{0}' -- try updating instead."
-msgstr "Ðе вдалоÑÑŒ повернути '{0}' -- Ñпробуйте оновити."
+msgstr "Ðе вдалоÑÑŒ відкотити '{0}' -- Ñпробуйте оновити."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs:150
#: ../src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs:748
@@ -10545,11 +10548,11 @@ msgstr "Тип зневадженнÑ:"
#: ../src/addins/VBNetBinding/gtk-gui/MonoDevelop.VBNetBinding.ConfigurationOptionsPanelWidget.cs:1
msgid "Define DEBUG:"
-msgstr ""
+msgstr "Визначити DEBUG:"
#: ../src/addins/VBNetBinding/gtk-gui/MonoDevelop.VBNetBinding.ConfigurationOptionsPanelWidget.cs:1
msgid "Define TRACE:"
-msgstr ""
+msgstr "Визначити TRACE:"
#: ../src/addins/VBNetBinding/gtk-gui/MonoDevelop.VBNetBinding.ConfigurationOptionsPanelWidget.cs:1
msgid "Optimize:"
@@ -10586,7 +10589,7 @@ msgstr "Генерувати документацію XML:"
#: ../src/addins/VBNetBinding/gtk-gui/MonoDevelop.VBNetBinding.ConfigurationOptionsPanelWidget.cs:1
msgid "Remove integer checks:"
-msgstr ""
+msgstr "Вилучити перевірки ціліÑноÑÑ‚Ñ–:"
#: ../src/addins/VBNetBinding/gtk-gui/MonoDevelop.VBNetBinding.ConfigurationOptionsPanelWidget.cs:1
msgid "Define constants:"
@@ -10708,7 +10711,7 @@ msgstr ""
msgid ""
"Some of the projects require that files have comments when they are "
"committed."
-msgstr "ДеÑкі проекти вимагають, щоб файли, що надÑилаютьÑÑ, мали коментарі."
+msgstr "ДеÑкі проекти вимагають, щоб файли, що подаютьÑÑ, мали коментарі."
#: ../src/addins/ChangeLogAddIn/CommitDialogExtensionWidget.cs:2
msgid "Click on the 'Details' button for more info."
@@ -10781,6 +10784,10 @@ msgid ""
"the commit directory). If none is found, a warning message will be shown. "
"ChangeLog files will never be automatically created."
msgstr ""
+"<b>Доповнити найближчий журнал змін</b>\n"
+"Буде доповнено журнал змін, найближчий у дереві тек (нижче теки подачі). "
+"Якщо такого не знайдено, буде виведено попередженнÑ. Файли журналів "
+"змін автоматично не ÑтворюватимутьÑÑ."
#: ../src/addins/ChangeLogAddIn/gtk-gui/MonoDevelop.ChangeLogAddIn.ProjectOptionPanelWidget.cs:1
msgid "One ChangeLog in the project root directory"
@@ -10811,7 +10818,7 @@ msgstr "Інтегрувати з заÑобом ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ _верÑÑ–Ñ
#: ../src/addins/ChangeLogAddIn/gtk-gui/MonoDevelop.ChangeLogAddIn.ProjectOptionPanelWidget.cs:1
msgid "_Require ChangeLog entries for all files when committing"
-msgstr ""
+msgstr "При подаванні вимагати Ð´Ð»Ñ Ð²ÑÑ–Ñ… файлів _запиÑів у журналі змін"
#: ../src/addins/ChangeLogAddIn/gtk-gui/MonoDevelop.ChangeLogAddIn.ProjectOptionPanelWidget.cs:1
msgid "ChangeLog Generation"
@@ -10951,7 +10958,7 @@ msgstr "ID реÑурÑу"
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs:7
msgid "Copy to output directory"
-msgstr "Скопіювати до вихідної теки"
+msgstr "ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ вихідної теки"
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs:7
msgid "Custom Tool"
@@ -11986,7 +11993,7 @@ msgstr "Оновити веб-поÑиланнÑ"
#: ../src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.addin.xml:3
msgid "Update Web Reference"
-msgstr "Оновити веб-поÑиланнÑ"
+msgstr "Оновити веб-поÑÐ¸Ð»Ð°Ð½Ð½Ñ (одне)"
#: ../src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.addin.xml:3
msgid "Delete All"
@@ -12021,9 +12028,8 @@ msgid "S_how Code Generation Window"
msgstr "Показати вікно _Ð³ÐµÐ½ÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ"
#: ../src/addins/CSharpBinding/CSharpBinding.addin.xml:3
-#, fuzzy
msgid "_Find reference usages"
-msgstr "_Знайти поÑиланнÑ"
+msgstr "_Знайти заÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑиланнÑ"
#: ../src/addins/CSharpBinding/CSharpBinding.addin.xml:3
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/ExtractMethod/ExtractMethodCodeRefactoringProvider.cs:8
@@ -12031,7 +12037,6 @@ msgid "Extract Method"
msgstr "Видобути метод"
#: ../src/addins/CSharpBinding/CSharpBinding.addin.xml:3
-#, fuzzy
msgid "Extracts a method"
msgstr "Видобути метод"
@@ -12102,7 +12107,6 @@ msgstr ""
"Phone, Xamarin.iOS Ñ– Xamarin.Android."
#: ../src/addins/CSharpBinding/templates/SharedAssetsProject.xpt.xml:0
-#, fuzzy
msgid "Shared Project"
msgstr "Спільний об'єкт"
@@ -12365,7 +12369,6 @@ msgid "Place members in anonymous types on new line"
msgstr "ПоміÑтити члени в анонімних типах у новому Ñ€Ñдку"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:17
-#, fuzzy
msgid "Place query expression clauses on new line"
msgstr "ПоміÑтити ініціалізатори маÑиву у новому Ñ€Ñдку"
@@ -12376,7 +12379,7 @@ msgstr "Задати пропуÑки Ð´Ð»Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½ÑŒ методів"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:25
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:27
msgid "Insert space between method name and its opening parenthesis"
-msgstr ""
+msgstr "Ð’Ñтавити пропуÑк між назвою методу Ñ– відкритою дужкою"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:26
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:27
@@ -12386,7 +12389,7 @@ msgstr ""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:26
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:27
msgid "Insert space within empty argument list parentheses"
-msgstr ""
+msgstr "Ð’Ñтавити пропуÑк між дужками порожнього ÑпиÑку аргументів"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:27
msgid "Set spacing for method calls"
@@ -12413,14 +12416,12 @@ msgid "Insert space within parentheses of control flow statements"
msgstr ""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:30
-#, fuzzy
msgid "Insert space after casts"
-msgstr "Ð’Ñтавити розрив Ñ€Ñдка піÑÐ»Ñ ÐºÑƒÑ€Ñора"
+msgstr ""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:30
-#, fuzzy
msgid "Ignore spaces in declaration statements"
-msgstr "Порожнє Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñтору назв Ñ” зайвим"
+msgstr "Ðехтувати пропуÑками в інÑтрукціÑÑ… оголошеннÑ"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:31
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32
@@ -12433,7 +12434,7 @@ msgstr "Ð’Ñтавити пропуÑк перед відкритою квадр
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:31
msgid "Insert space within empty square brackets"
-msgstr ""
+msgstr "Ð’Ñтавити пропуÑк між порожніми квадратними дужками"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:31
msgid "Insert space within square brackets"
@@ -12453,7 +12454,7 @@ msgstr "Ð’Ñтавити пропуÑк піÑÐ»Ñ ÐºÑ€Ð°Ð¿ÐºÐ¸"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32
msgid "Insert space after semicolon in \"for\" statement"
-msgstr ""
+msgstr "Ð’Ñтавити пропуÑк піÑÐ»Ñ ÐºÑ€Ð°Ð¿ÐºÐ¸ з комою в інÑтрукції \"for\""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32
msgid "Insert space before colon for base or interface in type declaration"
@@ -12469,11 +12470,11 @@ msgstr "Ð’Ñтавити пропуÑк перед крапкою"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32
msgid "Insert space before semicolon in \"for\" statement"
-msgstr ""
+msgstr "Ð’Ñтавити пропуÑк перед крапкою з комою в інÑтрукції \"for\""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:33
msgid "Set spacing for operators"
-msgstr ""
+msgstr "Задати відÑтупи Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ñ–Ð²"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:44
msgid "Qualify member access with 'this'"
@@ -12484,9 +12485,8 @@ msgid "Use 'var' when generating locals"
msgstr ""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:54
-#, fuzzy
msgid "Leave block on single line"
-msgstr "ПоміÑтити 'else' у новому Ñ€Ñдку"
+msgstr "Залишити блок в одному Ñ€Ñдку"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:54
msgid "Leave statements and member declarations on the same line"
@@ -12531,7 +12531,7 @@ msgstr "Виберіть члени, що будуть заміщені."
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/PropertyGenerator.cs:2
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ReadonlyPropertyGenerator.cs:2
msgid "Select members which should be exposed."
-msgstr ""
+msgstr "Виберіть члени, Ñкі будуть відкриті."
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ToStringGenerator.cs:3
msgid "ToString() implementation"
@@ -12611,7 +12611,7 @@ msgstr "Реалізувати необхідні члени протоколу"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs:15
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynParameterHintingFactory.cs:13
msgid "Extension Method from"
-msgstr ""
+msgstr "Розширений метод з"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynParameterHintingFactory.cs:17
msgid "Parameter"
@@ -12667,11 +12667,11 @@ msgstr "Методи"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Parser/CSharpParsedDocument.cs:26
msgid "NotImplementedException({0}) thrown."
-msgstr ""
+msgstr "Кинуто NotImplementedException({0})."
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Parser/CSharpParsedDocument.cs:26
msgid "NotImplementedException thrown."
-msgstr ""
+msgstr "Кинуто NotImplementedException."
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ImportSymbolCompletionData.cs:8
msgid "(from '{0}')"
@@ -12693,15 +12693,13 @@ msgstr ""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/RefactoryCommands.cs:10
#: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs:64
-#, fuzzy
msgid "_Suppress with file"
-msgstr "Замінити вираз на 'false'"
+msgstr ""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/RefactoryCommands.cs:11
#: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs:64
-#, fuzzy
msgid "_Configure Rule"
-msgstr "Конфігурувати"
+msgstr "Правило _конфігуруваннÑ"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/RefactoryCommands.cs:13
#: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs:67
@@ -12750,9 +12748,8 @@ msgid "Implement Abstract Class"
msgstr "Реалізувати абÑтрактний rkfc"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/InlineTemporary/InlineTemporaryCodeRefactoringProvider.cs:12
-#, fuzzy
msgid "Inline temporary variable"
-msgstr "Локальна змінна inline"
+msgstr "ТимчаÑова змінна inline"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/InlineTemporary/InlineTemporaryCodeRefactoringProvider.cs:21
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/InlineTemporary/InlineTemporaryCodeRefactoringProvider.cs:98
@@ -12760,9 +12757,8 @@ msgid "Conflict(s) detected."
msgstr ""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/ExtractMethod/ExtractMethodCodeRefactoringProvider.cs:8
-#, fuzzy
msgid "Extract Method + Local"
-msgstr "Видобути метод"
+msgstr "Видобути метод + локальні"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/SimplifyTypeNames/SimplifyTypeNamesCodeFixProvider.cs:11
msgid "Simplify name '{0}'"
@@ -12778,26 +12774,21 @@ msgid "Remove 'this' qualification"
msgstr "Вилучити кваліфікатор 'this'"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/RemoveUnnecessaryUsings/RemoveUnnecessaryUsingsCodeFixProvider.cs:7
-#, fuzzy
msgid "Remove Unnecessary Usings"
-msgstr "Вилучити вираз"
+msgstr "Вилучити зайві using"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/RemoveUnnecessaryCast/RemoveUnnecessaryCastDiagnosticAnalyzerBase.cs:2
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/RemoveUnnecessaryCast/RemoveUnnecessaryCastCodeFixProvider.cs:7
-#, fuzzy
msgid "Remove Unnecessary Cast"
-msgstr "Вилучити оголошеннÑ"
+msgstr "Вилучити зайвий виклик"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/RemoveUnnecessaryCast/RemoveUnnecessaryCastDiagnosticAnalyzerBase.cs:2
-#, fuzzy
msgid "Cast is redundant."
-msgstr "ІнÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð·Ð°Ð¹Ð²Ð°"
+msgstr "Зайвий виклик."
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/RemoveUnnecessaryImports/CSharpRemoveUnnecessaryImportsDiagnosticAnalyzer.cs:2
-#, fuzzy
msgid "Using directive is unnecessary."
-msgstr ""
-"Директива using не викориÑтовуєтьÑÑ Ñƒ коді Ñ– може бути безпечно вилучена."
+msgstr "Директива using не потрібна."
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/SimplifyTypeNames/SimplifyTypeNamesDiagnosticAnalyzerBase.cs:2
msgid "Name can be simplified."
@@ -12838,7 +12829,7 @@ msgstr "Ðазва переліку"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/ConvertToEnum/ConvertToEnumDialog.cs:15
msgid "Warning: This may take a while..."
-msgstr ""
+msgstr "ПопередженнÑ: це триватиме деÑкий чаÑ..."
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionEditRuleDialog.cs:2
msgid "Structs"
@@ -12967,11 +12958,11 @@ msgstr "Ðеобов'Ñзкові префікÑи:"
#: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Diagnostics.InconsistentNaming.NameConventionEditRuleDialog.cs:2
msgid "_Static member and types"
-msgstr ""
+msgstr "_Статичні члени і типи"
#: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Diagnostics.InconsistentNaming.NameConventionEditRuleDialog.cs:2
msgid "_Instance members and locals"
-msgstr ""
+msgstr "_Члени примірника і локальні об'єкти"
#: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Diagnostics.InconsistentNaming.NameConventionEditRuleDialog.cs:2
msgid "Static/Non Static"
@@ -13014,18 +13005,16 @@ msgid "Go to _Base Property"
msgstr "Перейти до _базової влаÑтивоÑÑ‚Ñ–"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs:1
-#, fuzzy
msgid "Go to _Interface Property"
-msgstr "Створити влаÑтивіÑÑ‚ÑŒ"
+msgstr "Перейти до влаÑтивоÑÑ‚Ñ– _інтерфейÑу"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs:1
msgid "Go to _Base Event"
msgstr ""
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs:1
-#, fuzzy
msgid "Go to _Interface Event"
-msgstr "Ðазва інтерфейÑу"
+msgstr "Перейти до події _інтерфейÑу"
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs:1
msgid "Go to _Base Method"
@@ -13306,7 +13295,7 @@ msgstr "РÑдок ініціалізації каталогу має виглÑ
#: ../src/addins/MonoDevelop.Gettext/gtk-gui/MonoDevelop.Gettext.TranslationProjectOptionsDialog.cs:2
msgid "<b>Init String</b>"
-msgstr ""
+msgstr "<b>РÑдок ініціалізації</b>"
#: ../src/addins/MonoDevelop.Gettext/gtk-gui/MonoDevelop.Gettext.TranslationProjectOptionsDialog.cs:2
msgid "Settings"
@@ -13438,7 +13427,7 @@ msgstr "_Фільтр:"
#: ../src/addins/MonoDevelop.Gettext/gtk-gui/MonoDevelop.Gettext.POEditorWidget.cs:2
msgid "Valid"
-msgstr ""
+msgstr "Правильний"
#: ../src/addins/MonoDevelop.Gettext/gtk-gui/MonoDevelop.Gettext.POEditorWidget.cs:2
msgid "_Translated (msgstr):"
@@ -13656,7 +13645,7 @@ msgstr "\\b"
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "Matches a backspace \\u0008 if in a [] character class."
-msgstr ""
+msgstr "Позначає забій \\u0008, Ñкщо в Ñимвольному клаÑÑ– []."
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "\\t"
@@ -13688,7 +13677,7 @@ msgstr "\\f"
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "Matches a form feed \\u000C."
-msgstr ""
+msgstr "Відповідає прокрутці аркуша \\u000C."
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "\\n"
@@ -13728,6 +13717,8 @@ msgid ""
"Matches an ASCII character using hexadecimal representation\n"
"(exactly two digits)."
msgstr ""
+"Відповідає Ñимволу ASCII в шіÑтнадцÑтковому поданні\n"
+"(рівно 2 цифри)."
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "\\cC"
@@ -13738,6 +13729,8 @@ msgid ""
"Matches an ASCII control character;\n"
"for example, \\cC is control-C."
msgstr ""
+"Відповідає керувальному Ñимволу ASCII;\n"
+"наприклад, \\cC це Ctrl-C."
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "\\u0020"
@@ -13748,6 +13741,8 @@ msgid ""
"Matches a Unicode character using hexadecimal representation\n"
"(exactly four digits)."
msgstr ""
+"Відповідає Ñимволу Unicode в шіÑтнадцÑтковому поданні\n"
+"(рівно 4 цифри)."
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "Substitutions"
@@ -14016,6 +14011,9 @@ msgid ""
"the previous match ended. When used with Match.NextMatch(), \n"
"this ensures that matches are all contiguous."
msgstr ""
+"Вказує, що відповідник повинен бути розташований там, де закінчуєтьÑÑ\n"
+"попередній відповідник. При викориÑтанні з Match.NextMatch()\n"
+"це забезпечує, що відповідники розташовані ланцюжком."
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid ""
@@ -14037,7 +14035,7 @@ msgstr ""
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "Quantifiers"
-msgstr "КількіÑÑ‚ÑŒ"
+msgstr "Квантори"
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "*"
@@ -14209,6 +14207,9 @@ msgid ""
"and stores in group name1 the interval between the previously \n"
"defined name2 group and the current group."
msgstr ""
+"Вилучає Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð°Ð½Ñ–ÑˆÐµ визначеної групи назва2 \n"
+"і зберігає у групі назва1 інтервал між раніше визначеною\n"
+"групою назва2 і поточною групою."
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "(?: subexpression)"
@@ -14219,14 +14220,16 @@ msgid ""
"Noncapturing group. \n"
"Does not capture the substring matched by the subexpression."
msgstr ""
+"Ðезахоплювальна група. \n"
+"Ðе захоплює підрÑдок, що відповідає підвиразу."
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "(?imnsx-imnsx: subexpression)"
-msgstr ""
+msgstr "(?imnsx-imnsx: підвираз)"
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "Applies or disables the specified options within the subexpression."
-msgstr ""
+msgstr "Приймає або відкидає задані параметри у підвиразі."
#: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1
msgid "(?= subexpression)"
@@ -14746,7 +14749,7 @@ msgstr "<b>Помилка</b>: {0}"
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs:37
msgid "_Input Methods"
-msgstr ""
+msgstr "_Методи введеннÑ"
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:107
msgid ""
@@ -15228,7 +15231,7 @@ msgstr "Показати лише _звичайні члени"
#: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs:15
msgid "<i>EditorBrowsableState.Always</i>"
-msgstr ""
+msgstr "<i>EditorBrowsableState.Always</i>"
#: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs:15
msgid "Show Normal and _Advanced members"
@@ -15236,7 +15239,7 @@ msgstr ""
#: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs:15
msgid "<i>EditorBrowsableState.Always and EditorBrowsableState.Advanced</i>"
-msgstr ""
+msgstr "<i>EditorBrowsableState.Always Ñ– EditorBrowsableState.Advanced</i>"
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/CompletionCharactersPanel.cs:6
msgid "Complete on space"
@@ -15309,7 +15312,7 @@ msgstr "Показати _завданнÑ"
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:9
msgid "Show _Minimap"
-msgstr ""
+msgstr "Показати _мінікарту"
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:14
msgid "Markers and Rulers"
@@ -15390,9 +15393,8 @@ msgid "Results"
msgstr "Результати"
#: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:58
-#, fuzzy
msgid "Parent"
-msgstr "Круглі дужки"
+msgstr "Предок"
#: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:63
msgid "Searching member..."
@@ -15537,7 +15539,7 @@ msgid ""
"Include the file in deployment in addition to the files included "
"automatically."
msgstr ""
-"Включити файл у розгортаннÑ, додатково до файлів, включенихавтоматично."
+"Включити файл у розгортаннÑ, додатково до файлів, включених автоматично."
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Gui/PropertyProvider.cs:3
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:1
@@ -15804,6 +15806,8 @@ msgid ""
"the source file. You can keep the existing target file, or overwrite it with "
"the source file."
msgstr ""
+"У цільовій теці вже Ñ” файл з такою Ñамою назвою, Ñк джерельний файл. "
+"Можна залишити наÑвний цільовий файл або замінити його джерельним."
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.FileReplaceDialog.cs:1
msgid "Modified:"
@@ -15814,6 +15818,8 @@ msgid ""
"The source file will replace the existing target file if it has been "
"modified more recently."
msgstr ""
+"Якщо джерельний файл змінений пізніше, то він замінить "
+"наÑвний цільовий файл."
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.FileReplaceDialog.cs:1
msgid "Apply this decision to _all files in this operation"
@@ -15972,7 +15978,7 @@ msgstr "ЗаÑіб Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽÐ²Ð°Ð½Ð½Ñ"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Applications like cvs or subversion"
-msgstr "СиÑтеми ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
+msgstr "Програми на зразок CVS чи Subversion"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A translation tool"
@@ -16477,7 +16483,7 @@ msgstr "ЗапуÑк Ñтільничної програми"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/app.desktop.xft.xml:0
msgid "Creates a Desktop Entry file."
-msgstr ""
+msgstr "Створити файл Desktop Entry"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/BasicOptionPanelWidget.cs:2
msgid "Script name not provided"
@@ -18101,11 +18107,11 @@ msgstr "Ðе знайдено веб-Ñервер {0}. ПереконайтеÑÑ
#: ../src/addins/AspNet/Execution/XspParameters.cs:3
msgid "Please enter the password for your private key for the XSP Web Server"
-msgstr ""
+msgstr "Введіть пароль Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ приватного ключа Ð´Ð»Ñ Ð²ÐµÐ±-Ñервера XSP"
#: ../src/addins/AspNet/Execution/XspParameters.cs:3
msgid "XSP Private Key Password"
-msgstr ""
+msgstr "Пароль приватного ключа XSP"
#: ../src/addins/AspNet/Execution/BrowserLauncher.cs:2
msgid "Error launching web browser"
@@ -18137,7 +18143,7 @@ msgstr "IP-адреÑа:"
#: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:7
msgid "(blank = localhost)"
-msgstr ""
+msgstr "(порожнє = localhost)"
#: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:7
msgid "(0 = random)"
@@ -18164,9 +18170,8 @@ msgid "Key type:"
msgstr "Тип ключа:"
#: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:13
-#, fuzzy
msgid "Key file:"
-msgstr "Файли jay"
+msgstr "Ключовий файл:"
#: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:13
msgid "Certificate file:"
@@ -18186,7 +18191,7 @@ msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ ASP.NET Designer..."
#: ../src/addins/AspNet/WebForms/WebFormsEditorExtension.cs:30
msgid "Required for ASP.NET controls.\n"
-msgstr ""
+msgstr "Ðеобхідно Ð´Ð»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñ–Ð² ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ASP.NET.\n"
#: ../src/addins/AspNet/WebForms/WebFormsEditorExtension.cs:30
msgid ""
@@ -18221,7 +18226,7 @@ msgstr "Директива ASP.NET"
#: ../src/addins/AspNet/WebForms/WebFormsEditorExtension.cs:32
msgid "ASP.NET databinding expression"
-msgstr ""
+msgstr "Вираз зв’ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… ASP.NET"
#: ../src/addins/AspNet/WebForms/WebFormsEditorExtension.cs:32
msgid "ASP.NET server-side comment"
@@ -18309,14 +18314,12 @@ msgid "Could not launch ASP.NET web server"
msgstr "Ðе вдалоÑÑŒ запуÑтити веб-Ñервер ASP.NET"
#: ../src/addins/AspNet/Projects/AspNetProjectTemplateWizardPage.cs:33
-#, fuzzy
msgid "Configure your Web project"
-msgstr "Поточний проект"
+msgstr "Сконфігуруйте ваш веб-проект"
#: ../src/addins/AspNet/gtk-gui/MonoDevelop.AspNet.Projects.GtkAspNetProjectTemplateWizardPageWidget.cs:152
-#, fuzzy
msgid "Include Unit Test Project"
-msgstr "Включити в проект"
+msgstr "Включити проект модульного теÑту"
#: ../src/addins/AspNet/gtk-gui/MonoDevelop.AspNet.Projects.GtkAspNetProjectTemplateWizardPageWidget.cs:178
msgid ""
@@ -18554,9 +18557,8 @@ msgstr "Головна Ñторінка з Ñуміжним кодом"
#: ../src/addins/AspNet/Templates/WebForms/WebService-CodeBehind.xft.xml:1
#: ../src/addins/AspNet/Templates/WebForms/WebHandler-Empty.xft.xml:1
#: ../src/addins/AspNet/Templates/WebForms/WebContentForm-CodeBehind.xft.xml:1
-#, fuzzy
msgid "ASP.NET Web Forms"
-msgstr "Створити веб-форму ASP.NET."
+msgstr "ASP.NET Web Forms"
#: ../src/addins/AspNet/Templates/WebForms/MasterPage-CodeBehind.xft.xml:1
msgid "Creates an ASP.NET Master Page with a CodeBehind class."
@@ -18701,19 +18703,16 @@ msgid "Creates an empty ASP.NET Web Project."
msgstr "Створити порожній веб-проект ASP.NET"
#: ../src/addins/AspNet/Templates/Projects/WebFormsProject.xpt.xml:1
-#, fuzzy
msgid "ASP.NET Web Forms Project"
-msgstr "Проект ASP.NET MVC 2"
+msgstr "Проект ASP.NET Web Forms"
#: ../src/addins/AspNet/Templates/Projects/WebFormsProject.xpt.xml:1
-#, fuzzy
msgid "Creates a new ASP.NET Web Forms Project."
-msgstr "Створити веб-форму ASP.NET."
+msgstr "Створити новий проект ASP.NET Web Forms."
#: ../src/addins/AspNet/Templates/GlobalAsax.xft.xml:1
-#, fuzzy
msgid "ASP.NET Global.asax"
-msgstr "ASP.NET MVC 2 Global.asax"
+msgstr "ASP.NET Global.asax"
#: ../src/addins/AspNet/Templates/GlobalAsax.xft.xml:1
msgid "Creates an ASP.NET Global.asax file."
@@ -18728,24 +18727,20 @@ msgid "T4 Templates"
msgstr "Шаблони T4"
#: ../src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelop.TextTemplating.addin.xml:8
-#, fuzzy
msgid "Process T4 Templates..."
-msgstr "Шаблон T4 Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð¾Ñ†ÐµÑора"
+msgstr "Обробка шаблонів T4..."
#: ../src/addins/TextTemplating/MonoDevelop.TextTemplating/MonoDevelop.TextTemplating.addin.xml:8
-#, fuzzy
msgid "Process all T4 templates."
-msgstr "Шаблон T4 Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð¾Ñ†ÐµÑора"
+msgstr "Обробити вÑÑ– шаблони T4."
#: ../src/addins/TextTemplating/MonoDevelop.TextTemplating/GenerateCommandHandler.cs:10
-#, fuzzy
msgid "Process T4 Templates"
-msgstr "Шаблон T4 Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð¾Ñ†ÐµÑора"
+msgstr "Обробити шаблони T4"
#: ../src/addins/TextTemplating/MonoDevelop.TextTemplating/GenerateCommandHandler.cs:11
-#, fuzzy
msgid "Process T4 Template"
-msgstr "Шаблон T4 Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð¾Ñ†ÐµÑора"
+msgstr "Обробити шаблон T4"
#: ../src/addins/TextTemplating/MonoDevelop.TextTemplating/Templates/T4TemplateCSharp.xft.xml:1
msgid "T4 Template"
@@ -18875,6 +18870,8 @@ msgid ""
"The debugger runtime is not responding. You can wait for it to recover, or "
"stop debugging."
msgstr ""
+"Зневаджувач не відповідає. Можна почекати Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ "
+"зупинити зневадженнÑ."
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs:116
msgid "Waiting for debugger to connect..."
@@ -18956,7 +18953,7 @@ msgstr "Розрахунок завершивÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs:23
msgid "< More... (The first {0} items were displayed.) >"
-msgstr ""
+msgstr "< Більше... (Показано перші {0} елементів.) >"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs:31
msgid "Debugging stopped"
@@ -19033,11 +19030,11 @@ msgstr "<b>[Зовнішній код]</b>"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs:77
msgid "A <b>{0}</b> was thrown."
-msgstr ""
+msgstr "Було кинуто <b>{0}</b>."
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs:139
msgid "<b>{0}</b> has been thrown"
-msgstr ""
+msgstr "Було кинуто <b>{0}</b>"
#: ../src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.Viewers.ValueVisualizerDialog.cs:2
msgid "Value Visualizer"
@@ -19146,9 +19143,8 @@ msgid "And the following expression changes"
msgstr "І змінилоÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ виразу"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:60
-#, fuzzy
msgid "Enter location"
-msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð°:"
+msgstr "Введіть розташуваннÑ"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:60
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:63
@@ -19156,17 +19152,16 @@ msgid "File does not exist"
msgstr "Файл не Ñ–Ñнує"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:60
-#, fuzzy
msgid "Missing ':' for line declaration"
-msgstr "Перед оголошеннÑм using:"
+msgstr "Пропущено ':' Ð´Ð»Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ Ñ€Ñдка"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:60
msgid "Line is not a number"
-msgstr ""
+msgstr "РÑдок не Ñ” чиÑлом"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:61
msgid "Column is not a number"
-msgstr ""
+msgstr "Стовпець не Ñ” чиÑлом"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:87
msgid "Trace expression not specified"
@@ -19293,9 +19288,8 @@ msgid "New Function Breakpoint"
msgstr "Ðова контрольна точка функції"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "New Exception Catchpoint"
-msgstr "ТрапивÑÑ Ð²Ð¸Ð½Ñток"
+msgstr "Ðова точка Ð¿ÐµÑ€ÐµÑ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð²Ð¸Ð½Ñтку"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "View Breakpoints"
@@ -19354,14 +19348,12 @@ msgid "Run To Cursor"
msgstr "Виконати до курÑора"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Set Next Statement"
-msgstr "ІнÑтрукції"
+msgstr "Задати наÑтупну інÑтрукцію"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Show Next Statement"
-msgstr "Показати наÑтупне"
+msgstr "Показати наÑтупну інÑтрукцію"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:18
msgid "Debugger"
@@ -19373,14 +19365,12 @@ msgid "Retargeting packages...{0}"
msgstr "ÐŸÐµÑ€ÐµÐ½Ð°Ñ†Ñ–Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð²...{0}"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/AvailablePackagesViewModel.cs:211
-#, fuzzy
msgid "All package sources could not be reached."
-msgstr "Ðе вдалоÑÑŒ перейменувати проект."
+msgstr "Сирці вÑÑ–Ñ… пакетів недоÑÑжні."
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/AvailablePackagesViewModel.cs:217
-#, fuzzy
msgid "Some package sources could not be reached."
-msgstr "Ðе вдалоÑÑŒ перейменувати проект."
+msgstr "Сирці деÑких пакетів недоÑÑжні."
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs:142
msgid "WARNING: {0} Package contains PowerShell scripts which will not be run."
@@ -19417,9 +19407,8 @@ msgid "Messages"
msgstr "ПовідомленнÑ"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:165
-#, fuzzy
msgid "Include Prerelease"
-msgstr "Включно з перевантаженнÑми"
+msgstr ""
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:182
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.AddinManagerDialog.cs:2
@@ -19459,9 +19448,8 @@ msgid "License Agreements"
msgstr "Ліцензійна угода"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.LicenseAcceptanceDialog.cs:36
-#, fuzzy
msgid "The following package requires a click-to-accept license:"
-msgstr "Такі пакунки потрібно вилучити:"
+msgstr "Дані пакунки потребують згоди з ліцензією:"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.LicenseAcceptanceDialog.cs:54
msgid "The following packages require a click-to-accept license:"
@@ -19491,7 +19479,7 @@ msgstr ""
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/PackageSourcesOptionsPanel.cs:134
msgid "Unable to save package source changes.{0}{0}{1}"
-msgstr ""
+msgstr "Ðе вдалоÑÑŒ запиÑати зміни Ñирців пакету.{0}{0}{1}"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/PackageSourcesOptionsPanel.cs:154
msgid "Unable to read or write to \"{0}\"."
@@ -19605,9 +19593,8 @@ msgid "<b>Dependencies</b>"
msgstr "<b>ЗалежноÑÑ‚Ñ–</b>"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:326
-#, fuzzy
msgid "Show pre-release packages"
-msgstr "Вибрані пакети:"
+msgstr ""
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementEventsMonitor.cs:149
msgid ""
@@ -19617,6 +19604,11 @@ msgid ""
"also have license agreements.{2}Using this package and any dependencies "
"constitutes your acceptance of these license agreements."
msgstr ""
+"Пакунок {0} має ліцензійні умови, доÑтупні на {1}{2} Будь лаÑка, ознайомтеÑÑ "
+"з ними Ñ– вилучіть пакунок, Ñкщо ви не погоджуєтеÑÑ Ð· умовами. {2}Перевірте "
+"залежноÑÑ‚Ñ– пакунка від інших, Ñкі можуть мати ліцензійні обмеженнÑ. "
+"{2}КориÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ð¸Ð¼ пакунком та тими, від Ñких він залежить, означає "
+"що ви погодилиÑÑ Ð· цими ліцензійними умовами."
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressMonitorFactory.cs:58
msgid "Package Console"
@@ -21296,7 +21288,7 @@ msgstr "Додати назву аргументу '{0}'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddCatchTypeAction.cs:1
msgid "Add type to general catch clause"
-msgstr ""
+msgstr "Додати тип до загальної Ñекції catch"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddCatchTypeAction.cs:2
msgid "Add type specifier"
@@ -21308,11 +21300,11 @@ msgstr "Додати using"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AutoLinqSumAction.cs:1
msgid "Convert loop to Linq expression"
-msgstr ""
+msgstr "Перетворити цикл на вираз Linq"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AutoLinqSumAction.cs:6
msgid "Convert foreach loop to LINQ expression"
-msgstr ""
+msgstr "Перетворити цикл foreach на вираз LINQ"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ChangeAccessModifierAction.cs:1
msgid "Change the access level of an entity declaration"
@@ -21499,11 +21491,11 @@ msgstr "Копіювати коментарі з інтерфейÑу"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/CreateBackingStoreAction.cs:1
msgid "Create backing store for auto property"
-msgstr ""
+msgstr "Створити допоміжне поле Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ñ— влаÑтивоÑÑ‚Ñ–"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/CreateBackingStoreAction.cs:3
msgid "Create backing store"
-msgstr ""
+msgstr "Створити допоміжне поле"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/CreateChangedEventAction.cs:1
msgid "Create changed event for property"
@@ -21613,7 +21605,7 @@ msgstr "Це - конÑтруктор"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/CS1520MethodMustHaveAReturnTypeAction.cs:6
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS1520MethodMustHaveAReturnTypeCodeFixProvider.cs:3
msgid "This is a void method"
-msgstr ""
+msgstr "Цей метод повертає void"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/DeclareLocalVariableAction.cs:2
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/DeclareLocalVariableAction.cs:6
@@ -21626,7 +21618,7 @@ msgstr "ОголоÑити локальну змінну (замінити '{0}'
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ExtensionMethodInvocationToStaticMethodInvocationAction.cs:1
msgid "Invoke using static method syntax"
-msgstr ""
+msgstr "Виклик за допомогою ÑинтакÑиÑу Ñтатичного методу"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ExtensionMethodInvocationToStaticMethodInvocationAction.cs:2
msgid "Convert to static method call"
@@ -21677,7 +21669,7 @@ msgstr "ПомінÑти аргументи оператора '{0}'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/GenerateGetterAction.cs:2
msgid "Generate getter"
-msgstr ""
+msgstr "Створити getter"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/GenerateGetterAction.cs:2
msgid "Create getter"
@@ -21722,7 +21714,7 @@ msgstr "Явно реалізувати інтерфейÑ"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ImplementNotImplementedProperty.cs:2
msgid "Create a backing field for a not implemented property"
-msgstr ""
+msgstr "Створити допоміжне поле Ð´Ð»Ñ Ð½Ðµ реалізованої влаÑтивоÑÑ‚Ñ–"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ImplementNotImplementedProperty.cs:4
msgid "Implement property"
@@ -21837,7 +21829,7 @@ msgstr "Перетворити на ÑинтакÑÐ¸Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/MergeNestedIfAction.cs:2
msgid "Merge nested 'if'"
-msgstr "Об'єднати вкладені 'if'"
+msgstr "Об'єднати вкладене 'if'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/MergeNestedIfAction.cs:5
msgid "Merge nested 'if's"
@@ -21879,7 +21871,7 @@ msgstr "вÑтавити в 'using'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/RemoveBackingStoreAction.cs:1
msgid "Remove backing store for property"
-msgstr "Вилучити резервне Ñховище Ð´Ð»Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–"
+msgstr "Вилучити допоміжне поле Ð´Ð»Ñ Ð²Ð»Ð°ÑтивоÑÑ‚Ñ–"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/RemoveBackingStoreAction.cs:2
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/Opportunities/ConvertToAutoPropertyIssue.cs:6
@@ -21990,19 +21982,20 @@ msgstr "Замінити на '&='"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/LockThisIssue.cs:2
msgid "Use of lock (this) or MethodImplOptions.Synchronized is discouraged"
msgstr ""
+"Ðебажано викориÑтовувати lock (this) або MethodImplOptions.Synchronized"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/LockThisIssue.cs:5
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/LockThisIssue.cs:12
msgid "Create private locker field"
-msgstr ""
+msgstr "Створити приватне поле блокуваннÑ"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/LockThisIssue.cs:7
msgid "Found [MethodImpl(MethodImplOptions.Synchronized)]"
-msgstr ""
+msgstr "Знайдено [MethodImpl(MethodImplOptions.Synchronized)]"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/LockThisIssue.cs:16
msgid "Found lock (this)"
-msgstr ""
+msgstr "Знайдено lock (this)"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/NegativeRelationalExpressionIssue.cs:2
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/NegativeRelationalExpressionIssue.cs:11
@@ -22016,7 +22009,7 @@ msgstr "Показати NotImplementedExceptions"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/NotImplementedExceptionIssue.cs:3
msgid "NotImplemented exception thrown"
-msgstr ""
+msgstr "Кинуто винÑток NotImplemented"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/RedundantInternalIssue.cs:2
msgid "Remove redundant 'internal' modifier"
@@ -22187,7 +22180,7 @@ msgstr "Замінити '?:' гілкою"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/DoNotCallOverridableMethodsInConstructorIssue.cs:16
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/DoNotCallOverridableMethodsInConstructorAnalyzer.cs:1
msgid "Virtual member call in constructor"
-msgstr ""
+msgstr "Виклик віртуального члена у конÑтрукторі"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/DoNotCallOverridableMethodsInConstructorIssue.cs:16
msgid "Make class '{0}' sealed"
@@ -22195,12 +22188,12 @@ msgstr "Зробити ÐºÐ»Ð°Ñ '{0}' ізольованим (sealed)"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/EmptyGeneralCatchClauseIssue.cs:1
msgid "Empty general catch clause"
-msgstr ""
+msgstr "ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð° ÑÐµÐºÑ†Ñ–Ñ catch"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/EmptyGeneralCatchClauseIssue.cs:5
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/EmptyGeneralCatchClauseAnalyzer.cs:1
msgid "Empty general catch clause suppresses any error"
-msgstr ""
+msgstr "ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð° ÑÐµÐºÑ†Ñ–Ñ catch приховує вÑÑ– помилки"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/EqualExpressionComparisonIssue.cs:1
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/EqualExpressionComparisonIssue.cs:2
@@ -22271,6 +22264,7 @@ msgstr ""
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/OptionalParameterHierarchyMismatchIssue.cs:2
msgid "Mismatch optional parameter value in overridden method"
msgstr ""
+"ÐевідповідніÑÑ‚ÑŒ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ¾Ð±Ð¾Ð²'Ñзкового параметра у методі, що заміщуєтьÑÑ"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/OptionalParameterHierarchyMismatchIssue.cs:12
msgid ""
@@ -22287,7 +22281,7 @@ msgstr "Змінити типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð° {0}"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/OptionalParameterHierarchyMismatchIssue.cs:12
msgid "Parameter {0} has default value in base method '{1}'"
-msgstr ""
+msgstr "Параметр {0} має типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ базовому методі '{1}'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/OptionalParameterHierarchyMismatchIssue.cs:12
msgid "Add default value from base '{0}'"
@@ -22334,12 +22328,12 @@ msgstr "Статичне поле у загальному (generic) типі"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/ThreadStaticAtInstanceFieldIssue.cs:1
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ThreadStaticAtInstanceFieldAnalyzer.cs:1
msgid "[ThreadStatic] doesn't work with instance fields"
-msgstr ""
+msgstr "[ThreadStatic] не працює з полÑми примірника"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/ThreadStaticAtInstanceFieldIssue.cs:4
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ThreadStaticAtInstanceFieldAnalyzer.cs:1
msgid "ThreadStatic does nothing on instance fields"
-msgstr ""
+msgstr "ThreadStatic нічого не робить з полÑми примірника"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/ThreadStaticAtInstanceFieldIssue.cs:5
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ThreadStaticAtInstanceFieldCodeFixProvider.cs:4
@@ -22509,7 +22503,7 @@ msgstr "ЛÑмбда-вираз можна ÑпроÑтити до групи м
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/Opportunities/ConvertClosureToMethodGroupIssue.cs:10
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertClosureToMethodGroupCodeFixProvider.cs:4
msgid "Replace with method group"
-msgstr ""
+msgstr "Замінити групою методів"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/Opportunities/ConvertConditionalTernaryToNullCoalescingIssue.cs:1
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertConditionalTernaryToNullCoalescingAnalyzer.cs:1
@@ -22586,7 +22580,7 @@ msgstr "Виклик Ñтатичного методу через тип-нащÐ
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/AccessToStaticMemberViaDerivedTypeIssue.cs:9
msgid "Use base qualifier"
-msgstr ""
+msgstr "ВикориÑтати кваліфікатор base"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/BaseMemberHasParamsIssue.cs:1
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/BaseMemberHasParamsAnalyzer.cs:1
@@ -22596,7 +22590,7 @@ msgstr "Базовий параметр має модифікатор 'params',
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/BaseMemberHasParamsIssue.cs:3
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/BaseMemberHasParamsAnalyzer.cs:1
msgid "Base method '{0}' has a 'params' modifier"
-msgstr ""
+msgstr "Базовий метод '{0}' має модифікатор 'params'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/BaseMemberHasParamsIssue.cs:3
msgid "Add 'params' modifier"
@@ -22796,7 +22790,7 @@ msgstr "Замінити одиничним викликом Any(...)"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAnyIssue.cs:4
msgid "Redundant Where() call with predicate followed by {0}()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде {0}()"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAnyIssue.cs:4
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAverageIssue.cs:8
@@ -22895,7 +22889,7 @@ msgstr "ВикориÑтати метод 'Any()'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/UseMethodAnyIssue.cs:6
msgid "Use 'Any()' for increased performance."
-msgstr ""
+msgstr "ВикориÑтати 'Any()' Ð´Ð»Ñ Ð¿Ñ–Ð´Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð¸Ð²Ð½Ð¾ÑÑ‚Ñ–."
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/UseMethodAnyIssue.cs:6
msgid "Replace with call to '!Any()'"
@@ -23205,12 +23199,12 @@ msgstr "Вилучити порожній проÑÑ‚Ñ–Ñ€ назв"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/EnumUnderlyingTypeIsIntIssue.cs:1
msgid "Underlying type of enum is int"
-msgstr ""
+msgstr "Базовим типом Ð´Ð»Ñ enum Ñ” int"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/EnumUnderlyingTypeIsIntIssue.cs:6
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/EnumUnderlyingTypeIsIntAnalyzer.cs:1
msgid "Default underlying type of enums is already int"
-msgstr ""
+msgstr "Типовим базовим типом Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑ–Ð² вже Ñ” int"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/EnumUnderlyingTypeIsIntIssue.cs:6
msgid "Remove redundant ': int'"
@@ -23218,7 +23212,7 @@ msgstr "Видалити зайві ': int'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/EnumUnderlyingTypeIsIntIssue.cs:7
msgid "Remove redundant underlying type"
-msgstr ""
+msgstr "Вилучити зайві базові типи"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/LocalVariableNotUsedIssue.cs:2
msgid "Unused local variable"
@@ -23340,7 +23334,7 @@ msgstr "Вилучити зайві виклики методу"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Uncategorized/ExceptionRethrowIssue.cs:3
msgid "The exception is rethrown with explicit usage of the variable"
-msgstr ""
+msgstr "ВинÑток кинуто повторно з Ñвним викориÑтаннÑм змінної"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Uncategorized/ExceptionRethrowIssue.cs:3
msgid "Change to 'throw;'"
@@ -23378,7 +23372,7 @@ msgstr "Додати винÑток до документації XML"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Uncategorized/DontUseLinqWhenItsVerboseAndInefficientIssue.cs:21
msgid "Use of Linq method when there's a better alternative"
-msgstr ""
+msgstr "ВикориÑтати метод Linq, Ñкщо Ñ” краща альтернатива"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Uncategorized/DontUseLinqWhenItsVerboseAndInefficientIssue.cs:21
msgid "Replace method by simpler version"
@@ -24104,11 +24098,11 @@ msgstr "{0}"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/RedundantCatchClauseIssue.cs:1
msgid "Redundant catch clause"
-msgstr "Зайвий пункт 'catch'"
+msgstr "Зайва ÑÐµÐºÑ†Ñ–Ñ catch"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/RedundantCatchClauseIssue.cs:4
msgid "Remove all '{0}' redundant 'catch' clauses"
-msgstr "Вилучити вÑÑ– '{0}' зайві пункти 'catch'"
+msgstr "Вилучити вÑÑ– '{0}' зайві Ñекції 'catch'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/RedundantCatchClauseIssue.cs:4
msgid "Remove 'catch'"
@@ -24116,7 +24110,7 @@ msgstr "Вилучити 'catch'"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/RedundantCatchClauseIssue.cs:4
msgid "Catch clause with a single 'throw' statement is redundant."
-msgstr "Пункт 'catch' з одиничним виразом 'throw' є зайвим"
+msgstr "Ð¡ÐµÐºÑ†Ñ–Ñ catch з одиничним виразом 'throw' Ñ” зайвою"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/RedundantCatchClauseIssue.cs:6
msgid "Remove 'try' statement"
@@ -24425,11 +24419,11 @@ msgstr "Параметр '{0}' не вдалоÑÑŒ розв'Ñзати"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/NotResolvedInTextIssue.cs:21
msgid "Swap parameter."
-msgstr ""
+msgstr "Замінити параметр."
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/NotResolvedInTextIssue.cs:21
msgid "The parameter name is on the wrong argument."
-msgstr ""
+msgstr "Ðазва параметра у неправильному аргументі."
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/NotResolvedInTextIssue.cs:22
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/NotResolvedInTextIssueCodeFixProvider.cs:8
@@ -24729,7 +24723,7 @@ msgstr "Замінити одиничним викликом Average(...)"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAverageIssue.cs:8
msgid "Redundant Select() call with predicate followed by {0}()"
-msgstr ""
+msgstr "Зайвий виклик Select() з предикатом, піÑÐ»Ñ Ñкого йде {0}()"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSumIssue.cs:1
msgid "Replace with single call to Sum(...)"
@@ -24752,9 +24746,8 @@ msgid "Add exception description"
msgstr "Додати Ð¾Ð¿Ð¸Ñ Ð²Ð¸Ð½Ñтку"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/AddNewFormatItemCodeRefactoringProvider.cs:4
-#, fuzzy
msgid "Insert format argument"
-msgstr "Запитувати _аргументи"
+msgstr "Ð’Ñтавити аргумент формату"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertAnonymousMethodToLambdaCodeRefactoringProvider.cs:3
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertLambdaStatementToExpressionCodeRefactoringProvider.cs:6
@@ -24833,9 +24826,8 @@ msgid "Flip '{0}' operands"
msgstr "ПомінÑти операнди '{0}'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/FlipRelationalOperatorArgumentsCodeRefactoringProvider.cs:3
-#, fuzzy
msgid "Flip '{0}' operator to '{1}'"
-msgstr "ПомінÑти аргументи оператора '{0}'"
+msgstr "ПомінÑти оператор '{0}' на '{1}'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/InsertAnonymousMethodSignatureCodeRefactoringProvider.cs:2
msgid "Insert signature"
@@ -24864,7 +24856,7 @@ msgstr "Видалити директиви region/endregion"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ReplaceAutoPropertyWithPropertyAndBackingFieldCodeRefactoringProvider.cs:3
msgid "To property with backing field"
-msgstr ""
+msgstr "Ðа влаÑтивіÑÑ‚ÑŒ з допоміжним полем"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertAutoPropertyToPropertyCodeRefactoringProvider.cs:3
msgid "To computed property"
@@ -24893,9 +24885,8 @@ msgid "Split declaration and assignment"
msgstr "Розділити Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ Ñ‚Ð° приÑвоєннÑ"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertHasFlagsToBitwiseFlagComparisonCodeRefactoringProvider.cs:3
-#, fuzzy
msgid "To bitwise flag comparison"
-msgstr "ВикориÑтати порівнÑÐ½Ð½Ñ Ð·Ð° порÑдком"
+msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertBitwiseFlagComparisonToHasFlagsCodeRefactoringProvider.cs:4
msgid "To 'Enum.HasFlag'"
@@ -24992,10 +24983,11 @@ msgstr "Перетворити на вираз '&&'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/LockThisAnalyzer.cs:1
msgid "Warns about using lock (this) or MethodImplOptions.Synchronized"
msgstr ""
+"Попереджувати про викориÑÑ‚Ð°Ð½Ð½Ñ lock (this) або MethodImplOptions.Synchronized"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NotImplementedExceptionAnalyzer.cs:1
msgid "Shows NotImplementedException throws in the quick task bar"
-msgstr ""
+msgstr "Показує кидки NotImplementedException у швидкій панелі завдань"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NotImplementedExceptionAnalyzer.cs:1
msgid "Not implemented"
@@ -25005,40 +24997,37 @@ msgstr "Ðе реалізовано"
msgid ""
"Value assigned to a variable or parameter is not used in all execution path"
msgstr ""
+"ЗначеннÑ, приÑвоєне змінній або параметру, не викориÑтовуєтьÑÑ Ð¿Ñ€Ð¾Ñ‚Ñгом "
+"вÑього виконаннÑ"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantInternalAnalyzer.cs:1
-#, fuzzy
msgid "Removes 'internal' modifiers that are not required"
-msgstr "Видалити модифікатор 'internal'"
+msgstr "Видалити не потрібні модифікатори 'internal'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantInternalAnalyzer.cs:1
-#, fuzzy
msgid "'internal' modifier is redundant"
-msgstr "Зайвий модифікатор 'unsafe'."
+msgstr "Зайвий модифікатор 'internal'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantPrivateAnalyzer.cs:1
msgid "Removes 'private' modifiers that are not required"
-msgstr ""
+msgstr "Вилучає непотрібні модифікатори 'private'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantPrivateAnalyzer.cs:1
-#, fuzzy
msgid "'private' modifier is redundant"
-msgstr "Зайвий модифікатор 'unsafe'."
+msgstr "Зайвий модифікатор 'private'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/StaticEventSubscriptionAnalyzer.cs:1
msgid "Checks if static events are removed"
-msgstr ""
+msgstr "ПеревірÑÑ” чи не вилучено Ñтатичні події"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/StaticEventSubscriptionAnalyzer.cs:1
-#, fuzzy
msgid ""
"Subscription to static events without unsubscription may cause memory leaks"
msgstr ""
"ПідпиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñтатичні події без відпиÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ Ñпричинити втрати "
-"пам'ÑÑ‚Ñ–."
+"пам'ÑÑ‚Ñ–"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/XmlDocAnalyzer.cs:1
-#, fuzzy
msgid "Validate Xml docs"
msgstr "Перевірити документацію XML"
@@ -25047,49 +25036,46 @@ msgid "Bitwise operation on enum not marked with [Flags] attribute"
msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/CompareOfFloatsByEqualityOperatorAnalyzer.cs:1
-#, fuzzy
msgid "Comparison of floating point numbers with equality operator"
-msgstr ""
-"ПорівнÑÐ½Ð½Ñ Ñ‡Ð¸Ñел з рухомою комою за допомогою оператора порівнÑннÑ. "
-"ВикориÑтайте метод 'IsNegativeInfinity'."
+msgstr "ПорівнÑÐ½Ð½Ñ Ñ‡Ð¸Ñел з рухомою комою за допомогою оператора порівнÑннÑ"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/DoNotCallOverridableMethodsInConstructorAnalyzer.cs:1
msgid ""
"Warns about calls to virtual member functions occuring in the constructor"
msgstr ""
+"ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ наÑвніÑÑ‚ÑŒ у конÑтрукторі викликів функцій віртуальних членів"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/EmptyGeneralCatchClauseAnalyzer.cs:1
msgid "A catch clause that catches System.Exception and has an empty body"
-msgstr ""
+msgstr "Ð¡ÐµÐºÑ†Ñ–Ñ catch, Ñка оброблÑÑ” System.Exception, порожнÑ"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/EqualExpressionComparisonAnalyzer.cs:1
msgid "Comparing equal expression for equality is usually useless"
-msgstr ""
+msgstr "Перевірка рівних виразів на рівніÑÑ‚ÑŒ здебільшого не потрібна"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/FormatStringProblemAnalyzer.cs:1
-#, fuzzy
msgid "The string format index is out of bounds of the passed arguments"
-msgstr "Ð†Ð½Ð´ÐµÐºÑ '{0}' за межами переліку переданих аргументів"
+msgstr "Ð†Ð½Ð´ÐµÐºÑ Ñƒ Ñ€Ñдку формату за межами переліку переданих аргументів"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/FunctionNeverReturnsAnalyzer.cs:1
msgid ""
"Function does not reach its end or a 'return' statement by any of possible "
"execution paths"
msgstr ""
+"Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð½Ðµ доÑÑгає ÐºÑ–Ð½Ñ†Ñ Ð°Ð±Ð¾ інÑтрукції 'return' за вÑÑ–Ñ… можливих шлÑхів "
+"виконаннÑ"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/FunctionNeverReturnsAnalyzer.cs:1
-#, fuzzy
msgid "{0} never reaches its end or a 'return' statement"
-msgstr "Перетворити на інÑтрукцію 'return'"
+msgstr "{0} не доÑÑгає ÐºÑ–Ð½Ñ†Ñ Ð°Ð±Ð¾ інÑтрукції 'return'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/LocalVariableHidesMemberAnalyzer.cs:1
msgid "Local variable has the same name as a member and hides it"
msgstr "Ðазва локальної змінної збігаєтьÑÑ Ð· назвою члена Ñ– приховує його"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/LocalVariableHidesMemberAnalyzer.cs:1
-#, fuzzy
msgid "Local variable '{0}' hides {1} '{2}'"
-msgstr "Локальна змінна '{0}' приховує поле '{1}'"
+msgstr "Локальна змінна '{0}' приховує {1} '{2}'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/LongLiteralEndingLowerLAnalyzer.cs:1
msgid "Lowercase 'l' is often confused with '1'"
@@ -25100,9 +25086,8 @@ msgid "{0} with optional parameter is hidden by overload"
msgstr "{0} з необов'Ñзковим параметром прихований перевантаженнÑм"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/NotResolvedInTextAnalyzer.cs:2
-#, fuzzy
msgid "The parameter name is on the wrong argument"
-msgstr "Параметр-тип не викориÑтовуєтьÑÑ"
+msgstr "Ðазва параметра у неправильному аргументі"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/OperatorIsCanBeUsedAnalyzer.cs:1
msgid ""
@@ -25138,14 +25123,12 @@ msgid ""
msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/PossibleAssignmentToReadonlyFieldAnalyzer.cs:1
-#, fuzzy
msgid "Check if a readonly field is used as assignment target"
-msgstr "Поле лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð½Ðµ може бути цільовим при приÑвоєнні."
+msgstr "ВиÑвлÑти, Ñкщо поле лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ” цільовим при приÑвоєнні"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/StaticFieldInGenericTypeAnalyzer.cs:1
-#, fuzzy
msgid "Warns about static fields in generic types"
-msgstr "Статичне поле у загальному (generic) типі"
+msgstr "Попереджувати про Ñтатичні Ð¿Ð¾Ð»Ñ Ñƒ загальному (generic) типі"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ValueParameterNotUsedAnalyzer.cs:1
msgid ""
@@ -25155,7 +25138,7 @@ msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ValueParameterNotUsedAnalyzer.cs:1
msgid "The {0} does not use the 'value' parameter"
-msgstr ""
+msgstr "{0} не викориÑтовує параметр 'значеннÑ'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ValueParameterNotUsedAnalyzer.cs:5
msgid "setter"
@@ -25170,14 +25153,13 @@ msgid "remove accessor"
msgstr "метод доÑтупу remove"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CompilerWarnings/UnassignedReadonlyFieldAnalyzer.cs:1
-#, fuzzy
msgid "Readonly field is never assigned"
-msgstr "Полю лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ '{0}' не надано значеннÑ"
+msgstr "Полю лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð½Ðµ надано значеннÑ"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/NUnit/NonPublicMethodWithTestAttributeAnalyzer.cs:1
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/Diagnostics/Synced/NUnit/NonPublicMethodWithTestAttributeAnalyzer.cs:1
msgid "Non public methods are not found by NUnit"
-msgstr ""
+msgstr "NUnit не знайшов не загальнодоÑтупних методів"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertIfStatementToNullCoalescingExpressionAnalyzer.cs:1
msgid "Convert 'if' to '??'"
@@ -25188,9 +25170,8 @@ msgid "Convert 'Nullable<T>' to the short form 'T?'"
msgstr "Перетворити 'Nullable<T>' на коротку форму 'T?'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertNullableToShortFormAnalyzer.cs:1
-#, fuzzy
msgid "Nullable type can be simplified"
-msgstr "Тип можна ÑпроÑтити до '{0}?'"
+msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertToLambdaExpressionAnalyzer.cs:1
msgid "Convert to lambda with expression"
@@ -25204,7 +25185,7 @@ msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ForCanBeConvertedToForeachAnalyzer.cs:1
msgid "Foreach loops are more efficient"
-msgstr ""
+msgstr "Цикли foreach більш ефективні"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/InvokeAsExtensionMethodAnalyzer.cs:1
msgid ""
@@ -25212,36 +25193,35 @@ msgid ""
msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/SuggestUseVarKeywordEvidentAnalyzer.cs:1
-#, fuzzy
msgid "Use 'var' keyword when possible"
-msgstr "ВикориÑтати ключове Ñлово 'var'"
+msgstr "ВикориÑтати ключове Ñлово 'var', Ñкщо можливо"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/EmptyConstructorAnalyzer.cs:1
-#, fuzzy
msgid "An empty public constructor without paramaters is redundant."
-msgstr "Порожній конÑтруктор Ñ” зайвим."
+msgstr ""
+"Порожній загальнодоÑтупний (public) конÑтруктор без параметрів Ñ” зайвим."
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/EmptyConstructorAnalyzer.cs:1
-#, fuzzy
msgid "Empty constructor is redundant"
-msgstr "Порожній конÑтруктор Ñ” зайвим."
+msgstr "Порожній конÑтруктор Ñ” зайвим"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/EnumUnderlyingTypeIsIntAnalyzer.cs:1
msgid ""
"The default underlying type of enums is int, so defining it explicitly is "
"redundant."
msgstr ""
+"Типовим базовим типом Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑ–Ð² Ñ” int, тому Ñвне Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ "
+"є зайвим."
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/PartialTypeWithSinglePartAnalyzer.cs:1
msgid "Class is declared partial but has only one part"
-msgstr ""
+msgstr "ÐšÐ»Ð°Ñ Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð¾ Ñк чаÑтковий (partial), але він має лише одну чаÑтину"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/RedundantBaseConstructorCallAnalyzer.cs:1
msgid "This is generated by the compiler and can be safely removed"
-msgstr ""
+msgstr "Це згенеровано компілÑтором Ñ– може бути безпечно вилучено"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/RedundantDefaultFieldInitializerAnalyzer.cs:1
-#, fuzzy
msgid "Initializing field with default value is redundant"
msgstr "Ð†Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ð¾Ð»Ñ Ñтандартним значеннÑм Ñ” зайвою"
@@ -25250,21 +25230,20 @@ msgid ""
"The override of a virtual member is redundant because it consists of only a "
"call to the base"
msgstr ""
+"Ð—Ð°Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ члена Ñ” зайвим, оÑкільки він міÑтить лише "
+"Ð·Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ бази"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/SealedMemberInSealedClassAnalyzer.cs:1
-#, fuzzy
msgid "'sealed' modifier is redundant in sealed classes"
-msgstr "Ключове Ñлово 'sealed' зайве в ізольованих клаÑах."
+msgstr "Ключове Ñлово 'sealed' зайве в ізольованих клаÑах"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/UnusedParameterAnalyzer.cs:1
-#, fuzzy
msgid "Parameter is never used"
-msgstr "Параметр '{0}' не викориÑтовуєтьÑÑ"
+msgstr "Параметр не викориÑтовуєтьÑÑ"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/UnusedTypeParameterAnalyzer.cs:1
-#, fuzzy
msgid "Type parameter '{0}' is never used"
-msgstr "Параметр-тип не викориÑтовуєтьÑÑ"
+msgstr "Параметр-тип '{0}' не викориÑтовуєтьÑÑ"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/ArrayCreationCanBeReplacedWithArrayInitializerAnalyzer.cs:1
msgid ""
@@ -25311,7 +25290,7 @@ msgstr "Зайва мітка 'case'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantCatchClauseAnalyzer.cs:1
msgid "Catch clause with a single 'throw' statement is redundant"
-msgstr "Пункт catch з одиничним виразом 'throw' є зайвим"
+msgstr "Ð¡ÐµÐºÑ†Ñ–Ñ catch з одиничним виразом 'throw' Ñ” зайвою"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantCheckBeforeAssignmentAnalyzer.cs:1
msgid ""
@@ -25334,9 +25313,8 @@ msgid "Remove the redundant size indicator"
msgstr "Вилучити зайвий індикатор size"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantExplicitNullableCreationAnalyzer.cs:1
-#, fuzzy
msgid "Value types are implicitly convertible to nullables"
-msgstr "Тип елемента колекції '{0}' не можна неÑвно перетворити на '{1}'"
+msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantExtendsListEntryAnalyzer.cs:1
msgid ""
@@ -25363,6 +25341,8 @@ msgid ""
"Finds calls to ToString() which would be generated automatically by the "
"compiler"
msgstr ""
+"Шукає виклики ToString() Ñкі будуть автоматично згенеровані "
+"компілÑтором"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantToStringCallAnalyzer.cs:1
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantToStringCallAnalyzer.cs:2
@@ -25374,6 +25354,8 @@ msgid ""
"Unsafe modifier in redundant in unsafe context or when no unsafe constructs "
"are used"
msgstr ""
+"Модифікатор unsafe Ñ” зайвим в небезпечному контекÑÑ‚Ñ– або Ñкщо не "
+"викориÑтовуютьÑÑ Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ñ– конÑтрукції"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantUnsafeContextAnalyzer.cs:1
msgid "'unsafe' modifier is redundant"
@@ -25382,6 +25364,7 @@ msgstr "Зайвий модифікатор 'unsafe'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/UnusedAnonymousMethodSignatureAnalyzer.cs:1
msgid "Detects when no delegate parameter is used in the anonymous method body"
msgstr ""
+"ВиÑвлÑÑ”, Ñкщо параметр-делегат не викориÑтовуєтьÑÑ Ð² тілі анонімного методу"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseMethodAnyAnalyzer.cs:1
msgid "Replace usages of 'Count()' with call to 'Any()'"
@@ -25389,7 +25372,7 @@ msgstr "Замінити викориÑÑ‚Ð°Ð½Ð½Ñ 'Count()' викликом 'An
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseMethodAnyAnalyzer.cs:1
msgid "Use '{0}' for increased performance"
-msgstr ""
+msgstr "ВикориÑтати '{0}' Ð´Ð»Ñ Ð¿Ñ–Ð´Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð¸Ð²Ð½Ð¾ÑÑ‚Ñ–"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseIsOperatorAnalyzer.cs:1
msgid "'is' operator can be used"
@@ -25398,6 +25381,8 @@ msgstr "Можна викориÑтати оператор 'is'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringStartsWithIsCultureSpecificAnalyzer.cs:1
msgid "Warns when a culture-aware 'StartsWith' call is used by default."
msgstr ""
+"Попереджувати, Ñкщо типово викориÑтовуєтьÑÑ Ð²Ð¸ÐºÐ»Ð¸Ðº культурозалежного "
+"'StartsWith'."
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringStartsWithIsCultureSpecificAnalyzer.cs:1
msgid "'StartsWith' is culture-aware and missing a StringComparison argument"
@@ -25406,6 +25391,8 @@ msgstr "'StartsWith' Ñ” культурозалежним Ñ– пропущено Ð
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringLastIndexOfIsCultureSpecificAnalyzer.cs:1
msgid "Warns when a culture-aware 'LastIndexOf' call is used by default."
msgstr ""
+"Попереджувати, Ñкщо типово викориÑтовуєтьÑÑ Ð²Ð¸ÐºÐ»Ð¸Ðº культурозалежного "
+"'LastIndexOf'."
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringLastIndexOfIsCultureSpecificAnalyzer.cs:1
msgid "'LastIndexOf' is culture-aware and missing a StringComparison argument"
@@ -25414,6 +25401,8 @@ msgstr "'LastIndexOf' є культурозалежним і пропущено
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringIndexOfIsCultureSpecificAnalyzer.cs:1
msgid "Warns when a culture-aware 'IndexOf' call is used by default."
msgstr ""
+"Попереджувати, Ñкщо типово викориÑтовуєтьÑÑ Ð²Ð¸ÐºÐ»Ð¸Ðº культурозалежного "
+"'IndexOf'."
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringIndexOfIsCultureSpecificAnalyzer.cs:1
msgid "'IndexOf' is culture-aware and missing a StringComparison argument"
@@ -25422,6 +25411,8 @@ msgstr "'IndexOf' є культурозалежним і пропущено ар
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringEndsWithIsCultureSpecificAnalyzer.cs:1
msgid "Warns when a culture-aware 'EndsWith' call is used by default."
msgstr ""
+"Попереджувати, Ñкщо типово викориÑтовуєтьÑÑ Ð²Ð¸ÐºÐ»Ð¸Ðº культурозалежного "
+"'EndsWith'."
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringEndsWithIsCultureSpecificAnalyzer.cs:1
msgid "'EndsWith' is culture-aware and missing a StringComparison argument"
@@ -25430,10 +25421,13 @@ msgstr "'EndsWith' Ñ” культурозалежним Ñ– пропущено аÑ
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringCompareToIsCultureSpecificAnalyzer.cs:1
msgid "Warns when a culture-aware 'string.CompareTo' call is used by default"
msgstr ""
+"Попереджувати, Ñкщо типово викориÑтовуєтьÑÑ Ð²Ð¸ÐºÐ»Ð¸Ðº культурозалежного "
+"'string.CompareTo'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringCompareIsCultureSpecificAnalyzer.cs:1
msgid "Warns when a culture-aware 'Compare' call is used by default"
msgstr ""
+"Попереджувати, Ñкщо типово викориÑтовуєтьÑÑ Ð²Ð¸ÐºÐ»Ð¸Ðº культурозалежного 'Compare'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/SimplifyConditionalTernaryExpressionAnalyzer.cs:1
msgid "Conditional expression can be simplified"
@@ -25449,7 +25443,7 @@ msgstr "Вираз можна замінити на '{0}'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSingleOrDefaultAnalyzer.cs:1
msgid "Redundant Where() call with predicate followed by SingleOrDefault()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде SingleOrDefault()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSingleOrDefaultAnalyzer.cs:1
msgid "Replace with single call to 'SingleOrDefault()'"
@@ -25457,7 +25451,7 @@ msgstr "Замінити одиничним викликом 'SingleOrDefault()'
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSingleAnalyzer.cs:1
msgid "Redundant Where() call with predicate followed by Single()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде Single()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSingleAnalyzer.cs:1
msgid "Replace with single call to 'Single()'"
@@ -25465,7 +25459,7 @@ msgstr "Замінити одиничним викликом 'Single()'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLongCountAnalyzer.cs:1
msgid "Redundant Where() call with predicate followed by LongCount()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде LongCount()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLongCountAnalyzer.cs:1
msgid "Replace with single call to 'LongCount()'"
@@ -25473,7 +25467,7 @@ msgstr "Замінити одиничним викликом 'LongCount()'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLastOrDefaultAnalyzer.cs:1
msgid "Redundant Where() call with predicate followed by LastOrDefault()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде LastOrDefault()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLastOrDefaultAnalyzer.cs:1
msgid "Replace with single call to 'LastOrDefault()'"
@@ -25481,7 +25475,7 @@ msgstr "Замінити одиничним викликом 'LastOrDefault()'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLastAnalyzer.cs:1
msgid "Redundant Where() call with predicate followed by Last()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде Last()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLastAnalyzer.cs:1
msgid "Replace with single call to 'Last()'"
@@ -25489,7 +25483,7 @@ msgstr "Замінити одиничним викликом 'Last()'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToFirstOrDefaultAnalyzer.cs:1
msgid "Redundant Where() call with predicate followed by FirstOrDefault()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде FirstOrDefault()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToFirstOrDefaultAnalyzer.cs:1
msgid "Replace with single call to 'FirstOrDefault()'"
@@ -25497,7 +25491,7 @@ msgstr "Замінити одиничним викликом 'FirstOrDefault()'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToFirstAnalyzer.cs:1
msgid "Redundant Where() call with predicate followed by First()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде First()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToFirstAnalyzer.cs:1
msgid "Replace with single call to 'First()'"
@@ -25505,7 +25499,7 @@ msgstr "Замінити одиничним викликом 'First()'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToCountAnalyzer.cs:1
msgid "Redundant Where() call with predicate followed by Count()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде Count()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToCountAnalyzer.cs:1
msgid "Replace with single call to 'Count()'"
@@ -25513,7 +25507,7 @@ msgstr "Замінити одиничним викликом 'Count()'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAnyAnalyzer.cs:1
msgid "Redundant Where() call with predicate followed by Any()"
-msgstr ""
+msgstr "Зайвий виклик Where() з предикатом, піÑÐ»Ñ Ñкого йде Any()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAnyAnalyzer.cs:1
msgid "Replace with single call to 'Any()'"
@@ -25604,9 +25598,8 @@ msgid "Replace with call to FirstOrDefault<T>()"
msgstr "Замінити викликом FirstOrDefault<T>()"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ParameterCanBeDeclaredWithBaseTypeAnalyzer.cs:4
-#, fuzzy
msgid "Finds parameters that can be demoted to a base class"
-msgstr "Параметр можна оголоÑити з базовим типом"
+msgstr "Шукати параметри, Ñкі можна оголоÑити з базовим типом"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ConvertIfToOrExpressionAnalyzer.cs:1
msgid "Convert 'if' to '||' expression"
@@ -25619,6 +25612,7 @@ msgstr "Перетворити 'if-do-while' на інÑтрукцію 'while'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/AccessToStaticMemberViaDerivedTypeAnalyzer.cs:1
msgid "Suggests using the class declaring a static function when calling it"
msgstr ""
+"Пропонує викориÑтати ÐºÐ»Ð°Ñ Ð· оголошеннÑм Ñтатичної функцію при Ñ—Ñ— виклику"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertStatementBodyToExpressionBodyCodeRefactoringProvider.cs:8
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertStatementBodyToExpressionBodyCodeRefactoringProvider.cs:9
@@ -25643,10 +25637,9 @@ msgstr "ПеревірÑти 'if ({0}.Count > {1})'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckDictionaryKeyValueCodeRefactoringProvider.cs:3
msgid "Use 'if ({0}.TryGetValue({1}, out val))'"
-msgstr ""
+msgstr "ВикориÑтати 'if ({0}.TryGetValue({1}, out val))'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReverseDirectionForForLoopCodeRefactoringProvider.cs:6
-#, fuzzy
msgid "Reverse 'for' loop'"
msgstr "Обернути цикл 'for'"
@@ -25684,9 +25677,8 @@ msgid "Remove redundant code"
msgstr "Прибрати зайвий код"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/NotResolvedInTextIssueCodeFixProvider.cs:6
-#, fuzzy
msgid "Swap parameter"
-msgstr "Параметр-тип"
+msgstr "Замінити параметр"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/FieldCanBeMadeReadOnlyCodeFixProvider.cs:3
msgid "To 'readonly'"
@@ -25706,27 +25698,23 @@ msgstr "Ðа 'nameof({0})'"
#: ../external/RefactoringEssentials/RefactoringEssentials/Samples/CSharp/SampleAnalyzer.cs:2
msgid "Sample analyzer: Class name should not have a 'C' prefix."
-msgstr ""
+msgstr "Ðналізатор зразка: назва клаÑу не повинна мати префікÑа 'C'."
#: ../external/RefactoringEssentials/RefactoringEssentials/Samples/CSharp/SampleCodeRefactoringProvider.cs:9
-#, fuzzy
msgid "Sample: Prepend with 'I'"
-msgstr "Замінити вираз на '{0}'"
+msgstr "Приклад: Ñпереду 'I'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertInterpolatedStringToStringFormatCodeRefactoringProvider.cs:1
-#, fuzzy
msgid "To format string"
-msgstr "Ð¤Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ"
+msgstr "Ðа Ñ€Ñдок формату"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertStringFormatToInterpolatedStringCodeRefactoringProvider.cs:2
-#, fuzzy
msgid "To interpolated string"
-msgstr "Перекладений Ñ€Ñдок"
+msgstr "Ðа інтерпольований Ñ€Ñдок"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ImportStaticClassWithUsingCodeRefactoringProvider.cs:5
-#, fuzzy
msgid "Import static class with using"
-msgstr "ЧаÑтковий (partial) ÐºÐ»Ð°Ñ Ð· однією чаÑтиною"
+msgstr "Імпортувати Ñтатичний ÐºÐ»Ð°Ñ Ð· using"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/CheckIfParameterIsNothingCodeRefactoringProvider.cs:2
msgid "Add 'Is Nothing' check for parameter"
diff --git a/main/po/zh_CN.po b/main/po/zh_CN.po
index fdd8c5569c..40d768dc0a 100644
--- a/main/po/zh_CN.po
+++ b/main/po/zh_CN.po
@@ -9,24 +9,23 @@ msgstr ""
"Project-Id-Version: MonoDevelop HEAD\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-15 15:35:25-0500\n"
-"PO-Revision-Date: 2013-04-02 19:10:51+0800\n"
-"Last-Translator: Ray Wang <raywang@gnome.org>\n"
-"Language-Team: Chinese (Simplified) <i18n-zh@googlegroups.com>\n"
-"Language: \n"
+"PO-Revision-Date: 2016-02-18 18:02+0800\n"
+"Last-Translator: MysticBoy <mysticboy@live.com>\n"
+"Language-Team: Chinese (Simplified) <mysticboy@live.com>\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: MonoDevelop Gettext addin\n"
+"X-Generator: Poedit 1.8.7\n"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs:16
-#, fuzzy
msgid "{0} External Console"
-msgstr "MonoDevelop 外部控制å°"
+msgstr "{0} 外部控制å°"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs:23
msgid "The application was terminated by a signal: {0}"
-msgstr "应用程åºè¢«ä¿¡å·ä¸­æ­¢ï¼š{0}"
+msgstr "应用程åºè¢«ä¿¡å·{0}终止。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs:23
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:211
@@ -94,7 +93,7 @@ msgstr "文件未找到:{0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectService.cs:22
msgid "File '{0}' not found."
-msgstr "中找ä¸åˆ°æ–‡ä»¶ '{0}'。"
+msgstr "文件'{0}'未找到。"
#
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectConfiguration.cs:14
@@ -135,20 +134,19 @@ msgstr "目标扩展å"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:77
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:87
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:90
-#, fuzzy
msgid "Custom command execution failed"
-msgstr "执行失败。"
+msgstr "自定义命令执行已失败。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:166
msgid "Cannot create directory {0}, as a file with that name exists."
-msgstr "无法创建目录 {0}。文件已存在。"
+msgstr "无法创建目录 {0},与之åŒå的文件已存在。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:169
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:196
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:200
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:204
msgid "Configuration '{0}' not found in project '{1}'"
-msgstr "é…ç½® '{0}' 无法在项目 '{1}' 中找到 "
+msgstr "项目 '{1}'中未找到é…ç½® '{0}'"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:172
msgid "Build complete -- "
@@ -156,20 +154,19 @@ msgstr "æž„å»ºå®Œæˆ --"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:183
msgid "Could not find support file '{0}'."
-msgstr "无法打开支æŒæ–‡ä»¶'{0}'"
+msgstr "未找到支æŒæ–‡ä»¶'{0}'"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:184
msgid "Error copying support file '{0}'."
-msgstr "æ‹·è´æ”¯æŒæ–‡ä»¶'{0}' 错误"
+msgstr "å¤åˆ¶æ”¯æŒæ–‡ä»¶'{0}' 错误"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:188
msgid "Error deleting support file '{0}'."
msgstr "删除支æŒæ–‡ä»¶'{0}'错误"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:198
-#, fuzzy
msgid "Clean complete"
-msgstr "æœç´¢å·²å–消。"
+msgstr "清ç†å®Œæˆ"
# FIXME: make this a resource in the resource file
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs:171
@@ -187,52 +184,45 @@ msgid_plural "{0} warnings"
msgstr[0] "{0} 个警告"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs:23
-#, fuzzy
msgid "Invalid file path"
-msgstr "无效的文件å"
+msgstr "无效文件路径"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs:41
msgid "Specified version not found: expected {0}, found {1}"
-msgstr ""
+msgstr "指定的版本未找到:预期{0}, å‘现{1}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs:42
-#, fuzzy
msgid "Assembly not found for framework {0}"
-msgstr "程åºé›†å称"
+msgstr "程åºé›†æœªæ‰¾åˆ°é’ˆå¯¹æ¡†æž¶"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs:43
msgid "Assembly not found for framework {0} (in {1})"
-msgstr ""
+msgstr "程åºé›†æœªæ‰¾åˆ°é’ˆå¯¹æ¡†æž¶ {0} (in {1})"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs:44
-#, fuzzy
msgid "Framework {0} is not installed"
-msgstr "æ’件“{0}â€æœªå®‰è£…。"
+msgstr "框架“{0}â€æœªå®‰è£…。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs:45
-#, fuzzy
msgid "Framework {0} is not installed (in {1})"
-msgstr "æ’件“{0}â€æœªå®‰è£…。"
+msgstr "框架“{0}â€æœªå®‰è£…。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs:46
-#, fuzzy
msgid "Assembly not found"
-msgstr "程åºé›†å称"
+msgstr "程åºé›†æœªæ‰¾åˆ°"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs:46
msgid "Incompatible target framework ({0})"
-msgstr ""
+msgstr "ä¸å…¼å®¹ç›®æ ‡æ¡†æž¶ ({0})"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectReference.cs:46
-#, fuzzy
msgid "File not found"
-msgstr "文件未找到:{0}"
+msgstr "文件未找到"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CustomCommandWidget.cs:3
-#, fuzzy
msgid "Before Build"
-msgstr "构建å‰(_B):"
+msgstr "生æˆå‰"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
#: ../src/core/MonoDevelop.Ide/ExtensionModel/DefaultPolicyPanels.addin.xml:2
@@ -244,19 +234,17 @@ msgstr "构建å‰(_B):"
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs:7
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs:3
msgid "Build"
-msgstr "构建"
+msgstr "生æˆ"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CustomCommandWidget.cs:3
-#, fuzzy
msgid "After Build"
-msgstr "构建åŽ(_A):"
+msgstr "生æˆåŽ"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CustomCommandWidget.cs:3
-#, fuzzy
msgid "Before Execute"
-msgstr "执行"
+msgstr "执行å‰"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CustomCommandWidget.cs:3
@@ -265,9 +253,8 @@ msgstr "执行"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CustomCommandWidget.cs:3
-#, fuzzy
msgid "After Execute"
-msgstr "执行"
+msgstr "执行åŽ"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CustomCommandWidget.cs:3
@@ -286,15 +273,14 @@ msgstr "清ç†åŽ"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CustomCommandWidget.cs:3
-#, fuzzy
msgid "Custom Command"
-msgstr "编译器命令:"
+msgstr "自定义命令"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
msgid ""
"Invalid custom command for '{0}' step: the path to the command to execute "
"has not been provided."
-msgstr ""
+msgstr "针对步骤 '{0}' 的自定义命令无效: 用æ¥æ‰§è¡Œå‘½ä»¤çš„路径未æ供。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
msgid "Executing: {0} {1}"
@@ -302,183 +288,167 @@ msgstr "正在执行:{0} {1}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4
msgid "Custom command working directory does not exist"
-msgstr ""
+msgstr "自定义命令工作目录ä¸å­˜åœ¨"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:8
-#, fuzzy
msgid "Failed to execute custom command '{0}': {1}"
-msgstr "无法创建新文件夹“{0}â€"
+msgstr "执行自定义命令失败 '{0}': {1}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:8
-#, fuzzy
msgid "Command execution failed: {0}"
-msgstr "正在打开解决方案:{0}"
+msgstr "命令执行失败: {0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/UnknownSolutionItem.cs:7
-#, fuzzy
msgid "Unavailable"
-msgstr "有新的æ’件更新å¯ç”¨ï¼š"
+msgstr "ä¸å¯ç”¨"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/UnknownSolutionItem.cs:8
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/UnknownWorkspaceItem.cs:2
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/UnknownProject.cs:6
msgid "Unknown entry"
-msgstr ""
+msgstr "未知输入"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceItem.cs:56
-#, fuzzy
msgid "Workspace File"
-msgstr "工程已ä¿å­˜ã€‚"
+msgstr "工作区文件"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceItem.cs:56
-#, fuzzy
msgid "Workspace Name"
-msgstr "工程已ä¿å­˜ã€‚"
+msgstr "工作区å称"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceItem.cs:56
-#, fuzzy
msgid "Workspace Directory"
-msgstr "工作目录:"
+msgstr "工作区目录"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs:59
msgid "Startup item not set"
-msgstr ""
+msgstr "å¯åŠ¨é¡¹æœªè®¾ç½®"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs:104
-#, fuzzy
msgid "Solution File"
-msgstr "解决方案文件å"
+msgstr "解决方案文件"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs:104
-#, fuzzy
msgid "Solution Name"
-msgstr "解决方案å(_S):"
+msgstr "解决方案å称"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs:104
-#, fuzzy
msgid "Solution Directory"
-msgstr "解决方案目录(_S)"
+msgstr "解决方案目录"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs:43
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs:46
msgid "Cyclic dependencies are not supported."
-msgstr ""
+msgstr "ä¸æ”¯æŒå¾ªçŽ¯ä¾èµ–。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs:44
-#, fuzzy
msgid "Cleaning Solution: {0} ({1})"
-msgstr "正在ä¿å­˜è§£å†³æ–¹æ¡ˆï¼š{0}"
+msgstr "正在清ç†è§£å†³æ–¹æ¡ˆ {0} ({1})"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs:47
-#, fuzzy
msgid "Building Solution: {0} ({1})"
-msgstr "正在构建解决方案 {0}"
+msgstr "正在生æˆè§£å†³æ–¹æ¡ˆ {0} ({1})"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/BuildResult.cs:7
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:42
-#, fuzzy
msgid "Cancelled"
-msgstr "构建失败。"
+msgstr "å·²å–消"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/FileCopyMode.cs:2
msgid "Do not copy"
-msgstr ""
+msgstr "ä¸å¤åˆ¶"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/FileCopyMode.cs:2
-#, fuzzy
msgid "Always copy"
-msgstr "总是创建备份"
+msgstr "始终å¤åˆ¶"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/FileCopyMode.cs:2
msgid "Copy if newer"
-msgstr ""
+msgstr "如果较新则å¤åˆ¶"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:53
msgid "Incompatible target framework: {0}"
-msgstr ""
+msgstr "目标框架ä¸å…¼å®¹: {0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:205
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CompiledAssemblyProject.cs:4
#: ../src/addins/NUnit/Gui/TestResultsPad.cs:34
-#, fuzzy
msgid "Running {0} ..."
-msgstr "正在è¿è¡Œ "
+msgstr "正在è¿è¡Œ{0} ..."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:207
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CompiledAssemblyProject.cs:6
msgid ""
"Can not execute \"{0}\". The selected execution mode is not supported for ."
"NET projects."
-msgstr ""
+msgstr "无法执行 \"{0}\". 所选的执行模å¼.Net项目ä¸æ”¯æŒã€‚"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs:208
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CompiledAssemblyProject.cs:10
-#, fuzzy
msgid "Cannot execute \"{0}\""
-msgstr "无法进入“{0}â€æ–‡ä»¶å¤¹"
+msgstr "无法执行 \"{0}\""
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CyclicDependencyException.cs:2
msgid "A cyclic build dependency has been detected."
-msgstr ""
+msgstr "已检测到的循环生æˆä¾èµ–。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:3
msgid "Skipping project since output files are up to date"
-msgstr ""
+msgstr "跳过输出文件已ç»æ˜¯æœ€æ–°çš„项目"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:4
-#, fuzzy
msgid "Framework '{0}' not installed."
-msgstr "æ’件“{0}â€æœªå®‰è£…。"
+msgstr "框架'{0}' 未安装."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:4
msgid ""
"Unknown language '{0}'. You may need to install an additional add-in to "
"support this language."
-msgstr "未知的语言“{0}â€ï¼Œæ‚¨å¯èƒ½éœ€è¦å®‰è£…一个é¢å¤–çš„æ’件"
+msgstr "未知的语言“{0}â€ï¼Œæ‚¨å¯èƒ½éœ€è¦å®‰è£…一个é¢å¤–çš„æ’件æ¥æ”¯æŒæ­¤è¯­è¨€ã€‚"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:6
msgid "Referenced project '{0}' not found in the solution."
msgstr "解决方案中没找到被引用的工程\"{0}\"."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:6
-#, fuzzy
msgid "Reference '{0}' not found on system. Using '{1}' instead."
-msgstr "解决方案中没找到被引用的工程\"{0}\"."
+msgstr "引用'{0}' 未在系统中找到,使用 '{1}' æ¥ä»£æ›¿."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:6
msgid ""
"Assembly '{0}' not found. Make sure that the assembly exists in disk. If the "
"reference is required to build the project you may get compilation errors."
msgstr ""
+"程åºé›† '{0}'未找到,确认程åºé›†åœ¨ç£ç›˜ä¸Šï¼Œå¦‚果项目必须引用会导致编译错误。 "
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:6
msgid ""
"The reference '{0}' is not valid for the target framework of the project."
-msgstr ""
+msgstr "引用 '{0}' 针对项目的目标框架无效。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:18
msgid "Error: Unable to build ResourceId for {0}."
-msgstr ""
+msgstr "错误: 无法为 {0}生æˆèµ„æºç¼–å·ã€‚"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:19
msgid "Unable to build ResourceId for {0}."
-msgstr ""
+msgstr "无法为 {0}生æˆèµ„æºç¼–å·ã€‚"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:21
-#, fuzzy
msgid "Unable to find 'resgen' tool."
-msgstr "ä¸èƒ½è¿žæŽ¥åˆ°æ•°æ®åº“‘{0}’"
+msgstr "未能找到'resgen' 工具。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:22
-#, fuzzy
msgid "Compiling resource {0} with {1}"
-msgstr "正在 {1} 中查找“{0}â€ã€‚"
+msgstr "æ­£åœ¨ç¼–è¯‘èµ„æº {0} 与 {1}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:24
msgid ""
"Error while trying to invoke '{0}' to compile resource '{1}' :\n"
" {2}"
msgstr ""
+"试图调用\"{0}\"æ¥ç¼–è¯‘èµ„æº '{1}' 时出错:\n"
+"{2}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:27
msgid ""
@@ -486,10 +456,13 @@ msgid ""
"Reason: \n"
"{2}\n"
msgstr ""
+"无法编译 ({0}) 到.resources {1}。\n"
+"原因:\n"
+"{2}\n"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:40
msgid "Generating satellite assembly for '{0}' culture with {1}"
-msgstr ""
+msgstr "正在生æˆ\"{0}\"与 {1} 区域性附属程åºé›†"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:41
msgid ""
@@ -497,6 +470,8 @@ msgid ""
"culture:\n"
" {2}"
msgstr ""
+"试图调用\"{0}\"生æˆé™„属程åºé›†\"{1}\"时出错:\n"
+"{2}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1DotNetProjectHandler.cs:44
msgid ""
@@ -504,27 +479,28 @@ msgid ""
"Reason: \n"
"{2}\n"
msgstr ""
+"无法生æˆé™„属程åºé›†\"{0}\"与 {1} 。\n"
+"原因:\n"
+"{2}\n"
+# 翻译为内容å§ã€‚ 感觉具体点。
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1FileFormat.cs:12
-#, fuzzy
msgid "Saving item: {0}"
-msgstr "正在ä¿å­˜è§£å†³æ–¹æ¡ˆï¼š{0}"
+msgstr "正在ä¿å­˜å†…容: {0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1FileFormat.cs:12
-#, fuzzy
msgid "Could not save item: {0}"
-msgstr "无法ä¿å­˜è§£å†³æ–¹æ¡ˆï¼š{0}"
+msgstr "无法ä¿å­˜å†…容:{0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1FileFormat.cs:17
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceSerializationExtension.cs:3
-#, fuzzy
msgid "Loading workspace item: {0}"
-msgstr "正在打开解决方案:{0}"
+msgstr "正在加载工作区内容:{0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MD1/MD1FileFormat.cs:17
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/WorkspaceSerializationExtension.cs:3
msgid "Could not load solution item: {0}"
-msgstr "无法打开解决方案:{0}"
+msgstr "无法加载解决方案内容: {0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildFileFormat.cs:18
msgid ""
@@ -532,132 +508,119 @@ msgid ""
"version of Visual Studio does not support the framework that the project is "
"targetting ({2})"
msgstr ""
+"正在ä¿å­˜é¡¹ç›®\"{0}\"ä½¿ç”¨çš„æ–‡ä»¶æ ¼å¼ '{1}',但这个版本的 Visual Studio ä¸æ”¯æŒè¯¥"
+"项目使用的目标框架({2}),"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:6
msgid "Saving solution: {0}"
-msgstr "正在ä¿å­˜è§£å†³æ–¹æ¡ˆï¼š{0}"
+msgstr "正在ä¿å­˜è§£å†³æ–¹æ¡ˆ: {0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:6
msgid "Could not save solution: {0}"
msgstr "无法ä¿å­˜è§£å†³æ–¹æ¡ˆï¼š{0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:17
-#, fuzzy
msgid "Saving projects"
-msgstr "正在ä¿å­˜å·¥ç¨‹ï¼š{0}"
+msgstr "正在ä¿å­˜é¡¹ç›®"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:45
msgid "Loading solution: {0}"
-msgstr "正在装入解决方案:{0}"
+msgstr "正在加载解决方案:{0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:45
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs:29
-#, fuzzy
msgid "Could not load solution: {0}"
-msgstr "无法ä¿å­˜è§£å†³æ–¹æ¡ˆï¼š{0}"
+msgstr "无法加载解决方案:{0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:50
msgid "Invalid Project type guid '{0}' on line #{1}. Ignoring."
-msgstr ""
+msgstr " 在行#{1}上的GUID '{0}'是无效项目类型. 忽略."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:57
msgid ""
"{0}({1}): Projects with non-local source (http://...) not supported. '{2}'."
-msgstr ""
+msgstr "{0}({1}): ä¸æ”¯æŒé¡¹ç›®ä½¿ç”¨éžæœ¬åœ°æº (http://...). '{2}'."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:58
msgid "Invalid project path found in {0} : {1}"
-msgstr ""
+msgstr "在 {0}中找到无效项目路径 : {1} "
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:63
-#, fuzzy
msgid "Error while trying to load the project '{0}': {1}"
-msgstr "您确定想è¦å°†æ–‡ä»¶ {0} 从工程 {1} 中删除å—?"
+msgstr "在试图加载项目 '{0}'æ—¶é‡åˆ°é”™è¯¯: {1}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:67
msgid ""
"Invalid solution file. There are two projects with the same GUID. The "
"project {0} will be ignored."
-msgstr ""
+msgstr "无效的解决方案文件。有两个项目具有相åŒçš„ GUID。项目 {0} 将被忽略。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:83
-#, fuzzy
msgid "{0} ({1}) : Project with guid = '{2}' not found or not loaded. Ignoring"
-msgstr "无法找到工程文件:"
+msgstr "{0} ({1}): 项目与 guid = '{2}' 找ä¸åˆ°æˆ–ä¸ä¼šåŠ è½½ã€‚忽略"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:89
msgid ""
"{0} ({1}) : Unknown action. Only ActiveCfg, Build.0 and Deploy.0 supported."
-msgstr ""
+msgstr "{0} ({1}) : 未知æ“作. ä»… ActiveCfg,生æˆ.0 和部署.0 已支æŒ"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:100
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:101
-#, fuzzy
msgid "Project with guid '{0}' not found."
-msgstr "无法找到工程文件:"
+msgstr "项目GUID'{0}'无法找到."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/SlnFileFormat.cs:100
-#, fuzzy
msgid "Item with guid '{0}' is not a folder."
-msgstr "无法找到工程文件:"
+msgstr "æ¡ç›®GUID '{0}' ä¸æ˜¯æ–‡ä»¶å¤¹ã€‚"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:43
-#, fuzzy
msgid "Could not load {0} project '{1}'. {2}"
-msgstr ""
-"无法装入 {0}“{1}â€ã€‚\n"
-"\n"
-"{2}"
+msgstr "未能加载{0}项目 '{1}'. {2}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:43
-#, fuzzy
msgid "Unknown project type: {0}"
-msgstr "未知语言:{0}"
+msgstr "未知项目类型: {0}"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:43
-#, fuzzy
msgid "Could not load project '{0}' with unknown item type '{1}'"
-msgstr "无法打开解决方案:{0}"
+msgstr "未能加载项目 '{0}' 中的未知内容类型'{1}'"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:43
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:57
-#, fuzzy
msgid "Unknown project type"
-msgstr "未知语言:{0}"
+msgstr "未知项目类型"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:43
-#, fuzzy
msgid "Could not load project '{0}' with unknown item type"
-msgstr "无法装入工程:{0}"
+msgstr "未能加载项目类型 '{0}'中的未知内容类型"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:4
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:10
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:12
msgid "Western"
-msgstr ""
+msgstr "西方"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:4
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:10
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:12
msgid "Central European"
-msgstr ""
+msgstr "中欧"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:4
msgid "South European"
-msgstr ""
+msgstr "å—欧"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:4
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:12
-#, fuzzy
msgid "Baltic"
-msgstr "上一步"
+msgstr "波罗的海"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:4
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:10
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:11
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:12
msgid "Cyrillic"
-msgstr ""
+msgstr "西里尔"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:4
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:10
@@ -713,7 +676,7 @@ msgstr "ç¹ä½“中文"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:6
msgid "Cyrillic/Russian"
-msgstr "西里尔文"
+msgstr "西里尔/俄罗斯"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:7
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:11
@@ -735,109 +698,101 @@ msgstr "æ ¼é²å‰äºšæ–‡"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:11
msgid "Cyrillic/Ukrainian"
-msgstr ""
+msgstr "西里尔/乌克兰"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:11
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:12
-#, fuzzy
msgid "Vietnamese"
-msgstr "é‡å‘½å"
+msgstr "越å—"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextEncoding.cs:11
msgid "Thai"
msgstr "æ³°æ–‡"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs:2
-#, fuzzy
msgid "ApplicationName"
-msgstr "程åº"
+msgstr "应用程åºå称"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs:2
-#, fuzzy
msgid "SuiteName"
-msgstr "解决方案"
+msgstr "套件å称"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs:2
-#, fuzzy
msgid "ProfileDirectoryName"
-msgstr "工程目录(_P)"
+msgstr "é…置目录å称"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs:2
msgid "StatusAreaSteadyIcon"
-msgstr ""
+msgstr "状æ€åŒºå›ºå®šå›¾æ ‡"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/UnknownProjectTypeNode.cs:15
msgid "This project type is not supported by MonoDevelop on {0}."
-msgstr ""
+msgstr "MonoDevelop在{0}上尚未支æŒé¡¹ç›®ç±»åž‹ ."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/UnknownProjectTypeNode.cs:16
-#, fuzzy
msgid "This project type requires {0} to be installed."
-msgstr "必需的æ’件\"{0}\" v{1}未安装。"
+msgstr "此项目类型需è¦å®‰è£… {0}。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/UnknownProjectTypeNode.cs:17
-#, fuzzy
msgid "The {0} add-in is not installed."
-msgstr "必需的æ’件\"{0}\" v{1}未安装。"
+msgstr "外接程åº{0} 未安装。"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.Extensions/UnknownProjectTypeNode.cs:19
msgid "This project type is not supported by MonoDevelop."
-msgstr ""
+msgstr "MonoDevelop尚未支æŒæ­¤é¡¹ç›®ç±»åž‹ã€‚"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:65
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:71
-#, fuzzy
msgid "Building: {0} ({1})"
-msgstr "构建工程 {0}"
+msgstr "正在生æˆ: {0} ({1})"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:86
-#, fuzzy
msgid "Cleaning: {0} ({1})"
-msgstr "构建工程 {0}"
+msgstr "正在清ç†: {0} ({1})"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/InvalidProjectFileException.cs:7
-#, fuzzy
msgid "errorCode"
-msgstr "æºä»£ç "
+msgstr "错误ç "
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/InvalidProjectFileException.cs:7
msgid "errorSubcategory"
-msgstr ""
+msgstr "错误类别"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/InvalidProjectFileException.cs:7
msgid "helpKeyword"
-msgstr ""
+msgstr "帮助关键è¯"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/InvalidProjectFileException.cs:7
-#, fuzzy
msgid "projectFile"
-msgstr "工程文件(_P)"
+msgstr "项目文件"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml:14
-#, fuzzy
msgid "Mono"
-msgstr "个月"
+msgstr "Mono"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml:14
-#, fuzzy
msgid "Microsoft Visual Studio"
-msgstr "Visual Studio"
+msgstr "Microsoft Visual Studio"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml:14
msgid "Invariant"
-msgstr ""
+msgstr "常é‡"
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml:16
msgid ""
"Xamarin.iOS projects are not supported in MonoDevelop on Windows. You need "
"to use Visual Studio, or Xamarin Studio on Mac."
msgstr ""
+"Xamarin.iOS 项目在Windows中的 MonoDevelop ä¸æ”¯æŒ. 你需è¦ä½¿ç”¨ Visual Studio,"
+"或者在 Mac计算机上使用Xamarin Studio ."
#: ../src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml:16
msgid ""
"Xamarin.Mac projects are not supported in MonoDevelop on Windows. You need "
"to use Xamarin Studio on Mac."
msgstr ""
+"Xamarin.Mac 项目在Windows中的MonoDevelopä¸æ”¯æŒ 你需è¦åœ¨Mac中使用 Xamarin "
+"Studio."
#: ../src/core/MonoDevelop.Core/frameworks/framework_NET_1_1.xml:0
msgid "Mono / .NET 1.1"
@@ -860,18 +815,16 @@ msgid "Mono / .NET 4.0"
msgstr "Mono / .NET 4.0"
#: ../src/core/MonoDevelop.Core/frameworks/framework_NET_4_5.xml:0
-#, fuzzy
msgid "Mono / .NET 4.5"
-msgstr "Mono / .NET 4.0"
+msgstr "Mono / .NET 4.5"
#: ../src/core/MonoDevelop.Core/frameworks/framework_NET_3_5_client.xml:0
msgid ".NET 3.5 Client Profile"
-msgstr ""
+msgstr ".NET 3.5 Client Profile"
#: ../src/core/MonoDevelop.Core/frameworks/framework_NET_4_0_client.xml:0
-#, fuzzy
msgid ".NET 4.0 Client Profile"
-msgstr "æ供者"
+msgstr ".NET 4.0 Client Profile"
#: ../src/core/MonoDevelop.Ide/templates/AppConfigFile.xft.xml:4
msgid "Application Configuration File"
@@ -889,7 +842,7 @@ msgstr "应用程åºé…置文件"
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/WorkspaceItemDescriptor.cs:2
#: ../src/addins/CSharpBinding/templates/AssemblyInfo.xft.xml:1
msgid "Misc"
-msgstr "æ‚ç±»"
+msgstr "æ‚项"
#: ../src/core/MonoDevelop.Ide/templates/AppConfigFile.xft.xml:8
msgid "Creates a .NET application configuration file."
@@ -963,14 +916,12 @@ msgid "Creates an empty interface."
msgstr "创建一个空接å£ã€‚"
#: ../src/core/MonoDevelop.Ide/templates/EmptyResourceFile.xft.xml:0
-#, fuzzy
msgid "Resource File"
-msgstr "空资æºæ–‡ä»¶"
+msgstr "资æºæ–‡ä»¶"
#: ../src/core/MonoDevelop.Ide/templates/EmptyResourceFile.xft.xml:0
-#, fuzzy
msgid "Creates a resx resource file."
-msgstr "创建一个空的资æºæ–‡ä»¶ã€‚"
+msgstr "创建一个resx资æºæ–‡ä»¶ã€‚"
#: ../src/core/MonoDevelop.Ide/templates/EmptyStruct.xft.xml:0
msgid "Empty Struct"
@@ -1002,21 +953,20 @@ msgid "Creates an empty XML file."
msgstr "创建一个空的 XML 文件。"
#: ../src/core/MonoDevelop.Ide/templates/GenericProject.xpt.xml:0
-#, fuzzy
msgid "Generic Project"
-msgstr "Gnome# 工程"
+msgstr "常规项目"
#: ../src/core/MonoDevelop.Ide/templates/GenericProject.xpt.xml:0
msgid "Creates a project which can contain any kind of file."
-msgstr ""
+msgstr "创建一个å¯ä»¥åŒ…å«ä»»ä½•ç§ç±»æ–‡ä»¶çš„项目。 "
#: ../src/core/MonoDevelop.Ide/templates/Workspace.xpt.xml:1
msgid "Workspace"
-msgstr ""
+msgstr "工作区"
#: ../src/core/MonoDevelop.Ide/templates/Workspace.xpt.xml:1
msgid "A blank workspace"
-msgstr ""
+msgstr "一个工作区"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:0
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:1
@@ -1039,177 +989,159 @@ msgstr "C#"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:0
msgid "Template for destructor"
-msgstr ""
+msgstr "æžæž„函数的模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:0
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:2
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
-#, fuzzy
msgid "Class name"
-msgstr "ç±»"
+msgstr "ç±»å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:1
msgid "Template for an attribute."
-msgstr ""
+msgstr "一个属性模æ¿ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:1
msgid "The name of the attribute"
-msgstr ""
+msgstr "属性å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:2
msgid "Template for constructor"
-msgstr ""
+msgstr "构造函数模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:3
msgid "Template for Console.WriteLine"
-msgstr ""
+msgstr "Console.WriteLine的模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:4
#: ../src/addins/AspNet/Razor/Razor-templates.xml:7
#: ../src/addins/AspNet/Razor/Razor-templates.xml:8
msgid "Template for switch statement"
-msgstr ""
+msgstr "switch 语å¥çš„模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:4
#: ../src/addins/AspNet/Razor/Razor-templates.xml:7
#: ../src/addins/AspNet/Razor/Razor-templates.xml:8
-#, fuzzy
msgid "Expression to switch on"
-msgstr "正则表达å¼"
+msgstr "表达å¼åˆ‡æ¢"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:4
msgid "Template for void Main method."
-msgstr ""
+msgstr "无返回Main方法模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Template for int Main method."
-msgstr ""
+msgstr " 返回整型 Main 方法模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Template for exception"
-msgstr ""
+msgstr "异常模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "ExceptionName"
-msgstr "选项"
+msgstr "异常å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "Template for an indexer"
-msgstr "模æ¿"
+msgstr "索引器模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "Return type of the indexer"
-msgstr "日积月累(_T)..."
+msgstr "索引器的返回类型"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Type to index with"
-msgstr ""
+msgstr "键入è¦ç´¢å¼•"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Template for a short property"
-msgstr ""
+msgstr "short 属性模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "Property name"
-msgstr "属性"
+msgstr "属性å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Template for a short property with private set."
-msgstr ""
+msgstr "ç§æœ‰short 属性模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "Template for event arguments"
-msgstr "æ示å‚æ•°(_P)"
+msgstr "事件å‚数模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Sets minimum value to a variable"
-msgstr ""
+msgstr "为å˜é‡è®¾ç½®æœ€å°å€¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "Variable name"
-msgstr "é‡åå˜é‡"
+msgstr "å˜é‡å"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Sets maximum value to a variable"
-msgstr ""
+msgstr "设置å˜é‡æœ€å¤§å€¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Access last element of a collection"
-msgstr ""
+msgstr "访问集åˆä¸­çš„最åŽä¸€ä¸ªå…ƒç´ "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "Collection name"
-msgstr "解决方案å(_S):"
+msgstr "集åˆå称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "Template for #region"
-msgstr "模æ¿"
+msgstr "#region 的模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "Region name"
-msgstr "é‡å‘½å"
+msgstr "区域å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
-#, fuzzy
msgid "Template for #if"
-msgstr "模æ¿"
+msgstr " #if模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:5
msgid "Preprocessor expression to evaluate"
-msgstr ""
+msgstr "è¦è®¡ç®—的预处ç†å™¨è¡¨è¾¾å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
msgid "Template checked block"
-msgstr ""
+msgstr "模æ¿æ£€æŸ¥å—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
msgid "Template for class declaration"
-msgstr ""
+msgstr "模æ¿ç±»å£°æ˜Ž"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
-#, fuzzy
msgid "Template for an Interface"
-msgstr "空接å£"
+msgstr "接å£æ¨¡æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
-#, fuzzy
msgid "Interface name"
-msgstr "é‡å方法"
+msgstr "接å£å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
-#, fuzzy
msgid "Template for a Struct"
-msgstr "空结构"
+msgstr "结构模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
-#, fuzzy
msgid "Struct name"
-msgstr "工程文件å"
+msgstr "结构å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
-#, fuzzy
msgid "Template for an Enumeration"
-msgstr "空枚举"
+msgstr "枚举模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:6
-#, fuzzy
msgid "Enumeration name"
-msgstr "空枚举"
+msgstr "枚举å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:7
#: ../src/addins/AspNet/Razor/Razor-templates.xml:9
#: ../src/addins/AspNet/Razor/Razor-templates.xml:10
msgid "Template for 'for' loop"
-msgstr ""
+msgstr " 'for' 循环模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:7
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:8
@@ -1217,31 +1149,28 @@ msgstr ""
#: ../src/addins/AspNet/Razor/Razor-templates.xml:10
#: ../src/addins/AspNet/Razor/Razor-templates.xml:11
#: ../src/addins/AspNet/Razor/Razor-templates.xml:13
-#, fuzzy
msgid "Index"
-msgstr "包å«"
+msgstr "索引"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:7
#: ../src/addins/AspNet/Razor/Razor-templates.xml:9
#: ../src/addins/AspNet/Razor/Razor-templates.xml:10
#: ../src/addins/AspNet/Razor/Razor-templates.xml:11
#: ../src/addins/AspNet/Razor/Razor-templates.xml:13
-#, fuzzy
msgid "Number of iterations"
-msgstr "新建é…ç½®"
+msgstr "迭代次数"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:7
#: ../src/addins/AspNet/Razor/Razor-templates.xml:11
#: ../src/addins/AspNet/Razor/Razor-templates.xml:13
msgid "Template for reverse 'for' loop"
-msgstr ""
+msgstr "å'for'循环模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:8
#: ../src/addins/AspNet/Razor/Razor-templates.xml:14
#: ../src/addins/AspNet/Razor/Razor-templates.xml:15
-#, fuzzy
msgid "Template for 'while' loop"
-msgstr "模æ¿"
+msgstr " 'while' 循环模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:8
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:9
@@ -1252,239 +1181,221 @@ msgstr "模æ¿"
#: ../src/addins/AspNet/Razor/Razor-templates.xml:17
#: ../src/addins/AspNet/Razor/Razor-templates.xml:21
#: ../src/addins/AspNet/Razor/Razor-templates.xml:22
-#, fuzzy
msgid "Expression to evaluate"
-msgstr "正则表达å¼"
+msgstr "表达å¼æ±‚值"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:8
msgid "Template for iterating through a collection"
-msgstr ""
+msgstr "模æ¿è¿­ä»£æ•´ä¸ªé›†åˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:8
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:9
#: ../src/addins/AspNet/Razor/Razor-templates.xml:19
#: ../src/addins/AspNet/Razor/Razor-templates.xml:20
msgid "Collection to iterate through"
-msgstr ""
+msgstr "集åˆé历"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:8
-#, fuzzy
msgid "Name of variable."
-msgstr "é‡åå˜é‡"
+msgstr "å˜é‡å"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:8
msgid "Template for iterating reverse through a collection"
-msgstr ""
+msgstr "模æ¿è¿­ä»£åå‘通过集åˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:8
#: ../src/addins/AspNet/Razor/Razor-templates.xml:16
#: ../src/addins/AspNet/Razor/Razor-templates.xml:17
msgid "Template for 'do...while' loop"
-msgstr ""
+msgstr "'do...while' 循环模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:8
#: ../src/addins/AspNet/Razor/Razor-templates.xml:18
-#, fuzzy
msgid "Template for 'else'"
-msgstr "模æ¿"
+msgstr " 'else'模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:9
#: ../src/addins/AspNet/Razor/Razor-templates.xml:19
#: ../src/addins/AspNet/Razor/Razor-templates.xml:20
msgid "Template for 'foreach' loop"
-msgstr ""
+msgstr "'foreach'循环模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:9
#: ../src/addins/AspNet/Razor/Razor-templates.xml:19
#: ../src/addins/AspNet/Razor/Razor-templates.xml:20
msgid "Identifier for the current element"
-msgstr ""
+msgstr "当å‰å…ƒç´ çš„ID"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:9
#: ../src/addins/AspNet/Razor/Razor-templates.xml:21
#: ../src/addins/AspNet/Razor/Razor-templates.xml:22
msgid "Template for 'if' statement"
-msgstr ""
+msgstr "If 语å¥çš„模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:10
#: ../src/addins/AspNet/Razor/Razor-templates.xml:23
#: ../src/addins/AspNet/Razor/Razor-templates.xml:24
msgid "Template for 'lock' statement"
-msgstr ""
+msgstr "'lock' 语å¥æ¨¡æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:10
#: ../src/addins/AspNet/Razor/Razor-templates.xml:23
#: ../src/addins/AspNet/Razor/Razor-templates.xml:24
msgid "Object to lock"
-msgstr ""
+msgstr "对象é”定"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:10
-#, fuzzy
msgid "Template for namespace"
-msgstr "嵌套的命å空间"
+msgstr "命å空间模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:10
-#, fuzzy
msgid "Namespace name"
-msgstr "å字空间:"
+msgstr "命å空间å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:10
#: ../src/addins/AspNet/Razor/Razor-templates.xml:25
#: ../src/addins/AspNet/Razor/Razor-templates.xml:26
msgid "Template for try...catch"
-msgstr ""
+msgstr " try...catch模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:10
-#, fuzzy
msgid "Template for parentheses"
-msgstr "æ示å‚æ•°(_P)"
+msgstr "括å·æ¨¡æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:10
msgid "Template for type cast"
-msgstr ""
+msgstr "类型转æ¢æ¨¡æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
#: ../src/addins/AspNet/Razor/Razor-templates.xml:27
#: ../src/addins/AspNet/Razor/Razor-templates.xml:28
msgid "Template for try...finally"
-msgstr ""
+msgstr " try...finally模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "Template for 'unchecked' block"
-msgstr ""
+msgstr "'unchecked' å—模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "Template for 'unsafe' block"
-msgstr ""
+msgstr "“unsafeâ€å—模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "Html"
-msgstr ""
+msgstr "HTML"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "bold block"
-msgstr ""
+msgstr "分段"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
-#, fuzzy
msgid "comment block"
-msgstr "公共"
+msgstr "注释å—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "heading 1 block"
-msgstr ""
+msgstr "标题1å—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "heading 2 block"
-msgstr ""
+msgstr "标题2å—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "heading 3 block"
-msgstr ""
+msgstr "标题3å—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "heading 4 block"
-msgstr ""
+msgstr "标题4å—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "italic block"
-msgstr ""
+msgstr "斜体å—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "paragraph block"
-msgstr ""
+msgstr "段è½"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
msgid "Xml"
-msgstr ""
+msgstr "XML"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:11
-#, fuzzy
msgid "Template for comment block"
-msgstr "选择命令"
+msgstr "模æ¿æ³¨é‡Šå—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:13
-#, fuzzy
msgid "Python"
-msgstr "Python 文件"
+msgstr "Python"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
-#, fuzzy
msgid "Template for while block"
-msgstr "模æ¿"
+msgstr " 'while' å—模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
msgid "Template for function block"
-msgstr ""
+msgstr "函数å—模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
-#, fuzzy
msgid "Function name"
-msgstr "动作游æˆ"
+msgstr "函数å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
-#, fuzzy
msgid "Function arguments"
-msgstr "å‚æ•°(_A):"
+msgstr "函数å‚æ•°"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
msgid "Template for class function block"
-msgstr ""
+msgstr "类功能å—模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
-#, fuzzy
msgid "Template for if block"
-msgstr "模æ¿"
+msgstr "ifå—模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
-#, fuzzy
msgid "If condition"
-msgstr "新建é…ç½®"
+msgstr "If æ¡ä»¶"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
-#, fuzzy
msgid "Template for main block"
-msgstr "模æ¿"
+msgstr "main å—模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
msgid "Template for a class deriving from gtk.Window"
-msgstr ""
+msgstr "gtk.Windows 派生类的模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:12
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:13
msgid "Window class name"
-msgstr ""
+msgstr "窗å£ç±»å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:13
msgid "Template for a class loading contents from a gtkbuilder file"
-msgstr ""
+msgstr "gtkbuilder文件内容加载类模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:13
msgid "Path to ui description file (widgets.ui)"
-msgstr ""
+msgstr "用户界é¢æ述文件 (widgets.ui) 路径"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:13
msgid "The top-most child of the window within the gtk.Builder file."
-msgstr ""
+msgstr "最顶层窗å£çš„å­çª—å£å†…ç½® gtk.Builde文件。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectPadContextMenu.addin.xml:3
-#, fuzzy
msgid "Open _With"
-msgstr "使用其他程åºæ‰“å¼€"
+msgstr "打开方å¼(_W)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectPadContextMenu.addin.xml:3
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:10
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
-#, fuzzy
msgid "Run With"
-msgstr "使用其他程åºæ‰“å¼€"
+msgstr "è¿è¡Œæ–¹å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectPadContextMenu.addin.xml:4
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:17
-#, fuzzy
msgid "_Add"
-msgstr "添加"
+msgstr "添加(_A)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectPadContextMenu.addin.xml:4
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:11
@@ -1492,18 +1403,15 @@ msgid "_Tools"
msgstr "工具(_T)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectPadContextMenu.addin.xml:4
-#, fuzzy
msgid "Build Action"
-msgstr "构建解决方案(_D)"
+msgstr "生æˆæ“作"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectPadContextMenu.addin.xml:4
-#, fuzzy
msgid "_Quick Properties"
-msgstr "构建属性"
+msgstr "å¿«æ·å±žæ€§(_Q)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:5
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs:10
-#, fuzzy
msgid "Hidden"
msgstr "éšè—"
@@ -1588,24 +1496,20 @@ msgid "_Toggle Line Comment(s)"
msgstr "切æ¢è¡Œæ³¨é‡Š(_T)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "Comment selected lines of code"
-msgstr "缩进选中的代ç è¡Œ"
+msgstr "注释选中的代ç è¡Œ"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "_Add Line Comment(s)"
-msgstr "切æ¢è¡Œæ³¨é‡Š(_T)"
+msgstr "添加行注释(_A)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "Uncomment selected lines of code"
-msgstr "注释/å–消注释选中的代ç è¡Œ"
+msgstr "å–消注释选中的代ç è¡Œ"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "_Remove Line Comment(s)"
-msgstr "切æ¢è¡Œæ³¨é‡Š(_T)"
+msgstr "删除行注释(_R)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
msgid "Indent selected lines of code"
@@ -1642,7 +1546,7 @@ msgstr "å°å†™é€‰ä¸­å†…容(_L)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TextStylePolicyPanelWidget.cs:2
msgid "_Remove trailing whitespace"
-msgstr ""
+msgstr "删除尾éšç©ºæ ¼(_R)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
msgid "Join the current line with the next line"
@@ -1653,52 +1557,44 @@ msgid "_Join Lines"
msgstr "连接行(_J)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "Sort the selected lines"
-msgstr "剪切选中内容"
+msgstr "排åºå·²é€‰æ‹©è¡Œ"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "_Sort Lines"
-msgstr "连接行(_J)"
+msgstr "排åºè¡Œ(_S)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
msgid "_Word Count..."
msgstr "字数统计(_W)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "_Insert Guid"
-msgstr "æ’å…¥æ¡ç›®"
+msgstr "æ’å…¥Guid(_I)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "_Options..."
-msgstr "选项..."
+msgstr "选项(_O)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "Show MonoDevelop options window"
-msgstr "显示 MonoDevelop 首选项窗å£"
+msgstr "显示 MonoDevelop 选项窗å£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "Pr_eferences..."
-msgstr "选项"
+msgstr "高级é…ç½®(_E)...."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
msgid "Show MonoDevelop preferences window"
-msgstr "显示 MonoDevelop 首选项窗å£"
+msgstr "显示 MonoDevelop 高级é…置窗å£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
-msgid "Po_licies..."
-msgstr "编译器:"
+msgid "Custom Po_licies..."
+msgstr "自定义策略(_L)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
-#, fuzzy
msgid "Edit custom sets of policies which can be applied to solutions"
-msgstr "编辑应用于新工程的默认规则"
+msgstr "编辑应用于解决方案的自定义设置策略"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7
msgid "_Insert Standard Header"
@@ -1725,19 +1621,16 @@ msgid "Toggles all the foldings in the document."
msgstr "在文档中切æ¢æ‰€æœ‰æŠ˜å ã€‚"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:8
-#, fuzzy
msgid "Toggle _Definitions"
-msgstr "æè¿°"
+msgstr "切æ¢å®šä¹‰(_D)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:8
-#, fuzzy
msgid "Toggles foldings of all method and property bodies."
-msgstr "折å æ‰€æœ‰æ–¹æ³•å’Œå±žæ€§ä½“。"
+msgstr "切æ¢æŠ˜å æ‰€æœ‰æ–¹æ³•å’Œå±žæ€§å†…容。"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:9
-#, fuzzy
msgid "_Format Document"
-msgstr "文档"
+msgstr "æ ¼å¼åŒ–文档(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:10
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
@@ -1750,15 +1643,15 @@ msgstr "文档"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/StartupOptionsPanel.cs:2
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs:3
msgid "Project"
-msgstr "工程"
+msgstr "项目"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
msgid "_Add New Project..."
-msgstr "添加新工程...(_A)"
+msgstr "添加新项目...(_A)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
msgid "Add a new project to the selected solution"
-msgstr "添加新工程到选中的解决方案"
+msgstr "添加新项目到选中的解决方案"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
msgid "_Add New Workspace..."
@@ -1774,83 +1667,72 @@ msgstr "添加新解决方案...(_A)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
msgid "Add a new child solution to the selected workspace"
-msgstr ""
+msgstr "将一个新的å­è§£å†³æ–¹æ¡ˆæ·»åŠ åˆ°é€‰æ‹©çš„工作区"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
-#, fuzzy
msgid "Add Solution _Folder"
-msgstr "添加到解决方案"
+msgstr "添加解决方案文件夹(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
msgid "Add a new solution folder to the selected solution"
-msgstr ""
+msgstr "å‘选定的解决方案中添加新的解决方案文件夹"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
msgid "Add a project to the selected solution"
-msgstr ""
+msgstr "将项目添加到选定的解决方案"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
-#, fuzzy
msgid "Add Existing _Project..."
-msgstr "添加已存在的工程(_P)"
+msgstr "添加现有项目(_P)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
msgid "Add an existing item to the selected workspace"
-msgstr ""
+msgstr "将现有项添加到选择的工作区"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
-#, fuzzy
msgid "Add Existing _Item..."
-msgstr "添加已存在的工程(_P)"
+msgstr "添加现有项(_I)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
msgid "_Remove From Project"
msgstr "从工程中删除(_R)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
-#, fuzzy
msgid "Remove an item from the project"
-msgstr "从工程中删除(_R)"
+msgstr "从项目中移除项"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
-#, fuzzy
msgid "_Options"
-msgstr "选项"
+msgstr "选项(_O)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
msgid "Show options window"
-msgstr ""
+msgstr "显示选项窗å£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
-#, fuzzy
msgid "_Solution Options"
-msgstr "解决方案选项"
+msgstr "解决方案选项(_S)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
-#, fuzzy
msgid "Show solution options window"
-msgstr "解决方案选项"
+msgstr "显示解决方案选项窗å£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:4
-#, fuzzy
msgid "Project _Options"
-msgstr "工程选项"
+msgstr "项目选项(_O)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:11
-#, fuzzy
msgid "Show project options window"
-msgstr "上一个窗å£(_P)"
+msgstr "显示项目选项窗å£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Add and remove project references"
-msgstr "编辑引用"
+msgstr "添加删除项目引用"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Edit References..."
-msgstr "编辑引用..."
+msgstr "编辑引用(_E)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
msgid "New _File..."
@@ -1862,160 +1744,134 @@ msgid "Create a new file"
msgstr "创建新文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Add existing files to the project"
-msgstr "添加已存在的工程(_P)"
+msgstr "为项目添加已存在文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Add Files..."
-msgstr "添加文件..."
+msgstr "添加文件(&A)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
msgid "Adds files from a folder recursively"
-msgstr ""
+msgstr "从一个文件夹递归添加文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Add Files from Folder..."
-msgstr "添加文件..."
+msgstr "从文件夹中添加文件(_A)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Adds and existing folder and its contents"
-msgstr "添加已存在的工程(_P)"
+msgstr "添加和现有的文件夹åŠå…¶å†…容"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Add Existing Folder..."
-msgstr "添加已存在的工程(_P)"
+msgstr "加现有文件夹(&A)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "New _Folder"
-msgstr "新建文件夹"
+msgstr "新建文件夹(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Create a new folder"
msgstr "创建新文件夹"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Add existing file to the project"
-msgstr "添加已存在的工程(_P)"
+msgstr "加入现有的文件到项目"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Include To Project"
-msgstr "包å«è¿›å·¥ç¨‹"
+msgstr "包å«è¿›å·¥ç¨‹(_I)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Build All"
-msgstr "构建"
+msgstr "生æˆå…¨éƒ¨(_B)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Build all projects of all solutions"
-msgstr "构建解决方案"
+msgstr "生æˆæ‰€æœ‰çš„解决方案的所有项目"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
msgid "Buil_d"
-msgstr "构建(_D)"
+msgstr "生æˆ(_D)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Build the current project"
-msgstr "清除最近打开的工程"
+msgstr "生æˆå½“å‰é¡¹ç›®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Rebuild all projects of all solutions"
-msgstr "构建解决方案"
+msgstr "é‡æ–°ç”Ÿæˆæ‰€æœ‰è§£å†³æ–¹æ¡ˆçš„所有项目"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Rebuild All"
-msgstr "é‡æ–°æž„建"
+msgstr "全部é‡æ–°ç”Ÿæˆ(_R)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Rebuild the current project"
-msgstr "清除最近打开的工程"
+msgstr "é‡æ–°ç”Ÿæˆå½“å‰é¡¹ç›®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "R_ebuild"
-msgstr "é‡æ–°æž„建"
+msgstr "é‡æ–°ç”Ÿæˆ(_E)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Set As Startup Project"
-msgstr "设定为å¯åŠ¨å·¥ç¨‹"
+msgstr "设置为å¯åŠ¨é¡¹ç›®(_S)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
msgid "Start program without debugging"
-msgstr ""
+msgstr "å¯åŠ¨ç¨‹åºè€Œä¸è°ƒè¯•"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:18
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs:8
msgid "Start Without Debugging"
-msgstr ""
+msgstr "ä¸è°ƒè¯•å¯åŠ¨"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Run With List"
-msgstr "使用其他程åºæ‰“å¼€"
+msgstr "åŒåˆ—表è¿è¡Œ"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Run current project"
-msgstr "最近工程"
+msgstr "è¿è¡Œå½“å‰é¡¹ç›®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Run Item"
-msgstr "é‡å项目"
+msgstr "è¿è¡Œé¡¹ç›®(_R)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Clean the selected project or solution"
-msgstr "选择目标ä½ç½®"
+msgstr "清ç†æ‰€é€‰çš„项目或解决方案"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "C_lean"
-msgstr "清ç†"
+msgstr "清ç†(_L)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Clean all projects of all solutions"
-msgstr "选择目标ä½ç½®"
+msgstr "清ç†æ‰€æœ‰è§£å†³æ–¹æ¡ˆä¸­çš„所有项目"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Clean All"
-msgstr "新建文件夹"
+msgstr "清ç†æ‰€æœ‰(_C)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
msgid "Copy the assembly to the output directory when building the project"
-msgstr ""
+msgstr "生æˆé¡¹ç›®æ—¶å°†ç¨‹åºé›†å¤åˆ¶åˆ°è¾“出目录"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Local Copy"
-msgstr "本地副本引用"
+msgstr "本地副本(_L)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
msgid "Stop current build or application execution"
msgstr "åœæ­¢æ­£åœ¨è¿›è¡Œçš„构建或应用程åºæ‰§è¡Œ"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Stop"
-msgstr "åœæ­¢"
+msgstr "åœæ­¢(&S)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:8
@@ -2023,73 +1879,62 @@ msgid "Active Configuration"
msgstr "活动é…ç½®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Custom command list"
-msgstr "编译器命令:"
+msgstr "自定义命令列表"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Reload selected project or solution"
-msgstr "选择目标ä½ç½®"
+msgstr "é‡æ–°åŠ è½½æ‰€é€‰é¡¹ç›®æˆ–解决方案"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
msgid "Reload"
-msgstr "é‡æ–°è£…å…¥"
+msgstr "é‡æ–°åŠ è½½"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Unloads selected project"
-msgstr "选择目标ä½ç½®"
+msgstr "å¸è½½æ‰€é€‰é¡¹ç›®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Unload"
-msgstr "é‡æ–°è£…å…¥"
+msgstr "å¸è½½"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
msgid "Edit selected item"
-msgstr ""
+msgstr "编辑所选项"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Edit File"
-msgstr "æ供者"
+msgstr "编辑文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Convert selected solution to another format"
-msgstr "将选中的文本转æ¢æˆå°å†™"
+msgstr "将选定的解决方案转æ¢ä¸ºå¦ä¸€ç§æ ¼å¼"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "_Export..."
-msgstr "导出..."
+msgstr "导出(_E)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:8
-#, fuzzy
msgid "Active Runtime"
-msgstr "新建布局"
+msgstr "活动è¿è¡Œæ—¶"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
msgid "Apply Policy..."
-msgstr ""
+msgstr "应用策略..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Export Policy..."
-msgstr "导出..."
+msgstr "导出策略..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
-#, fuzzy
msgid "Run Code Analysis on Solution"
-msgstr "关闭解决方案(_U)"
+msgstr "在解决方案上è¿è¡Œä»£ç åˆ†æž"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:45
-#, fuzzy
msgid "Run Code Analysis on Project"
-msgstr "ILAsm 控制å°å·¥ç¨‹"
+msgstr "对项目è¿è¡Œä»£ç åˆ†æž"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:14
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:35
@@ -2108,103 +1953,90 @@ msgid "File"
msgstr "文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_Open..."
-msgstr "打开(_P)..."
+msgstr "打开(_O)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Open file or solution"
msgstr "打开文件或解决方案"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_File..."
-msgstr "新建文件(_F)..."
+msgstr "文件(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Save the active document"
msgstr "ä¿å­˜æ´»åŠ¨æ–‡æ¡£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_Save"
-msgstr "ä¿å­˜"
+msgstr "ä¿å­˜(_S)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Save all open files"
msgstr "ä¿å­˜æ‰“开的全部文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Save A_ll"
-msgstr "全部ä¿å­˜"
+msgstr "ä¿å­˜æ‰€æœ‰(_L)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_Solution..."
-msgstr "新建解决方案"
+msgstr "解决方案(&S)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Create a new solution"
-msgstr "清ç†è§£å†³æ–¹æ¡ˆ"
+msgstr "创建新解决方案"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_Workspace..."
-msgstr "添加新工程..."
+msgstr "工作区(_W)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Create a new workspace"
-msgstr "创建新文件夹"
+msgstr "创建一个工作区"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "_Close File"
msgstr "关闭文件(_C)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Close active file"
-msgstr "删除文件"
+msgstr "关闭活动文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Close _All"
-msgstr "全部关闭"
+msgstr "关闭全部(_A)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Close All Files"
-msgstr "关闭文件(_C)"
+msgstr "圈闭全部文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:13
msgid "C_lose Workspace"
-msgstr ""
+msgstr "关闭工作区(_L)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Close all solutions open in the current workspace"
-msgstr ""
+msgstr "关闭所有在当å‰çš„工作空间打开的解决方案"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "C_lose"
-msgstr "关闭"
+msgstr "关闭(_L)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Close the active solution or workspace item"
-msgstr ""
+msgstr "关闭当å‰è§£å†³æ–¹æ¡ˆæˆ–工作区项"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:17
-#, fuzzy
msgid "_Revert"
-msgstr "删除"
+msgstr "还原(_R)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Revert to a saved version of the file"
-msgstr ""
+msgstr "æ¢å¤åˆ°å·²ä¿å­˜çš„版本的文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Save _As..."
@@ -2212,7 +2044,7 @@ msgstr "å¦å­˜ä¸º(_A)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Save the current file with a different name"
-msgstr ""
+msgstr "用一个ä¸åŒçš„å称ä¿å­˜å½“å‰æ–‡ä»¶"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "_Print..."
@@ -2227,18 +2059,16 @@ msgid "Print Previe_w"
msgstr "打å°é¢„览(_W)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Show print preview"
-msgstr "打å°é¢„览(_W)"
+msgstr "显示打å°é¢„览"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Page Set_up"
-msgstr ""
+msgstr "页é¢è®¾ç½®(_U)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Show page setup"
-msgstr "å¯åŠ¨æ—¶æ˜¾ç¤º(_S)"
+msgstr "显示页é¢è®¾ç½®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:5
@@ -2246,126 +2076,110 @@ msgid "Recent _Files"
msgstr "最近文件(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_Clear"
-msgstr "清ç†"
+msgstr "清ç†(_C)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:18
msgid "Clear recent files"
-msgstr "清除最近打开的文件"
+msgstr "清除最近使用的文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Recent Pro_jects"
-msgstr "最近工程"
+msgstr "最近项目(_J)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Clear recent solutions"
-msgstr "清除最近打开的解决方案(_C)"
+msgstr "清除最近的解决方案"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "_Quit"
msgstr "退出(_Q)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Quit MonoDevelop"
-msgstr "关于 MonoDevelop"
+msgstr "退出 MonoDevelop"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_Open in Terminal"
-msgstr "用终端打开"
+msgstr "在终端中打开(_O)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Opens a terminal in this folder"
-msgstr ""
+msgstr "在此文件夹中打开一个终端,"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_Open Folder"
-msgstr "新建文件夹"
+msgstr "打开文件夹(_O) "
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Opens the folder in a file manager."
-msgstr ""
+msgstr "用文件管ç†å™¨æ‰“开此文件夹"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "O_pen Containing Folder"
-msgstr "新建文件夹"
+msgstr "打开包å«çš„文件夹(_P)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Opens the folder that contains this file."
-msgstr ""
+msgstr "打开包å«è¯¥æ–‡ä»¶çš„文件夹。"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Reveal in Finder"
-msgstr "在文件中进行替æ¢(_E)..."
+msgstr "在Finder中显示"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Reveals the file in Finder."
-msgstr ""
+msgstr "在Finder中显示文件."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs:7
-#, fuzzy
msgid "Build action"
-msgstr "构建解决方案(_D)"
+msgstr "生æˆæ“作"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_Properties"
-msgstr "属性"
+msgstr "属性(_P)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "_Copy to Output Directory"
-msgstr "<b>输出目录</b>"
+msgstr "å¤åˆ¶åˆ°è¾“出目录(_C)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Require Specific Version"
-msgstr "版本"
+msgstr "需è¦ç‰¹å®šçš„版本"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Closes all opened files in a tab"
-msgstr "ä¿å­˜æ‰“开的全部文件"
+msgstr "关闭所有在选项å¡æ‰“开的文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "C_lose Others"
-msgstr "关闭文件(_C)"
+msgstr "关闭其他(_L)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Closes all opened files except for the active file"
-msgstr ""
+msgstr "关闭活动文件以外的文件,"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "Copy the file path to the clipboard"
-msgstr "å¤åˆ¶é€‰ä¸­å†…容"
+msgstr "将文件路径å¤åˆ¶åˆ°å‰ªè´´æ¿"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
-#, fuzzy
msgid "C_opy file path/name"
-msgstr "工程文件å"
+msgstr "å¤åˆ¶æ–‡ä»¶è·¯å¾„/å称(_O)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "S_witch maximize/normal view"
-msgstr ""
+msgstr "切æ¢æœ€å¤§/正常视图(_W)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Reopen Closed Tab"
-msgstr ""
+msgstr "é‡æ–°æ‰“开关闭的标签页"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15
msgid "Opens the last tab that has been closed"
-msgstr ""
+msgstr "打开已关闭的最åŽä¸€ä¸ªé€‰é¡¹å¡"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:16
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs:35
@@ -2385,28 +2199,24 @@ msgid "_New Layout..."
msgstr "新建布局(_N)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
-#, fuzzy
msgid "Create new layout"
-msgstr "创建新文件夹"
+msgstr "创建新布局"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
msgid "_Delete Current Layout"
msgstr "删除当å‰å¸ƒå±€(_D)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
-#, fuzzy
msgid "Delete current layout"
-msgstr "删除当å‰å¸ƒå±€(_D)"
+msgstr "删除当å‰å¸ƒå±€"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
-#, fuzzy
msgid "Active Layout"
-msgstr "新建布局"
+msgstr "活动布局"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
-#, fuzzy
msgid "Switch active layout"
-msgstr "新建布局"
+msgstr "切æ¢æ´»åŠ¨å¸ƒå±€"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
msgid "_Full Screen"
@@ -2414,18 +2224,16 @@ msgstr "å…¨å±(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
msgid "Set full screen mode"
-msgstr ""
+msgstr "设置的全å±æ¨¡å¼"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
-#, fuzzy
msgid "Open selected document"
-msgstr "ä¿å­˜æ´»åŠ¨æ–‡æ¡£"
+msgstr "打开已选择文档"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.InstrumentationViewerDialog.cs:2
-#, fuzzy
msgid "_Open"
-msgstr "打开"
+msgstr "打开(_O)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
msgid "Display Options List"
@@ -2436,9 +2244,8 @@ msgid "Reset Options"
msgstr "é‡ç½®é€‰é¡¹"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
-#, fuzzy
msgid "Refresh the tree"
-msgstr "刷新"
+msgstr "刷新树"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs:51
@@ -2449,119 +2256,108 @@ msgstr "刷新"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
msgid "Collapse All Nodes"
-msgstr ""
+msgstr "折å æ‰€æœ‰èŠ‚点"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
msgid "List of programs to open with"
-msgstr ""
+msgstr "打开程åºåˆ—表"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
-#, fuzzy
msgid "Show Next"
-msgstr "显示结果é¢æ¿"
+msgstr "显示下一个"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
msgid "Move cursor to next error or search match"
-msgstr ""
+msgstr "将光标移动到下一个错误或æœç´¢åŒ¹é…项"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
-#, fuzzy
msgid "Show Previous"
-msgstr "查找上一个(_P)"
+msgstr "显示å‰ä¸€ä¸ª"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:17
msgid "Move cursor to previous error or search match"
-msgstr ""
+msgstr "将光标移动到å‰ä¸€ä¸ªé”™è¯¯æˆ–æœç´¢åŒ¹é…项"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:18
msgid "Navigate _Back"
-msgstr ""
+msgstr "åŽé€€(_B)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:18
msgid "Move to previous point in code navigation history"
-msgstr ""
+msgstr "移动到代ç å¯¼èˆªåŽ†å²è®°å½•ä¸­çš„上一页点"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:18
msgid "Navigate _Forward"
-msgstr ""
+msgstr "å‘å‰(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:18
msgid "Move to next point in code navigation history"
-msgstr ""
+msgstr "移动到代ç å¯¼èˆªåŽ†å²è®°å½•ä¸­çš„下一个点"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:18
-#, fuzzy
msgid "Navigate _History"
-msgstr "é…ç½®"
+msgstr "导航历å²(_H)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:18
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:7
msgid "Select a point from the navigation history"
-msgstr ""
+msgstr "从导航历å²è®°å½•ä¸­é€‰æ‹©ä¸€ä¸ªç‚¹"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:18
msgid "_Clear Navigation History"
-msgstr ""
+msgstr "清除导航历å²è®°å½•(_C)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:18
msgid "Clear the navigation history"
-msgstr ""
+msgstr "清除导航历å²è®°å½•"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
msgid "_Zoom In"
-msgstr ""
+msgstr "放大(_Z)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
msgid "Zooms view in"
-msgstr ""
+msgstr "放大视图"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
msgid "Zoom _Out"
-msgstr ""
+msgstr "缩å°(_O)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
msgid "Zooms view out"
-msgstr ""
+msgstr "缩å°è§†å›¾"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
-#, fuzzy
msgid "_Normal Size"
-msgstr "中"
+msgstr "正常尺寸(_N)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
-#, fuzzy
msgid "Resets zoom to default"
-msgstr "æ¢å¤é»˜è®¤å€¼"
+msgstr "é‡ç½®ä¸ºé»˜è®¤çš„缩放"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
-#, fuzzy
msgid "2 Columns"
-msgstr "列"
+msgstr "2列"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
-#, fuzzy
msgid "1 Column"
-msgstr "列"
+msgstr "1 列"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
-#, fuzzy
msgid "Move to Next Notebook"
-msgstr "å‘上一行"
+msgstr "移动到下一个笔记本"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
-#, fuzzy
msgid "Move to Previous Notebook"
-msgstr "上一个书签"
+msgstr "移动到å‰ä¸€ç¬”记本"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
-#, fuzzy
msgid "_Focus Document"
-msgstr "文档"
+msgstr "关注文档(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
-#, fuzzy
msgid "Focus current document"
-msgstr "打å°å½“å‰æ–‡æ¡£"
+msgstr "关注当å‰æ–‡æ¡£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19
msgid "Welcome Page"
@@ -2574,14 +2370,12 @@ msgid "Tools"
msgstr "工具"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:21
-#, fuzzy
msgid "Manage add-ins"
-msgstr "正在装入æ’件"
+msgstr "管ç†åŠ è½½é¡¹"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:21
-#, fuzzy
msgid "_Add-in Manager"
-msgstr "æ’件管ç†å™¨(_A)..."
+msgstr "加载项管ç†å™¨(_A)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:21
msgid "Tool List"
@@ -2589,16 +2383,15 @@ msgstr "工具列表"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:22
msgid "Instrumentation Monitor"
-msgstr ""
+msgstr "仪表检测"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:23
msgid "Start Session Recorder"
-msgstr ""
+msgstr "开始会议记录"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:24
-#, fuzzy
msgid "Replay Session..."
-msgstr "替æ¢(_R)..."
+msgstr "é‡æ’­ä¼šè¯..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:26
#: ../src/addins/MonoDevelop.GtkCore/templates/Window.xft.xml:0
@@ -2607,43 +2400,36 @@ msgid "Window"
msgstr "窗å£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27
-#, fuzzy
msgid "_Next Document"
-msgstr "文档"
+msgstr "下一个文档(_N)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27
-#, fuzzy
msgid "Show next document"
-msgstr "ä¿å­˜æ´»åŠ¨æ–‡æ¡£"
+msgstr "显示下一个文档"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27
-#, fuzzy
msgid "_Previous Document"
-msgstr "文档"
+msgstr "上一个文档(_P)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27
-#, fuzzy
msgid "Show previous document"
-msgstr "上一个窗å£(_P)"
+msgstr "显示上一个文档"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27
-#, fuzzy
msgid "Document List"
-msgstr "文档"
+msgstr "文档列表"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27
msgid "Window List"
msgstr "窗å£åˆ—表"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27
-#, fuzzy
msgid "Switch to next document"
-msgstr "ä¿å­˜æ´»åŠ¨æ–‡æ¡£"
+msgstr "切æ¢åˆ°ä¸‹ä¸€æ–‡æ¡£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27
-#, fuzzy
msgid "Switch to previous document"
-msgstr "上一个窗å£(_P)"
+msgstr "切æ¢åˆ°ä¸Šä¸€ä¸ªæ–‡æ¡£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:28
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Pads.addin.xml:3
@@ -2652,33 +2438,28 @@ msgid "Help"
msgstr "帮助"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
-#, fuzzy
msgid "API Documentation"
-msgstr "文档"
+msgstr "API文档"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
-#, fuzzy
msgid "Show help"
-msgstr "显示结果é¢æ¿"
+msgstr "显示帮助"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
-#, fuzzy
msgid "_Tip of the Day"
-msgstr "日积月累"
+msgstr "æ¯æ—¥æŠ€å·§(_T)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
-#, fuzzy
msgid "Show tip of the day"
-msgstr "日积月累"
+msgstr "æ¯æ—¥æŠ€å·§"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
-#, fuzzy
msgid "Open Log Directory"
-msgstr "目标目录(_T)"
+msgstr "打开日志目录"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
msgid "Opens the directory where the diagnostic logs are stored"
-msgstr ""
+msgstr "打开存储诊断日志的目录"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
msgid "_About"
@@ -2686,25 +2467,24 @@ msgstr "关于(_A)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
msgid "Show about dialog"
-msgstr ""
+msgstr "显示关于对è¯æ¡†"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
-#, fuzzy
msgid "_Check for Updates..."
-msgstr "正在添加文件..."
+msgstr "检查更新(_C)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
msgid "Check for updates to MonoDevelop and packages it requires"
-msgstr ""
+msgstr "检查更新 MonoDevelop 和它需è¦çš„包"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/FeedbackDialog.cs:2
msgid "Send Feedback"
-msgstr ""
+msgstr "å‘é€å馈"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:29
msgid "Send feedback to the MonoDevelop development team"
-msgstr ""
+msgstr "å°†å馈å‘é€ç»™ MonoDevelop å¼€å‘团队"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:30
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs:3
@@ -2719,18 +2499,16 @@ msgid "_Find..."
msgstr "查找(_F)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:31
-#, fuzzy
msgid "Search for text"
-msgstr "æœç´¢å·²å–消。"
+msgstr "æœç´¢æ–‡æœ¬"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:31
msgid "_Replace..."
msgstr "替æ¢(_R)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:31
-#, fuzzy
msgid "Search for and replace text"
-msgstr "æœç´¢å·²å–消。"
+msgstr "æœç´¢å’Œæ›¿æ¢æ–‡æœ¬"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:32
msgid "Find _Next"
@@ -2738,166 +2516,143 @@ msgstr "查找下一个(_N)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:32
msgid "Search forwards for the same text"
-msgstr ""
+msgstr "å‘å‰ç´¢ç´¢ç›¸åŒçš„文本"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:32
msgid "Find _Previous"
msgstr "查找上一个(_P)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:32
-#, fuzzy
msgid "Search backwards for the same text"
-msgstr "在åŒä¸€è¡Œæ”¾ç½®ç¨‹åºå—的开始符(_S)"
+msgstr "å‘åŽæœç´¢ç›¸åŒçš„文本"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:33
msgid "Find _Next (Emacs behavior)"
-msgstr ""
+msgstr "查找下一个(Emacs æ–¹å¼)(_N)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:33
msgid "Search forwards for the same text with emacs behavior"
-msgstr ""
+msgstr "用emacs æ–¹å¼å‘å‰æœç´¢ç›¸åŒçš„文本"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:33
-#, fuzzy
msgid "Find _Previous (Emacs behavior)"
-msgstr "查找上一个选中区域(_P)"
+msgstr "查找上一个(Emacs æ–¹å¼)(_P)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:33
-#, fuzzy
msgid "Search backwards for the same text with emacs behavior"
-msgstr "在åŒä¸€è¡Œæ”¾ç½®ç¨‹åºå—的开始符(_S)"
+msgstr "用emacs æ–¹å¼å‘åŽæœç´¢åŒä¸€æ–‡æœ¬"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:34
msgid "Find Next Selection"
-msgstr "查找下一个选中区域"
+msgstr "查找下一个选择"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:34
msgid "Search forwards for the selected text"
-msgstr ""
+msgstr "å‘å‰æœç´¢æ‰€é€‰æ–‡æœ¬"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:34
msgid "Find _Previous Selection"
-msgstr "查找上一个选中区域(_P)"
+msgstr "查找上一个选中(_P)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:34
msgid "Search backwards for the selected text"
-msgstr ""
+msgstr "å‘åŽæœç´¢æ‰€é€‰æ–‡æœ¬"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:35
msgid "F_ind in Files..."
msgstr "在文件中查找(_I)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:35
-#, fuzzy
msgid "Search for text in all files of a directory"
-msgstr "装入时æœç´¢æ–°æ–‡ä»¶(_F)"
+msgstr "在一个目录的所有文件中æœç´¢æ–‡æœ¬"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:35
-#, fuzzy
msgid "R_eplace in Files..."
-msgstr "在文件中进行替æ¢(_E)..."
+msgstr "在文件中替æ¢(_E)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:35
msgid "Search for and replace text in all files of a directory"
-msgstr ""
+msgstr "æœç´¢å¹¶æ›¿æ¢ç›®å½•çš„所有文件中的文本"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:36
-#, fuzzy
msgid "Go to Type..."
-msgstr "转到行(_G)..."
+msgstr "转至类型..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:36
msgid "Jump to the declaration of type in the current workspace"
-msgstr ""
+msgstr "跳转到当å‰å·¥ä½œåŒºä¸­çš„类型的声明"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:36
-#, fuzzy
msgid "Go to File..."
-msgstr "转到行(_G)..."
+msgstr "转至文件..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:36
-#, fuzzy
msgid "Jump to a file in the current workspace"
-msgstr "打开文件或解决方案"
+msgstr "跳转到当å‰å·¥ä½œåŒºä¸­çš„文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:36
-#, fuzzy
msgid "Navigate To..."
-msgstr "é…ç½®"
+msgstr "导航到..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:36
-#, fuzzy
msgid "Jump to a item in the current workspace"
-msgstr "打开文件或解决方案"
+msgstr "跳转到当å‰å·¥ä½œåŒºä¸­çš„项"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Toggle bookmark"
msgstr "切æ¢ä¹¦ç­¾"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "_Toggle Bookmark"
-msgstr "切æ¢ä¹¦ç­¾"
+msgstr "q切æ¢ä¹¦ç­¾(_T)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Go to previous bookmark"
msgstr "上一个书签"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Pre_vious Bookmark"
-msgstr "上一个书签"
+msgstr "上一个书签(_V)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Go to next bookmark"
-msgstr "下一个书签"
+msgstr "转到下一个书签"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Ne_xt Bookmark"
-msgstr "下一个书签"
+msgstr "下一个书签(_X)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Clear bookmarks"
msgstr "清除书签"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "_Clear Bookmarks"
-msgstr "清除书签"
+msgstr "清除书签(_C)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "_Go to Line..."
-msgstr "转到行(_G)..."
+msgstr "转至行(_G)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Go to a specific line"
-msgstr "å‘一页行"
+msgstr "转到指定行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Use Selection for Find"
-msgstr "大写选中内容(_U)"
+msgstr "使用查找所选内容"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Uses the current selection as find string"
-msgstr "连接字符串"
+msgstr "使用当å‰æ‰€é€‰å†…容作为查找字符串"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
-#, fuzzy
msgid "Use Selection for Replace"
-msgstr "代ç æ¨¡æ¿"
+msgstr "使用替æ¢æ‰€é€‰å†…容"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:37
msgid "Uses the current selection as replace string"
-msgstr ""
+msgstr "使用当å‰æ‰€é€‰å†…容作为替æ¢å­—符串"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:40
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:4
@@ -2907,40 +2662,38 @@ msgstr "文本编辑器"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Show Completion Window"
-msgstr ""
+msgstr "显示完æˆçª—å£"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Toggle Completion Suggestion Mode"
-msgstr ""
+msgstr "切æ¢å®Œæˆå»ºè®®æ¨¡å¼"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid ""
"Inserts a template or when something is selected surrounds selection with a "
"template"
-msgstr ""
+msgstr "æ’入模æ¿æˆ–当一些东西是选定的环绕选择与模æ¿"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs:54
-#, fuzzy
msgid "I_nsert Template..."
-msgstr "模æ¿(_T)"
+msgstr "æ’入模æ¿(_N)..."
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Go to end of line"
-msgstr "转到行"
+msgstr "跳到行末"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Go to beginning of line"
-msgstr ""
+msgstr "转到行首"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Delete left character"
-msgstr "删除左一个字符"
+msgstr "删除左侧的字符"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Delete right character"
-msgstr ""
+msgstr "删除左侧字符"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Go left one character"
@@ -2960,12 +2713,11 @@ msgstr "å‘上一行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Go to beginning of document"
-msgstr ""
+msgstr "转到文档的开始"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Go to end of document"
-msgstr "打å°å½“å‰æ–‡æ¡£"
+msgstr "转到文档的末尾"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Go up one page"
@@ -2981,26 +2733,23 @@ msgstr "å‘上一行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Scroll line down"
-msgstr ""
+msgstr "å‘下一行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Scroll page up"
-msgstr "å‘上一行"
+msgstr "å‘上一页"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Scroll page down"
-msgstr "å‘上一行"
+msgstr "å‘下一页"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Delete entire line"
msgstr "删除整一行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Delete to start of line"
-msgstr "删除到行尾"
+msgstr "删除至行首"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Delete to end of line"
@@ -3008,229 +2757,200 @@ msgstr "删除到行尾"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Deletes to end of line, or if at end, deletes line ending"
-msgstr ""
+msgstr "删除到行结æŸï¼Œæˆ–如果到达末尾,删除行尾"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Move the line or highlighted selection up"
-msgstr ""
+msgstr "行或çªå‡ºæ˜¾ç¤ºé€‰å®šå†…容å‘上移动"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Move the line or highlighted selection down"
-msgstr ""
+msgstr "行或çªå‡ºæ˜¾ç¤ºé€‰å®šå†…容å‘下移动"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Show Parameter List"
-msgstr "å‚æ•°"
+msgstr "显示å‚数列表"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Go to Matching _Brace"
-msgstr "转到匹é…的大括å·(_B)"
+msgstr "转到匹é…的括å·(_B)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Expand selection to the left"
-msgstr ""
+msgstr "å‘左扩展选择范围"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Expand selection to the right"
-msgstr ""
+msgstr "å‘å³æ‰©å±•é€‰æ‹©èŒƒå›´"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Go to previous word"
-msgstr "å‘一页行"
+msgstr "å‘上一è¯"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Go to next word"
-msgstr "å‘上一行"
+msgstr "å‘下一è¯"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to previous word"
-msgstr "å‘一页行"
+msgstr "扩展到å‰ä¸€ä¸ªè¯çš„选择"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to next word"
-msgstr "å‘上一行"
+msgstr "扩展到下一个å•è¯çš„选择"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Go to previous subword"
-msgstr "å‘一页行"
+msgstr "å‘上一个字"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Go to next subword"
-msgstr "å‘上一行"
+msgstr "乡下一个字"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to previous subword"
-msgstr "å‘一页行"
+msgstr "选择扩展到上一个字"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to next subword"
-msgstr "å‘上一行"
+msgstr "选择扩展到下一个字"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to previous line"
-msgstr "å‘一页行"
+msgstr "选择扩展到上一行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to next line"
-msgstr "å‘上一行"
+msgstr "选择扩展到下一行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to line start"
-msgstr "å¤åˆ¶é€‰ä¸­å†…容"
+msgstr "选择扩展到行首"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to line end"
-msgstr "å¤åˆ¶é€‰ä¸­å†…容"
+msgstr "选择扩展到行尾"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Expand selection to document start"
-msgstr ""
+msgstr "选择扩展到文档开始"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Expand selection to document end"
-msgstr ""
+msgstr "选择扩展到文档结æŸ"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to line"
-msgstr "å¤åˆ¶é€‰ä¸­å†…容"
+msgstr "选择扩展到行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Switch caret mode"
-msgstr ""
+msgstr "切æ¢æ’入模å¼"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Insert tab"
-msgstr "æ’å…¥æ¡ç›®"
+msgstr "输入TAB"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Remove tab"
-msgstr "删除"
+msgstr "移除TAB"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Insert new line"
-msgstr "æ’入头"
+msgstr "æ’入新行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Insert line break after the caret"
-msgstr ""
+msgstr "在æ’入符å·åŽæ’å…¥æ¢è¡Œç¬¦"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Move caret to EOL and insert new line"
-msgstr ""
+msgstr "å°†æ’入符å·ç§»åŠ¨åˆ° EOL 并æ’入新行"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Completes the current statement"
-msgstr ""
+msgstr "完æˆå½“å‰è¯­å¥"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Delete previous word"
-msgstr ""
+msgstr "删除å‰ä¸€ä¸ªè¯"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Delete next word"
-msgstr "删除选中区域"
+msgstr "删除下一个è¯"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Delete previous subword"
-msgstr "安装æº"
+msgstr "删除å‰ä¸€ä¸ªå­—"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Delete next subword"
-msgstr "删除选中区域"
+msgstr "删除下一个字"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to page down"
-msgstr "å¤åˆ¶é€‰ä¸­å†…容"
+msgstr "选择扩展到下一页"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Expand selection to page up"
-msgstr "å¤åˆ¶é€‰ä¸­å†…容"
+msgstr "选择扩展到上一页"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Transpose characters"
-msgstr "å‘å³ä¸€ä¸ªå­—符"
+msgstr "字符æ¢ä½"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Swaps the characters on either side of the caret"
-msgstr ""
+msgstr "互æ¢ä¸¤è¾¹æ’入符å·çš„字符"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Recenter editor"
-msgstr "文本编辑器"
+msgstr "å°å¥—的编辑器"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Scrolls the editor so that the caret is centered"
-msgstr ""
+msgstr "滚动的编辑器,使æ’入符å·å±…中"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Toggle block selection mode"
-msgstr "动作"
+msgstr "切æ¢å—选择模å¼"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Duplicate line"
-msgstr "构建:"
+msgstr "é‡å¤çš„è¡Œ"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Dynamic abbrev"
-msgstr ""
+msgstr "动æ€çš„缩写。"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid ""
"Cycles completing the current word from matching words in all open files"
-msgstr ""
+msgstr "周期完æˆå½“å‰çš„å•è¯çš„匹é…å•è¯ä¸­æ‰€æœ‰æ‰“开的文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Find caret"
-msgstr "查找下一个(_N)"
+msgstr "查找符å·"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Animates the text editor caret to help find it"
-msgstr ""
+msgstr "动画文本编辑器æ’入符å·æ¥å¸®ä½ æ‰¾"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Toggle message bubble"
-msgstr ""
+msgstr "切æ¢æ¶ˆæ¯æ³¡æ²«"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "Toggles message bubble on/off"
-msgstr ""
+msgstr "å¼€/关切æ¢æ¶ˆæ¯æ°”泡"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
msgid "_Hide Issues"
-msgstr ""
+msgstr "éšè—问题(_H)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41
-#, fuzzy
msgid "Toggle Issues"
-msgstr "切æ¢æŠ˜å (_T)"
+msgstr "切æ¢é—®é¢˜"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/DefaultPolicyPanels.addin.xml:2
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
@@ -3247,21 +2967,19 @@ msgstr "æºä»£ç "
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:5
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
msgid ".NET Naming Policies"
-msgstr ""
+msgstr ".NET 命åç­–ç•¥"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/DefaultPolicyPanels.addin.xml:2
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:5
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
-#, fuzzy
msgid "Code Formatting"
-msgstr "代ç ç”Ÿæˆ"
+msgstr "代ç æ ¼å¼"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/DefaultPolicyPanels.addin.xml:2
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:5
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
-#, fuzzy
msgid "Standard Header"
-msgstr "标准"
+msgstr "标准头"
# nb.AppendPage(aatp, new Label("Authors"));
# nb.AppendPage(changelog, new Label("ChangeLog"));
@@ -3277,45 +2995,40 @@ msgid "Version Control"
msgstr "版本控制"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:2
-#, fuzzy
msgid "Environment"
-msgstr "é‡åå˜é‡"
+msgstr "环境"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:2
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
-#, fuzzy
msgid "Author Information"
-msgstr "解决方案信æ¯"
+msgstr "作者信æ¯"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:2
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/CompletionCharactersPanel.cs:5
#: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:42
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs:13
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs:61
-#, fuzzy
msgid "Language"
msgstr "语言"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:2
msgid "Key Bindings"
-msgstr ""
+msgstr "键绑定"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:2
msgid "Fonts"
-msgstr ""
+msgstr "字体"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:2
#: ../external/mono-addins/Mono.Addins.Gui/Mono.Addins.Gui/AddinManagerDialog.cs:3
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.AddinManagerDialog.cs:2
-#, fuzzy
msgid "Updates"
msgstr "æ›´æ–°"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:2
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Pads.addin.xml:3
-#, fuzzy
msgid "Tasks"
-msgstr "任务列表"
+msgstr "任务"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:2
msgid "External Tools"
@@ -3327,31 +3040,27 @@ msgstr "工程"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:3
msgid "Load/Save"
-msgstr "装入/ä¿å­˜"
+msgstr "加载/ä¿å­˜"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:3
-#, fuzzy
msgid "Errors and Warnings"
-msgstr "忽略警告"
+msgstr "错误&警告"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:3
-#, fuzzy
msgid "Assembly Folders"
-msgstr "程åºé›†å称"
+msgstr "程åºé›†æ–‡ä»¶å¤¹"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:3
-#, fuzzy
msgid ".NET Runtimes"
-msgstr "è¿è¡Œæ—¶åˆ»ï¼š"
+msgstr ".NET è¿è¡Œæ—¶"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:3
-#, fuzzy
msgid "SDK Locations"
-msgstr "ä½ç½®"
+msgstr "SDK ä½ç½®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:4
msgid "Formatting"
-msgstr ""
+msgstr "æ ¼å¼åŒ–"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:4
msgid "Code Templates"
@@ -3365,22 +3074,19 @@ msgstr "其它"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:7
msgid "Automated Feedback"
-msgstr ""
+msgstr "自动å馈"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/GlobalOptionsDialog.addin.xml:7
-#, fuzzy
msgid "MonoDevelop Maintenance"
-msgstr "MonoDevelop 包"
+msgstr "MonoDevelop 维护"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
-#, fuzzy
msgid "Main Settings"
-msgstr "设置"
+msgstr "主è¦è®¾ç½®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
-#, fuzzy
msgid "Location of Project Files"
-msgstr "MonoDevelop 工程文件"
+msgstr "项目文件的ä½ç½®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Pads.addin.xml:4
@@ -3391,12 +3097,11 @@ msgstr "解决方案"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
msgid "Runtime Options"
-msgstr "è¿è¡Œæ—¶åˆ»é€‰é¡¹"
+msgstr "è¿è¡Œæ—¶é€‰é¡¹"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
-#, fuzzy
msgid "Custom Commands"
-msgstr "编译器命令:"
+msgstr "自定义命令"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
msgid "Configurations"
@@ -3410,9 +3115,8 @@ msgid "Compiler"
msgstr "编译器"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
-#, fuzzy
msgid "Assembly Signing"
-msgstr "程åºé›†å称"
+msgstr "程åºé›†ç­¾å"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
#: ../src/addins/MonoDeveloperExtensions/MonoDeveloperExtensions.addin.xml:1
@@ -3423,36 +3127,32 @@ msgid "Output"
msgstr "输出"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
-#, fuzzy
msgid "Configuration Mappings"
-msgstr "é…ç½®"
+msgstr "é…置映射"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
msgid "Code Analysis"
-msgstr ""
+msgstr "代ç åˆ†æž"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1
-#, fuzzy
msgid "Startup Project"
-msgstr "设定为å¯åŠ¨å·¥ç¨‹"
+msgstr "å¯åŠ¨é¡¹ç›®"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:4
msgid "_File"
msgstr "文件(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:4
-#, fuzzy
msgid "_New"
-msgstr "新建"
+msgstr "新建(_N)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:5
msgid "Recent Solu_tions"
msgstr "最近解决方案(_T)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:5
-#, fuzzy
msgid "_Close"
-msgstr "关闭"
+msgstr "关闭(_C)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:5
#: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.HighlightingPanel.cs:15
@@ -3460,41 +3160,36 @@ msgid "_Edit"
msgstr "编辑(_E)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:6
-#, fuzzy
msgid "_Format"
-msgstr "文件掩ç ï¼š"
+msgstr "æ ¼å¼(_F)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:7
-#, fuzzy
msgid "F_olding"
-msgstr "ç¼–ç "
+msgstr "折å (_O)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:7
msgid "_View"
-msgstr "查看(_V)"
+msgstr "视图(_V)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:7
-#, fuzzy
msgid "_Message Bubbles"
-msgstr "ä¿¡æ¯"
+msgstr "消æ¯æ°”泡(_M)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:7
msgid "_Search"
msgstr "æœç´¢(_S)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:7
-#, fuzzy
msgid "Navigation _History"
-msgstr "é…ç½®"
+msgstr "导航历å²(_H)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:8
msgid "_Project"
-msgstr "工程(_P)"
+msgstr "项目(_P)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:9
-#, fuzzy
msgid "_Build"
-msgstr "构建"
+msgstr "生æˆ(_B)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:10
msgid "_Run"
@@ -3502,7 +3197,7 @@ msgstr "è¿è¡Œ(_R)"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:11
msgid "Session Recorder"
-msgstr ""
+msgstr "回è¯è®°å½•å™¨"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:12
msgid "_Window"
@@ -3523,7 +3218,7 @@ msgstr "MonoDevelop"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:13
msgid "Mono Project"
-msgstr "Mono 工程"
+msgstr "Mono 项目"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:13
msgid "C# Help"
@@ -3535,25 +3230,23 @@ msgstr "C# 角"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:13
msgid "CodePlex"
-msgstr ""
+msgstr "CodePlex"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:13
msgid "MSDN Code Gallery"
-msgstr ""
+msgstr "MSDN 代ç åº“"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MainMenu.addin.xml:13
msgid "Report a Bug"
-msgstr ""
+msgstr "报告Bug"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid ".NET binary resource"
-msgstr ".NET 资æº"
+msgstr ".NET 二进制资æº"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid ".NET XML resource"
-msgstr ".NET 资æº"
+msgstr ".NET XML 资æº"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
msgid "Add-in manifest"
@@ -3573,11 +3266,11 @@ msgstr "Glade 文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
msgid "ChangeLog document"
-msgstr "ChangeLog 文档"
+msgstr "更新日志文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
msgid ".NET program"
-msgstr ".NET 项目"
+msgstr ".NET 程åº"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
msgid "MonoDevelop/MSBuild Solution"
@@ -3606,48 +3299,39 @@ msgid "il files"
msgstr "il 文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid "jay files"
-msgstr "lua 文件"
+msgstr "jay 文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid "Cg Shader files"
-msgstr "C# 文件"
+msgstr "Cg ç€è‰²å™¨æ–‡ä»¶"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid "Apple Strings"
-msgstr "设置"
+msgstr "苹果字符串"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid "sql files"
-msgstr "il 文件"
+msgstr "sql 文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid "JSON files"
-msgstr "添加文件"
+msgstr "JSON 文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid "Shell script"
-msgstr "选择部署脚本"
+msgstr "Shell 脚本"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid "F# files"
-msgstr "diff 文件"
+msgstr "F # 文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2
-#, fuzzy
msgid "MSBuild targets file"
-msgstr "目标å"
+msgstr "MSBuild targets 文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Pads.addin.xml:3
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:12
-#, fuzzy
msgid "Errors"
msgstr "错误"
@@ -3666,7 +3350,7 @@ msgstr "嵌套的命å空间"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Pads.addin.xml:4
msgid "Show project structure"
-msgstr "显示工程结构"
+msgstr "显示项目结构"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Pads.addin.xml:4
msgid "Group members by access"
@@ -3681,42 +3365,36 @@ msgid "Show public members only"
msgstr "åªæ˜¾ç¤º public æˆå‘˜"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Pads.addin.xml:4
-#, fuzzy
msgid "Show public and protected members only"
-msgstr "åªæ˜¾ç¤º public æˆå‘˜"
+msgstr "åªæ˜¾ç¤ºå…¬å…±å’Œå—ä¿æŠ¤æˆå‘˜"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Pads.addin.xml:4
-#, fuzzy
msgid "Other Pads"
-msgstr "窗å£(_W)"
+msgstr "其它"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
msgid "GNU/Emacs"
-msgstr ""
+msgstr "GNU/Emacs"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
msgid "Visual Studio"
msgstr "Visual Studio"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "MonoDevelop 1.0"
-msgstr "MonoDevelop"
+msgstr "MonoDevelop 1.0"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "MonoDevelop 2.0"
-msgstr "MonoDevelop"
+msgstr "MonoDevelop 2.0"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "Comments"
-msgstr "公共"
+msgstr "注释"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "User Tasks"
-msgstr "用户"
+msgstr "用户任务"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs:25
@@ -3725,115 +3403,96 @@ msgstr "程åºé›†"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
-#, fuzzy
msgid "XML Files"
-msgstr "全部文件"
+msgstr "XML 文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid ".NET Resource Files"
-msgstr "资æºæ–‡ä»¶"
+msgstr ".NET 资æºæ–‡ä»¶"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:20
-#, fuzzy
msgid "Solution Files"
-msgstr "解决方案文件å"
+msgstr "解决方案文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:26
-#, fuzzy
msgid "Project Files"
-msgstr "工程文件(_P)"
+msgstr "项目文件"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "MD Workbench"
-msgstr "加载 Workbench"
+msgstr "MD 工作å°"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
#: ../src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebugApplicationDialog.cs:2
-#, fuzzy
msgid "Arguments"
-msgstr "å‚æ•°(_A):"
+msgstr "å‚æ•°"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "Mono Options"
-msgstr "MonoDevelop 选项"
+msgstr "Mono 选项"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "General Pad Text"
-msgstr "常规"
+msgstr "常规文本"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml:14
-#, fuzzy
msgid "Output Pad Contents"
-msgstr "输出路径(_P):"
+msgstr "输出的内容"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Policies.addin.xml:2
msgid "Text Style"
-msgstr ""
+msgstr "文档样å¼"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Policies.addin.xml:4
-#, fuzzy
msgid "MIT/X11 License"
-msgstr "The MIT License"
+msgstr "MIT/X11 License"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Policies.addin.xml:4
-#, fuzzy
msgid "New BSD License"
-msgstr "New BSD license"
+msgstr "New BSD License"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Policies.addin.xml:4
-#, fuzzy
msgid "Apache 2.0 License"
-msgstr "The MIT License"
+msgstr "Apache 2.0 License"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Policies.addin.xml:4
msgid "LGPL 2.1 License"
-msgstr ""
+msgstr "LGPL 2.1 License"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Policies.addin.xml:4
-#, fuzzy
msgid "GPL 2 License"
-msgstr "The MIT License"
+msgstr "GPL 2 License"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Policies.addin.xml:4
-#, fuzzy
msgid "GPL 3 License"
-msgstr "The MIT License"
+msgstr "GPL 3 License"
#: ../src/core/MonoDevelop.Ide/ExtensionModel/Policies.addin.xml:4
-#, fuzzy
msgid "LGPL 3 License"
-msgstr "The MIT License"
+msgstr "LGPL 3 License"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:4
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs:12
msgid "File to Open"
-msgstr "è¦æ‰“开的文件"
+msgstr "打开文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:13
-#, fuzzy
msgid "C_lose Solution"
-msgstr "关闭解决方案(_U)"
+msgstr "关闭解决方案(_L)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:13
-#, fuzzy
msgid "C_lose Project"
-msgstr "控制å°å·¥ç¨‹"
+msgstr "关闭项目(_L)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:13
-#, fuzzy
msgid "C_lose All Solutions"
-msgstr "关闭解决方案(_U)"
+msgstr "关闭所有解决方案(_L)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:15
-#, fuzzy
msgid "Error while generating the print preview"
-msgstr "您确定想è¦å°†æ–‡ä»¶ {0} 从工程 {1} 中删除å—?"
+msgstr "生æˆæ‰“å°é¢„览时出现错误"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:18
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/LinkCommandEntry.cs:2
@@ -3847,13 +3506,12 @@ msgid "Are you sure you want to clear recent files list?"
msgstr "您确定想è¦æ¸…除最近打开的文件列表å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:21
-#, fuzzy
msgid "Load solution {0}"
-msgstr "装入解决方案 {0}"
+msgstr "加载解决方案 {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:21
msgid "Hold Control to open in current workspace."
-msgstr ""
+msgstr "按ä½Control在当å‰å·¥ä½œåŒºä¸­æ‰“开。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/FileCommands.cs:21
msgid "Clear recent projects"
@@ -3864,65 +3522,57 @@ msgid "Are you sure you want to clear recent projects list?"
msgstr "您确定想è¦æ¸…除最近打开的工程列表å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:4
-#, fuzzy
msgid "{0} _Options"
-msgstr "选项"
+msgstr "{0} 选项(_O)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:12
-#, fuzzy
msgid "B_uild {0}"
-msgstr "构建 {0}"
+msgstr "生æˆ(_U){0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:12
-#, fuzzy
msgid "Build solution {0}"
-msgstr "构建解决方案 {0}"
+msgstr "生æˆè§£å†³æ–¹æ¡ˆ {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:12
-#, fuzzy
msgid "Build project {0}"
-msgstr "构建工程 {0}"
+msgstr "生æˆé¡¹ç›® {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:12
msgid "Build {0}"
-msgstr "构建 {0}"
+msgstr "生æˆ{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:16
-#, fuzzy
msgid "R_ebuild {0}"
-msgstr "é‡æ–°æž„建 {0}"
+msgstr "é‡æ–°ç”Ÿæˆ(_E){0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:16
msgid "Rebuild {0}"
-msgstr "é‡æ–°æž„建 {0}"
+msgstr "é‡æ–°ç”Ÿæˆ {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:18
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs:8
msgid "Restart Without Debugging"
-msgstr ""
+msgstr "é‡æ–°å¯åŠ¨è€Œä¸è°ƒè¯•"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:20
-#, fuzzy
msgid "An application is already running. Do you want to stop it?"
-msgstr "å·²ç»æœ‰å¦å¤–一个æœç´¢æ­£åœ¨è¿›è¡Œä¸­ã€‚您是å¦æƒ³è¦å–消它?"
+msgstr "应用程åºå·²åœ¨è¿è¡Œã€‚你想åœæ­¢å®ƒå—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:31
-#, fuzzy
msgid "C_lean {0}"
-msgstr "æ¸…ç† {0}"
+msgstr "清ç†(_L) {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:31
msgid "Clean {0}"
msgstr "æ¸…ç† {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:38
-#, fuzzy
msgid "Command execution failed"
-msgstr "执行失败。"
+msgstr "命令执行失败"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:45
msgid "Run Code Analysis on {0}"
-msgstr ""
+msgstr "在 {0} 上è¿è¡Œä»£ç åˆ†æž"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ToolsCommands.cs:4
msgid "Start tool"
@@ -3937,17 +3587,16 @@ msgid "Command Arguments for {0}"
msgstr "{0} 的命令行å‚æ•°"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ToolsCommands.cs:11
-#, fuzzy
msgid "Running: {0} {1}"
-msgstr "正在è¿è¡Œ "
+msgstr "正在è¿è¡Œ: {0} {1}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ToolsCommands.cs:15
msgid "Process '{0}' has completed succesfully"
-msgstr ""
+msgstr "进程\"{0}\"已完æˆæˆåŠŸ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ToolsCommands.cs:15
msgid "Process '{0}' has exited with error code {1}"
-msgstr ""
+msgstr "进程\"{0}\"已退出,é”™è¯¯ä»£ç  {1}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ToolsCommands.cs:15
msgid ""
@@ -3962,59 +3611,52 @@ msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ViewCommands.cs:5
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ViewCommands.cs:7
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs:35
-#, fuzzy
msgid "Show {0}"
-msgstr "错误:{0}"
+msgstr "显示 {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ViewCommands.cs:10
msgid "Switch to layout '{0}'"
-msgstr ""
+msgstr "切æ¢åˆ°å¸ƒå±€ '{0}'"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ViewCommands.cs:12
msgid "Are you sure you want to delete the active layout?"
msgstr "您确定想è¦åˆ é™¤æ´»åŠ¨å¸ƒå±€å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ViewCommands.cs:12
-#, fuzzy
msgid "Exit Full Screen"
-msgstr "å…¨å±"
+msgstr "退出全å±"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ViewCommands.cs:12
-#, fuzzy
msgid "Enter Full Screen"
-msgstr "å…¨å±"
+msgstr "进入全å±æ¨¡å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ViewCommands.cs:14
msgid "Show Next ({0})"
-msgstr ""
+msgstr "显示下一步 ({0})"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ViewCommands.cs:16
msgid "Show Previous ({0})"
-msgstr ""
+msgstr "显示上一步 ({0})"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/WindowCommands.cs:11
-#, fuzzy
msgid "Activate document '{0}'"
-msgstr "激活此窗å£"
+msgstr "活动文档\"{0}\""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/WindowCommands.cs:18
-#, fuzzy
msgid "Activate window '{0}'"
-msgstr "激活此窗å£"
+msgstr "活动窗å£\"{0}\""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskService.cs:3
-#, fuzzy
msgid "Warning/Error"
-msgstr "{0} 个警告"
+msgstr "警告/错误"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskService.cs:3
-#, fuzzy
msgid "User Task"
-msgstr "用户"
+msgstr "用户任务"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskService.cs:3
msgid "No more errors or warnings"
-msgstr ""
+msgstr "没有更多的错误或警告"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalTool.cs:9
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalToolPanel.cs:12
@@ -4023,12 +3665,11 @@ msgstr "新建工具"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectDescriptor.cs:15
msgid "Only single-file templates allowed to generate resource files"
-msgstr ""
+msgstr "åªå…许生æˆèµ„æºæ–‡ä»¶çš„å•ä¸ªæ–‡ä»¶æ¨¡æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectDescriptor.cs:30
-#, fuzzy
msgid "Can't create project with type: {0}"
-msgstr "无法建立以下类型的工程:{0}"
+msgstr "无法创建项目类型: {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectDescriptor.cs:44
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectDescriptor.cs:45
@@ -4036,45 +3677,39 @@ msgid "File {0} could not be written."
msgstr "无法写入文件 {0}。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs:37
-#, fuzzy
msgid "Error loading template {0} for language {1}"
-msgstr "ä»Žèµ„æº {0} 中装入模æ¿å‡ºé”™"
+msgstr "加载模æ¿è¯­è¨€ {1} {0} 时出错"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SingleFileDescriptionTemplate.cs:3
msgid "File already exists"
msgstr "文件已ç»å­˜åœ¨"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SingleFileDescriptionTemplate.cs:3
-#, fuzzy
msgid ""
"File {0} already exists. Do you want to overwrite\n"
"the existing file?"
-msgstr "文件 {0} å·²ç»å­˜åœ¨ï¼Œæ‚¨æ˜¯å¦æƒ³è¦è¦†ç›–已有文件?"
+msgstr "文件 {0} 已存在。你想è¦è¦†ç›–现有文件å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SolutionDescriptor.cs:15
-#, fuzzy
msgid "Can't create solution with type: {0}"
-msgstr "无法建立此类型的解决方案:{0}"
+msgstr "无法创建解决方案类型: {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/AbstractBaseViewContent.cs:4
-#, fuzzy
msgid "Content"
-msgstr "约æŸ"
+msgstr "内容"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewCommandHandlers.cs:6
-#, fuzzy
msgid "Revert unsaved changes to document '{0}'?"
-msgstr "ä¸ä¿å­˜å¯¹å·²æ‰“开文档的更改(_D)"
+msgstr "æ¢å¤æœªä¿å­˜çš„更改至文档\"{0}\"å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewCommandHandlers.cs:6
msgid "All changes made to the document will be permanently lost."
-msgstr ""
+msgstr "对文档所åšçš„所有更改都将永久丢失。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs:3
#: ../src/addins/MacPlatform/MacPlatform.cs:41
-#, fuzzy
msgid "About {0}"
-msgstr "关于(_A)"
+msgstr "关于 {0}"
# nb.AppendPage(aatp, new Label("Authors"));
# nb.AppendPage(changelog, new Label("ChangeLog"));
@@ -4083,25 +3718,21 @@ msgstr "关于(_A)"
# nb.AppendPage(aatp, new Label("Authors"));
# nb.AppendPage(changelog, new Label("ChangeLog"));
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs:4
-#, fuzzy
msgid "Version Information"
msgstr "版本信æ¯"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs:4
-#, fuzzy
msgid "Copy Information"
-msgstr "解决方案信æ¯"
+msgstr "副本信æ¯"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs:5
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs:140
-#, fuzzy
msgid "Show Details"
-msgstr "细节"
+msgstr "显示详情"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs:5
-#, fuzzy
msgid "Hide Details"
-msgstr "细节"
+msgstr "éšè—详情"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/DirtyFilesDialog.cs:5
msgid "Save Files"
@@ -4109,38 +3740,35 @@ msgstr "ä¿å­˜æ–‡ä»¶"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/DirtyFilesDialog.cs:5
msgid "Project: {0}"
-msgstr "工程:{0}"
+msgstr "项目:{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/DirtyFilesDialog.cs:10
msgid "_Save and Quit"
msgstr "ä¿å­˜å¹¶é€€å‡º(_S)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/DirtyFilesDialog.cs:10
-#, fuzzy
msgid "_Save and Close"
-msgstr "ä¿å­˜å¹¶é€€å‡º(_S)"
+msgstr "ä¿å­˜å¹¶å…³é—­(_S)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/NewLayoutDialog.cs:5
-#, fuzzy
msgid "Enter a name for the new layout"
-msgstr "创建新文件夹"
+msgstr "输入新布局的å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/NewLayoutDialog.cs:5
msgid "Name must start with a letter or number"
-msgstr ""
+msgstr "å称必须以字æ¯æˆ–数字开头"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/NewLayoutDialog.cs:5
msgid "Name must contain only letters, numbers and spaces"
-msgstr ""
+msgstr "å称必须包å«å­—æ¯ã€ 数字和空格"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/NewLayoutDialog.cs:5
msgid "There is already a layout with that name"
-msgstr ""
+msgstr "已存在具有该å称的布局"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/NewLayoutDialog.cs:5
-#, fuzzy
msgid "Layout name is valid"
-msgstr "æœç´¢æ¨¡å¼æ— æ•ˆ"
+msgstr "布局å称无效"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AboutMonoDevelopTabPage.cs:9
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs:14
@@ -4153,19 +3781,16 @@ msgid "Version"
msgstr "版本"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AboutMonoDevelopTabPage.cs:10
-#, fuzzy
msgid "License"
-msgstr "The MIT License"
+msgstr "许å¯è¯"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AboutMonoDevelopTabPage.cs:10
-#, fuzzy
msgid "Released under the GNU Lesser General Public License."
-msgstr "以 GNU GPL åè®®å‘放。"
+msgstr "在 GNU 通用公共许å¯ä¸‹å‘布。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AboutMonoDevelopTabPage.cs:11
-#, fuzzy
msgid "Copyright"
-msgstr "版æƒï¼š"
+msgstr "版æƒæ‰€æœ‰"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/VersionInformationTabPage.cs:3
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs:5
@@ -4174,37 +3799,31 @@ msgstr "版æƒï¼š"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:91
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs:74
msgid "Loading..."
-msgstr "正在装入..."
+msgstr "正在加载..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/VersionInformationTabPage.cs:3
-#, fuzzy
msgid "Failed to load version information."
-msgstr "嵌入调试信æ¯(_D)"
+msgstr "版本信æ¯åŠ è½½å¤±è´¥ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AddinLoadErrorDialog.cs:4
-#, fuzzy
msgid "{0} cannot start because a fatal error has been detected."
-msgstr "MonoDevelop 无法å¯åŠ¨ï¼Œæ£€æµ‹åˆ°äº†è‡´å‘½é”™è¯¯ã€‚"
+msgstr "{0} 无法å¯åŠ¨ï¼Œå› ä¸ºå·²æ£€æµ‹åˆ°ä¸€ä¸ªè‡´å‘½çš„错误。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AddinLoadErrorDialog.cs:4
-#, fuzzy
msgid ""
"{0} can run without these add-ins, but the functionality they provide will "
"be missing."
-msgstr "MoneDevelop 无需这些æ’件å³å¯å¯åŠ¨ï¼Œä½†å°†ç¼ºå°‘å…¶æ供的功能。"
+msgstr "{0} å¯ä»¥è¿è¡Œæ²¡æœ‰è¿™äº›åŠ è½½é¡¹ï¼Œä½†å®ƒä»¬æ供的功能将会丢失。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/AddinLoadErrorDialog.cs:4
-#, fuzzy
msgid ""
"You can start {0} without these add-ins, but the functionality they provide "
"will be missing. Do you wish to continue?"
-msgstr ""
-"MoneDevelop 无需这些æ’件å³å¯å¯åŠ¨ï¼Œä½†å°†ç¼ºå°‘å…¶æ供的功能。您是å¦æƒ³è¦ç»§ç»­ï¼Ÿ"
+msgstr "您å¯ä»¥å¯åŠ¨ {0} ä¸åŠ è½½è¿™äº›åŠ è½½é¡¹ï¼Œä½†ä¼šç¡®å®žåŠŸèƒ½ï¼Œæ‚¨è¦ç»§ç»­å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/LoadSavePanel.cs:9
-#, fuzzy
msgid "Invalid project path specified"
-msgstr "指定了无效的部署目标"
+msgstr "指定的项目路径无效"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/DefaultMonitorPad.cs:10
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs:25
@@ -4216,9 +3835,8 @@ msgid "Clear console"
msgstr "清除控制å°"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/DefaultMonitorPad.cs:12
-#, fuzzy
msgid "Pin output pad"
-msgstr "输出路径"
+msgstr "内容输出æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/MonodocTreePad.cs:7
msgid "Mono Documentation"
@@ -4230,15 +3848,13 @@ msgid "Solution name may not contain any of the following characters: {0}"
msgstr "解决方案åä¸èƒ½åŒ…å«ä»¥ä¸‹çš„字符:{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs:9
-#, fuzzy
msgid ""
"Are you sure you want to move the item '{0}' to the solution folder '{1}'?"
-msgstr "您真的确定想è¦å°†æ–‡ä»¶å¤¹â€œ{0}â€ç§»åŠ¨åˆ°æ–‡ä»¶å¤¹â€œ{1}â€ä¸­å—?"
+msgstr "你确定你想è¦ç§»åŠ¨çš„项目\"{0}\"到解决方案文件夹 '{1}'?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs:9
-#, fuzzy
msgid "Do you really want to remove the folder '{0}' from '{1}'?"
-msgstr "您真的确定想è¦å°†æ–‡ä»¶å¤¹â€œ{0}â€ç§»åŠ¨åˆ°æ–‡ä»¶å¤¹â€œ{1}â€ä¸­å—?"
+msgstr "你真的想è¦ä»Ž\"{1}\"中删除文件夹\"{0}\"å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderNodeBuilder.cs:9
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:45
@@ -4268,9 +3884,8 @@ msgid "Do you really want to copy the folder '{0}' to the folder '{1}'?"
msgstr "您真的确定想è¦å°†æ–‡ä»¶å¤¹â€œ{0}â€ç§»åŠ¨åˆ°æ–‡ä»¶å¤¹â€œ{1}â€ä¸­å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:28
-#, fuzzy
msgid "The file '{0}' already exists. Do you want to overwrite it?"
-msgstr "文件“{0}â€å·²ç»å­˜åœ¨ã€‚您是å¦æƒ³è¦æ›¿æ¢å®ƒï¼Ÿ"
+msgstr "文件 {0} 已存在。你想è¦è¦†ç›–现有文件å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:28
msgid "Do you want to save the file '{0}' before the move operation?"
@@ -4304,7 +3919,7 @@ msgstr ""
#: ../src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs:7
#: ../src/addins/MacPlatform/Dialogs/MacExceptionDialogHandler.cs:8
msgid "Don't Save"
-msgstr ""
+msgstr "ä¸ä¿å­˜"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:28
msgid "Save operation failed."
@@ -4312,9 +3927,8 @@ msgstr "ä¿å­˜æ“作失败。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:30
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:107
-#, fuzzy
msgid "Moving files..."
-msgstr "正在å¤åˆ¶æ–‡ä»¶..."
+msgstr "正在移动文件..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:30
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs:11
@@ -4329,97 +3943,88 @@ msgid "Add files"
msgstr "添加文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:34
-#, fuzzy
msgid "Import From Folder"
-msgstr "空文件"
+msgstr "导入文件夹"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:36
-#, fuzzy
msgid "Empty directory."
-msgstr "空结构"
+msgstr "空目录。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:36
msgid "Directory {0} is empty, no files have been added."
-msgstr ""
+msgstr "目录 {0} 是空的,没有文件被添加。 "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:37
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:45
-#, fuzzy
msgid "Select files to add from {0}"
-msgstr "在树中选择测试"
+msgstr "选择è¦ä»Ž {0} 添加文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:39
-#, fuzzy
msgid "Add Existing Folder"
-msgstr "添加到解决方案"
+msgstr "添加现有文件夹"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:43
msgid "There is already a file with the name '{0}' in the target directory"
-msgstr ""
+msgstr "目标文件夹中已ç»å­˜åœ¨å为\"{0}\"的文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:44
msgid "There is already a link with the name '{0}' in the target directory"
-msgstr ""
+msgstr "目标文件夹中已ç»å­˜åœ¨å为\"{0}\"的链接"
# new file name with wildcard(*, ?) characters in it
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:16
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:7
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:9
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs:4
-#, fuzzy
msgid ""
"The name you have chosen contains illegal characters. Please choose a "
"different name."
-msgstr "您所选择的文件å包å«æ— æ•ˆå­—符。请选择一个ä¸åŒçš„文件å。"
+msgstr "您选择的å称包å«éžæ³•å­—符。请选择一个ä¸åŒçš„å称。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:16
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:7
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs:4
-#, fuzzy
msgid ""
"File or directory name is already in use. Please choose a different one."
-msgstr "å·²ç»å­˜åœ¨åŒå的文件或目录,请选择一个ä¸åŒçš„å称。"
+msgstr "文件或目录的å称已在使用。请选择ä¸åŒå称。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:16
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs:4
-#, fuzzy
msgid "There was an error renaming the file."
-msgstr "连接数æ®åº“æœåŠ¡å™¨æ—¶å‡ºçŽ°é”™è¯¯ã€‚"
+msgstr "é‡å‘½å文件时出错。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:18
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:9
-#, fuzzy
msgid "_Remove from Project"
-msgstr "从工程中删除(_R)"
+msgstr "从项目中删除(_R)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:19
msgid ""
"The Delete option permanently removes the file from your hard disk. Click "
"Remove from Project if you only want to remove it from your current solution."
msgstr ""
+"删除选项从您的硬盘上永久删除该文件。如果你åªæƒ³è¦ä»Žå½“å‰è§£å†³æ–¹æ¡ˆä¸­ç§»é™¤å®ƒï¼Œè¯·å•"
+"击从项目中的删除。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:19
-#, fuzzy
msgid ""
"Are you sure you want to remove the file {0} and its code-behind children "
"from project {1}?"
-msgstr "您确定想è¦å°†æ–‡ä»¶ {0} 从工程 {1} 中删除å—?"
+msgstr "你确定你想è¦ä»Žé¡¹ç›® {1} 删除文件 {0} 和其åŽç½®ä»£ç ?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:19
-#, fuzzy
msgid ""
"Are you sure you want to remove the selected files and their code-behind "
"children from the project?"
-msgstr "您确定è¦åˆ é™¤æ­¤æ–‡ä»¶å—?"
+msgstr "你确定你想è¦ä»Žé¡¹ç›®ä¸­ç§»é™¤é€‰å®šçš„文件和åŽç½®ä»£ç ?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:19
msgid "Are you sure you want to remove file {0} from project {1}?"
-msgstr "您确定想è¦å°†æ–‡ä»¶ {0} 从工程 {1} 中删除å—?"
+msgstr "您确定想è¦å°†æ–‡ä»¶ {0} 从项目 {1} 中删除å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:19
-#, fuzzy
msgid "Are you sure you want to remove the selected files from the project?"
-msgstr "您确定è¦åˆ é™¤æ­¤æ–‡ä»¶å—?"
+msgstr "你确定你想è¦ä»Žé¡¹ç›®ä¸­ç§»é™¤é€‰å®šçš„文件?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:27
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:16
@@ -4433,14 +4038,12 @@ msgid "Remove"
msgstr "删除"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs:27
-#, fuzzy
msgid "Open with '{0}'"
-msgstr "正在打开 {0}"
+msgstr "用 '{0}'打开"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:9
-#, fuzzy
msgid "There was an error renaming the directory."
-msgstr "连接数æ®åº“æœåŠ¡å™¨æ—¶å‡ºçŽ°é”™è¯¯ã€‚"
+msgstr "é‡å‘½å目录时出错。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:9
msgid ""
@@ -4448,43 +4051,39 @@ msgid ""
"contains from your hard disk. Click Remove from Project if you only want to "
"remove it from your current solution."
msgstr ""
+"删除选项会永久删除您的硬盘上的目录和它包å«çš„任何文件。如果你åªæƒ³è¦ä»Žå½“å‰è§£å†³"
+"方案中移除它,请å•å‡»ä»Žé¡¹ç›®ä¸­çš„删除。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:10
msgid ""
"The directory and any files it contains will be permanently removed from "
"your hard disk. "
-msgstr ""
+msgstr "从您的硬盘上的目录和它包å«çš„所有文件将被永久删除。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:12
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:14
-#, fuzzy
msgid "Are you sure you want to remove directory {0}?"
-msgstr "您确定想è¦åˆ é™¤çª—å£â€œ{0}â€å—?"
+msgstr "你确定你想è¦åˆ é™¤ç›®å½• {0}?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:14
-#, fuzzy
msgid "Are you sure you want to remove directory {0} from project {1}?"
-msgstr "您确定想è¦å°†æ–‡ä»¶ {0} 从工程 {1} 中删除å—?"
+msgstr "你确定è¦ä»Žé¡¹ç›® {1} 删除目录 {0}?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:15
-#, fuzzy
msgid "The folder {0} could not be deleted from disk: {1}"
-msgstr "无法删除文件 {0}"
+msgstr "无法从ç£ç›˜åˆ é™¤æ–‡ä»¶å¤¹ {0}: {1}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs:7
-#, fuzzy
msgid "Unknown language '{0}'"
-msgstr "未知语言:{0}"
+msgstr "未知语言\"{0}\""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs:9
-#, fuzzy
msgid "Invalid configuration mapping"
-msgstr "é…ç½®"
+msgstr "无效的é…置映射"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs:9
-#, fuzzy
msgid "Project not built in active configuration"
-msgstr "此解决方案没有活动的é…置。"
+msgstr "项目没有内置活动é…ç½®"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs:3
#: ../src/addins/MonoDevelop.Autotools/gtk-gui/MonoDevelop.Autotools.MakefileOptionPanelWidget.cs:1
@@ -4494,34 +4093,30 @@ msgstr "引用"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs:12
msgid "Cyclic project references are not allowed."
-msgstr ""
+msgstr "ä¸å…许循环项目引用。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs:4
msgid "Are you sure you want to permanently delete the file {0}?"
msgstr "您确定想è¦æ°¸ä¹…删除文件 {0} å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs:4
-#, fuzzy
msgid "Are you sure you want to permanently delete all selected files?"
-msgstr "您确定想è¦æ°¸ä¹…删除文件 {0} å—?"
+msgstr "你确定你想è¦æ°¸ä¹…删除所有选定的文件?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs:4
msgid "The file {0} could not be deleted"
msgstr "无法删除文件 {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SystemFileNodeBuilder.cs:4
-#, fuzzy
msgid "Include to Solution"
-msgstr "添加到解决方案"
+msgstr "包å«åˆ°è§£å†³æ–¹æ¡ˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs:14
-#, fuzzy
msgid "ApplicationIconId"
-msgstr "程åº"
+msgstr "ApplicationIconId"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs:58
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DocumentSwitcher.cs:11
-#, fuzzy
msgid "Documents"
msgstr "文档"
@@ -4530,14 +4125,12 @@ msgid "Can't create project with type : {0}"
msgstr "无法建立以下类型的工程:{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ConfigurationComboBox.cs:2
-#, fuzzy
msgid "Default Runtime"
-msgstr "编译器:"
+msgstr "默认è¿è¡Œæ—¶"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs:35
-#, fuzzy
msgid "The file could not be saved."
-msgstr "工程无法创建"
+msgstr "此文件无法ä¿å­˜ã€‚"
# using(SaveFileDialog fdiag = new SaveFileDialog()) {
# fdiag.OverwritePrompt = true;
@@ -4581,24 +4174,21 @@ msgid "File name {0} is invalid"
msgstr "文件å {0} 无效"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs:38
-#, fuzzy
msgid "File {0} already exists. Overwrite?"
-msgstr "文件 {0} å·²ç»å­˜åœ¨ã€‚是å¦è¦†ç›–?"
+msgstr "文件 {0} 已存在。是å¦è¦†ç›–?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Pad.cs:5
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DocumentSwitcher.cs:11
-#, fuzzy
msgid "Pads"
-msgstr "粘贴"
+msgstr "æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:5
msgid "Initializing Main Window"
msgstr "正在åˆå§‹åŒ–主窗å£"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:22
-#, fuzzy
msgid "Save the changes to document '{0}' before creating a new solution?"
-msgstr "ä¿å­˜å¯¹æ‰“开文档的修改(_S)"
+msgstr "创建一个新解决方案之å‰ä¿å­˜æ›´æ”¹è‡³æ–‡æ¡£ '{0}' å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:43
msgid "Opening {0}"
@@ -4612,16 +4202,15 @@ msgstr "选项"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:51
msgid "Preferences"
-msgstr "选项"
+msgstr "é…ç½®"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:54
-#, fuzzy
msgid "Save the changes to document '{0}' before closing?"
-msgstr "ä¿å­˜å¯¹æ‰“开文档的修改(_S)"
+msgstr "关闭之å‰ä¿å­˜æ›´æ”¹è‡³æ–‡æ¡£ '{0}' å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:54
msgid "If you don't save, all changes will be permanently lost."
-msgstr ""
+msgstr "如果你ä¸ä¿å­˜ï¼Œæ‰€æœ‰æ›´æ”¹éƒ½å°†æ°¸ä¹…丢失。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:54
msgid "Invalid file name"
@@ -4632,43 +4221,36 @@ msgid "{0} is a directory"
msgstr "{0} 是一个目录"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:55
-#, fuzzy
msgid "File '{0}' could not be opened"
-msgstr "无法装入文件“{0}â€ã€‚"
+msgstr "文件 '{0}' 无法打开"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:67
-#, fuzzy
msgid "Loading workspace documents"
-msgstr "正在打开解决方案:{0}"
+msgstr "正在加载工作区文档"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:100
-#, fuzzy
msgid "The file '{0}' could not be opened."
-msgstr "无法装入文件“{0}â€ã€‚"
+msgstr "文件 '{0}' 无法打开"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:100
-#, fuzzy
msgid "The file '{0}' could not opened. {1}"
-msgstr "无法装入文件“{0}â€ã€‚"
+msgstr "文件\"{0}\"ä¸èƒ½æ‰“开。{1}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:100
-#, fuzzy
msgid "The file '{0}' could not opened. File too large."
-msgstr "无法装入文件“{0}â€ã€‚"
+msgstr "文件\"{0}\"ä¸èƒ½æ‰“开。文件太大。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs:5
msgid "Building..."
-msgstr "正在构建..."
+msgstr "正在生æˆ..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs:5
-#, fuzzy
msgid "Cleaning..."
-msgstr "正在ä¿å­˜..."
+msgstr "正在清ç†"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs:5
-#, fuzzy
msgid "Rebuilding..."
-msgstr "正在构建..."
+msgstr "正在é‡æ–°ç”Ÿæˆ..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs:5
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs:7
@@ -4676,9 +4258,8 @@ msgid "Application Output"
msgstr "应用程åºè¾“出"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs:5
-#, fuzzy
msgid "Tool Output"
-msgstr "显示输出"
+msgstr "工具输出"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs:5
msgid "Saving..."
@@ -4690,34 +4271,32 @@ msgstr "æœç´¢ç»“æžœ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/FileSelectorDialog.cs:3
msgid "_Character Coding:"
-msgstr ""
+msgstr "字符编ç (_C):"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/FileSelectorDialog.cs:4
-#, fuzzy
msgid "Open With:"
-msgstr "使用其他程åºæ‰“å¼€"
+msgstr "打开方å¼:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/FileSelectorDialog.cs:4
#: ../src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs:8
msgid "Close current workspace"
-msgstr ""
+msgstr "关闭当å‰å·¥ä½œåŒº"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/FileSelectorDialog.cs:4
#: ../src/addins/MacPlatform/Dialogs/SelectEncodingPopUpButton.cs:3
#: ../src/addins/WindowsPlatform/WindowsPlatform/Dialogs/OpenFileDialogHandler.cs:191
msgid "Auto Detected"
-msgstr ""
+msgstr "自动检测"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/FileSelectorDialog.cs:4
msgid "Add or _Remove..."
-msgstr ""
+msgstr "添加或删除(_R)..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/FileSelectorDialog.cs:4
#: ../src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs:11
#: ../src/addins/WindowsPlatform/WindowsPlatform/Dialogs/OpenFileDialogHandler.cs:238
-#, fuzzy
msgid "Solution Workbench"
-msgstr "加载 Workbench"
+msgstr "解决方案工作å°"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:13
msgid "Show Errors"
@@ -4733,32 +4312,28 @@ msgstr "显示信æ¯"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:14
msgid "Build Output"
-msgstr "构建输出"
+msgstr "生æˆè¾“出"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:14
-#, fuzzy
msgid "Show build output"
-msgstr "显示输出"
+msgstr "显示生æˆè¾“出"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:27
-#, fuzzy
msgid "Show Error Reference"
-msgstr "本地副本引用"
+msgstr "显示错误引用"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:28
msgid "Copy task"
-msgstr ""
+msgstr "å¤åˆ¶ä»»åŠ¡"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:29
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs:43
-#, fuzzy
msgid "_Go to"
-msgstr "转到行(_G)"
+msgstr "转至(_G)..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:29
-#, fuzzy
msgid "Go to task"
-msgstr "转到基础"
+msgstr "转到任务"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:30
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs:45
@@ -4821,9 +4396,8 @@ msgid "Toggle visibility of File column"
msgstr "切æ¢æ–‡ä»¶åˆ—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:36
-#, fuzzy
msgid "Toggle visibility of Project column"
-msgstr "切æ¢è·¯å¾„列"
+msgstr "切æ¢é¡¹ç›®åˆ—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:37
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:55
@@ -4849,9 +4423,8 @@ msgid "Category"
msgstr "类别"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:38
-#, fuzzy
msgid "Toggle visibility of Category column"
-msgstr "切æ¢è·¯å¾„列"
+msgstr "切æ¢åˆ†ç±»åˆ—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:69
msgid "{0} Error"
@@ -4870,16 +4443,15 @@ msgstr[0] "{0} æ¡æ¶ˆæ¯"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs:42
msgid "Copy comment task"
-msgstr ""
+msgstr "å¤åˆ¶æ³¨é‡Šä»»åŠ¡"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs:43
msgid "Go to comment task"
-msgstr ""
+msgstr "转到注释任务"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs:44
-#, fuzzy
msgid "Delete comment task"
-msgstr "选择命令"
+msgstr "删除注释任务"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:4
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TasksPanelWidget.cs:2
@@ -4894,146 +4466,130 @@ msgstr "中"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:4
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TasksPanelWidget.cs:2
-#, fuzzy
msgid "Low"
-msgstr "日志"
+msgstr "低"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:6
msgid "Priority"
-msgstr "é‡è¦"
+msgstr "优先级"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:7
-#, fuzzy
msgid "New Task"
-msgstr "新建"
+msgstr "新建任务"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:7
-#, fuzzy
msgid "Create New Task"
-msgstr "创建新文件夹"
+msgstr "创建新任务"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:8
-#, fuzzy
msgid "Copy Task"
-msgstr "å¤åˆ¶(_C)"
+msgstr "å¤åˆ¶ä»»åŠ¡"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:8
-#, fuzzy
msgid "Copy Task Description"
-msgstr "æè¿°"
+msgstr "å¤åˆ¶ä»»åŠ¡æè¿°"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs:8
-#, fuzzy
msgid "Delete Task"
-msgstr "删除"
+msgstr "删除任务"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs:3
-#, fuzzy
msgid ""
"<span foreground='grey'>{0} <span size='small'>(Unavailable)</span></span>"
-msgstr "{0}·<span·foreground='red'·size='small'>(未知的语言·\"{1}\")</span>"
+msgstr "<span foreground='grey'>{0} <span size='small'>(ä¸å¯ç”¨)</span></span>"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs:3
-#, fuzzy
msgid "Load failed: "
-msgstr " (装入失败)"
+msgstr "加载失败:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs:8
-#, fuzzy
msgid "Do you really want to remove project '{0}' from solution '{1}'"
-msgstr "您真的想è¦å°†å·¥ç¨‹ {0} 从解决方案 {1} 中删除å—?"
+msgstr "你真的想è¦ä»Žè§£å†³æ–¹æ¡ˆ\"{1}\"删除项目\"{0}\"å—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs:3
#: ../src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebugApplicationDialog.cs:2
-#, fuzzy
msgid "Command"
-msgstr "命令(_C):"
+msgstr "命令"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs:3
msgid "Key Binding"
-msgstr ""
+msgstr "å¿«æ·é”®"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs:5
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MimeTypePolicyOptionsSection.cs:6
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/PolicyOptionsPanel.cs:6
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs:3
-#, fuzzy
msgid "Custom"
-msgstr "剪切(_T)"
+msgstr "自定义"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs:7
msgid "_View Conflicts"
-msgstr ""
+msgstr "视图冲çª(_V)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs:22
msgid "This key combination is already bound to command '{0}'"
-msgstr ""
+msgstr "这个组åˆé”®å·²ç»‘定命令\"{0}\""
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.KeyBindingsPanel.cs:2
msgid "Scheme:"
-msgstr ""
+msgstr "方案"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.KeyBindingsPanel.cs:2
msgid "The current scheme has conflicting key bindings"
-msgstr ""
+msgstr "现行的计划有冲çªçš„键绑定"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.KeyBindingsPanel.cs:2
msgid "Edit Binding"
-msgstr ""
+msgstr "编辑绑定"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.KeyBindingsPanel.cs:2
#: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.StashManagerDialog.cs:2
msgid "Apply"
-msgstr ""
+msgstr "应用"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
-#, fuzzy
msgid "Build project before running"
-msgstr "构建工程 {0}"
+msgstr "è¿è¡Œä¹‹å‰ç”Ÿæˆé¡¹ç›®"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
-#, fuzzy
msgid "Run project if build completed with warnings"
-msgstr "æ“作完æˆï¼Œä½†å­˜åœ¨è­¦å‘Šã€‚"
+msgstr "è¿è¡Œé¡¹ç›®ï¼Œå¦‚果生æˆå®Œæˆæ—¶å‡ºçŽ°è­¦å‘Š"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
msgid "Enable parallel build of projects"
-msgstr ""
+msgstr "å¯ç”¨å¹¶è¡Œç”Ÿæˆçš„项目"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
msgid "Build project before executing unit tests"
-msgstr ""
+msgstr "在执行å•å…ƒæµ‹è¯•å‰ç”Ÿæˆé¡¹ç›®"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
msgid "Log _verbosity:"
-msgstr ""
+msgstr "日志详细程度(_V):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
msgid "Quiet"
-msgstr ""
+msgstr "安é™"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
msgid "Minimal"
-msgstr ""
+msgstr "æžç®€"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
-#, fuzzy
msgid "Detailed"
-msgstr "细节"
+msgstr "详细"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
msgid "Diagnostic"
-msgstr ""
+msgstr "诊断"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
-#, fuzzy
msgid "<b>File Save Options Before Building</b>"
-msgstr "<b>常规选项</b>"
+msgstr "<b>生æˆä¹‹å‰æ–‡ä»¶ä¿å­˜é€‰é¡¹</b>"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
-#, fuzzy
msgid "_Save changes to open documents"
-msgstr "ä¿å­˜å¯¹æ‰“开文档的修改(_S)"
+msgstr "ä¿å­˜æ›´æ”¹è‡³æ–‡ä»¶(_S)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17
msgid "_Prompt to save changes to open documents"
@@ -5068,18 +4624,16 @@ msgid "Always create backup copy"
msgstr "总是创建备份"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.NewLayoutDialog.cs:2
-#, fuzzy
msgid "New Layout"
-msgstr "新建布局(_N)..."
+msgstr "新建布局"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.NewLayoutDialog.cs:2
msgid "Layout name:"
msgstr "布局å称:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.NewLayoutDialog.cs:2
-#, fuzzy
msgid "Create _Layout"
-msgstr "创建新文件夹"
+msgstr "创建布局(_L)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.SelectEncodingsDialog.cs:2
#: ../src/addins/MacPlatform/Dialogs/SelectEncodingPanel.cs:5
@@ -5092,9 +4646,8 @@ msgid "Encodings shown in menu:"
msgstr "在èœå•ä¸­æ˜¾ç¤ºç¼–ç "
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TasksPanelWidget.cs:2
-#, fuzzy
msgid "_Token List:"
-msgstr "工具列表"
+msgstr "_Token 列表:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TasksPanelWidget.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AuthorInformationPanelWidget.cs:2
@@ -5113,11 +4666,11 @@ msgstr "é‡è¦:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TasksPanelWidget.cs:2
msgid "<i><b>Note:</b> Only Letters, Digits and Underscore are allowed.</i>"
-msgstr ""
+msgstr "<i><b>注:</b>å…许åªæœ‰å­—æ¯ã€ 数字和下划线。</i>"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TasksPanelWidget.cs:2
msgid "<b>Task Priorities Foreground Colors</b>"
-msgstr ""
+msgstr "<b>任务的优先事项å‰æ™¯é¢œè‰²</b>"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.TipOfTheDayWindow.cs:2
msgid "Did you know...?"
@@ -5132,53 +4685,46 @@ msgid "_Next Tip"
msgstr "下一æ¡æ示(_N)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
-#, fuzzy
msgid "Automatically check for updates:"
-msgstr "自动包å«æ‰¾åˆ°çš„文件(_I)"
+msgstr "自动检查更新:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
-#, fuzzy
msgid "Every hour"
-msgstr "æ¯"
+msgstr "æ¯å°æ—¶"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
-#, fuzzy
msgid "Every day"
-msgstr "æ¯"
+msgstr "æ¯å¤©"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
-#, fuzzy
msgid "Every month"
-msgstr "æ¯"
+msgstr "æ¯æœˆ"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildMessagePanelWidget.cs:2
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs:22
-#, fuzzy
msgid "Never"
-msgstr "删除"
+msgstr "从ä¸"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
msgid "Install unstable developer updates"
-msgstr ""
+msgstr "安装ä¸ç¨³å®šçš„å¼€å‘人员更新"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
msgid "Beta updates (weekly)"
-msgstr ""
+msgstr "试用版更新 (æ¯å‘¨)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
msgid "Alpha updates (very often, very unstable)"
-msgstr ""
+msgstr "阿尔法更新 (很多时候,很ä¸ç¨³å®š)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
-#, fuzzy
msgid "Test"
-msgstr "è¿è¡Œæµ‹è¯•"
+msgstr "测试"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AddInsPanelWidget.cs:2
-#, fuzzy
msgid "Check for Updates Now"
-msgstr "正在添加文件..."
+msgstr "检查更新"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.AddinLoadErrorDialog.cs:2
msgid "The following add-ins could not be started:"
@@ -5189,9 +4735,8 @@ msgid "Control not found!"
msgstr "找ä¸åˆ°æŽ§ä»¶ï¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalToolPanel.cs:14
-#, fuzzy
msgid "The command of tool \"{0}\" is not set."
-msgstr "工具“{0}â€çš„命令无效。"
+msgstr "工具“{0}â€çš„命令未设置。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalToolPanel.cs:15
msgid "The command of tool \"{0}\" is invalid."
@@ -5214,245 +4759,213 @@ msgid "_Title:"
msgstr "标题(_T):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.ExternalTools.ExternalToolPanelWidget.cs:2
-#, fuzzy
msgid "_Working directory:"
-msgstr "工作目录(_W):"
+msgstr "工作目录(_W):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.ExternalTools.ExternalToolPanelWidget.cs:2
msgid "_Prompt for arguments"
msgstr "æ示å‚æ•°(_P)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.ExternalTools.ExternalToolPanelWidget.cs:2
-#, fuzzy
msgid "_Save current file"
-msgstr "当å‰æ–‡ä»¶"
+msgstr "ä¿å­˜å½“å‰æ–‡ä»¶(_S)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.ExternalTools.ExternalToolPanelWidget.cs:2
-#, fuzzy
msgid "Use _output window"
msgstr "使用输出窗å£(_O)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/MonoDevelopStatusBar.cs:20
msgid "INS"
-msgstr "æ’å…¥"
+msgstr "INS"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/MonoDevelopStatusBar.cs:20
msgid "OVR"
-msgstr "覆盖"
+msgstr "OVR"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/IDEStyleOptionsPanel.cs:10
#: ../src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs:3
-#, fuzzy
msgid "(Default)"
-msgstr "默认"
+msgstr "(默认)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/IDEStyleOptionsPanel.cs:13
msgid ""
"The user interface language change will take effect the next time you start "
"{0}"
-msgstr ""
+msgstr "用户界é¢è¯­è¨€æ›´æ”¹å°†ä¸‹æ¬¡æ‚¨å¯åŠ¨ {0} 时生效"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.IDEStyleOptionsPanelWidget.cs:2
-#, fuzzy
msgid "User Interface Language:"
-msgstr "用户界é¢"
+msgstr "ç•Œé¢è¯­è¨€"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.IDEStyleOptionsPanelWidget.cs:2
-#, fuzzy
msgid "User Interface Theme:"
-msgstr "用户界é¢"
+msgstr "ç•Œé¢ä¸»é¢˜:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs:9
-#, fuzzy
msgid ""
"Are you sure you want to move the item '{0}' to the root node of the "
"solution?"
-msgstr "您真的确定想è¦å°†æ–‡ä»¶å¤¹â€œ{0}â€ç§»åŠ¨åˆ°æ–‡ä»¶å¤¹â€œ{1}â€ä¸­å—?"
+msgstr "你确定你想è¦å°†é¡¹ç›®\"{0}\"移到根节点的解决方案?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionNodeBuilder.cs:9
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/SolutionNodeBuilder.cs:8
-#, fuzzy
msgid "Do you really want to remove solution {0} from workspace {1}?"
-msgstr "您真的想è¦å°†è§£å†³æ–¹æ¡ˆ {0} 从解决方案 {1} 中删除å—?"
+msgstr "你真的想è¦ä»Žè§£å†³æ–¹æ¡ˆ\"{1}\"删除项目\"{0}\"å—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs:6
-#, fuzzy
msgid "Are you sure you want to move the item '{0}' to the workspace '{1}'?"
-msgstr "您真的确定想è¦å°†æ–‡ä»¶å¤¹â€œ{0}â€ç§»åŠ¨åˆ°æ–‡ä»¶å¤¹â€œ{1}â€ä¸­å—?"
+msgstr "你确定你想è¦ç§»åŠ¨åˆ°å·¥ä½œåŒº '{1}' 项目 '{0}'?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/WorkspaceNodeBuilder.cs:7
-#, fuzzy
msgid "Do you really want to remove the item '{0}' from workspace '{1}'?"
-msgstr "您真的想è¦å°†å·¥ç¨‹ {0} 从解决方案 {1} 中删除å—?"
+msgstr "你真的想è¦ä»Žå·¥ä½œåŒº\"{1}\"删除项目\"{0}\"å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs:262
msgid "Display Options"
msgstr "显示选项"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.StandardHeader/StandardHeaderPolicyPanel.cs:2
-#, fuzzy
msgid "Standard _Header"
-msgstr "标准"
+msgstr "标准头(_H)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.StandardHeader/StandardHeaderPolicyPanel.cs:4
-#, fuzzy
msgid "Templates"
-msgstr "模æ¿"
+msgstr "模版"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AuthorInformationPanelWidget.cs:2
-#, fuzzy
msgid "_Use custom author information for this solution"
-msgstr "为æ¯ä¸ªè§£å†³æ–¹æ¡ˆé¡¹é€‰æ‹©ä¸€ä¸ªç›®æ ‡é…置:"
+msgstr "此解决方案使用自定义作者信æ¯(_U)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AuthorInformationPanelWidget.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.GlobalAuthorInformationPanelWidget.cs:2
-#, fuzzy
msgid "_Copyright:"
-msgstr "版æƒï¼š"
+msgstr "版æƒæ‰€æœ‰(_C)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AuthorInformationPanelWidget.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.GlobalAuthorInformationPanelWidget.cs:2
msgid "_Email:"
-msgstr ""
+msgstr "电å­é‚®ä»¶(_E)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AuthorInformationPanelWidget.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.GlobalAuthorInformationPanelWidget.cs:2
-#, fuzzy
msgid "C_ompany:"
-msgstr "代ç æ¨¡æ¿"
+msgstr "å…¬å¸(_O):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AuthorInformationPanelWidget.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.GlobalAuthorInformationPanelWidget.cs:2
msgid "_Trademark:"
-msgstr ""
+msgstr "商标(_T)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.StandardHeader.StandardHeaderPolicyPanelWidget.cs:8
msgid "_Include standard header in new files"
-msgstr ""
+msgstr "包å«æ ‡å‡†å¤´åœ¨æ–°æ–‡ä»¶ä¸­(_I)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TextStylePolicyPanel.cs:2
-#, fuzzy
msgid "Native"
-msgstr "(活动)"
+msgstr "原生"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TextStylePolicyPanel.cs:2
-#, fuzzy
msgid "Mac Classic"
-msgstr "Main ç±»(_M)"
+msgstr "Mac ç»å…¸"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TextStylePolicyPanel.cs:2
msgid "Unix / Mac"
-msgstr ""
+msgstr "Unix / Mac"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TextStylePolicyPanel.cs:2
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:31
-#, fuzzy
msgid "Microsoft Windows"
-msgstr "上一个窗å£(_P)"
+msgstr "Microsoft Windows"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TextStylePolicyPanelWidget.cs:2
msgid "Desired _file width:"
-msgstr ""
+msgstr "所需的文件宽度(_F):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TextStylePolicyPanelWidget.cs:2
-#, fuzzy
msgid "columns"
msgstr "列"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TextStylePolicyPanelWidget.cs:2
-#, fuzzy
msgid "_Line endings:"
-msgstr "å¯ç”¨çš„ç¼–ç ï¼š"
+msgstr "行结尾(_L):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TextStylePolicyPanelWidget.cs:2
-#, fuzzy
msgid "<b>Whitespace</b>"
-msgstr "<b>模æ¿</b>"
+msgstr "<b>空白</b>"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TextStylePolicyPanelWidget.cs:2
-#, fuzzy
msgid "_Tab width:"
-msgstr "Tab 大å°(_T)"
+msgstr "Tabk宽度(_T)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TextStylePolicyPanelWidget.cs:2
-#, fuzzy
msgid "_Indent width:"
-msgstr "Tab 大å°(_T)"
+msgstr "缩进宽度(_I):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TextStylePolicyPanelWidget.cs:2
-#, fuzzy
msgid "_Convert tabs to spaces"
-msgstr "将跳格转æ¢ä¸ºç©ºæ ¼(_O)"
+msgstr "将制表符转æ¢ä¸ºç©ºæ ¼(_C)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.TextStylePolicyPanelWidget.cs:2
msgid "_Allow tabs after non-tabs"
-msgstr ""
+msgstr "non-tabs之åŽå…许tabs(_A)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplatePanel.cs:4
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DotDesktopViewWidget.cs:3
msgid "Key"
-msgstr ""
+msgstr "é”®"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplatePanel.cs:7
-#, fuzzy
msgid "Remove template"
-msgstr "删除"
+msgstr "删除模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplatePanel.cs:7
-#, fuzzy
msgid "Are you sure you want to remove this template?"
-msgstr "您确定è¦åˆ é™¤æ­¤æ–‡ä»¶å—?"
+msgstr "您确定è¦åˆ é™¤æ­¤æ¨¡æ¿å—?"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.CodeTemplatePanelWidget.cs:2
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.CommitMessageStylePanelWidget.cs:1
#: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Formatting.CSharpFormattingPolicyPanelWidget.cs:2
#: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Formatting.CSharpFormattingProfileDialog.cs:2
-#, fuzzy
msgid "Preview:"
-msgstr "预览"
+msgstr "预览:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.CodeTemplatePanelWidget.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2
#: ../src/addins/MonoDevelop.Gettext/gtk-gui/MonoDevelop.Gettext.POEditorWidget.cs:2
-#, fuzzy
msgid "S_how whitespaces"
-msgstr "显示信æ¯"
+msgstr "显示空格(_H)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/EditTemplateDialog.cs:4
-#, fuzzy
msgid "New template"
-msgstr "模æ¿"
+msgstr "新建模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/EditTemplateDialog.cs:4
-#, fuzzy
msgid "Edit template"
-msgstr "代ç æ¨¡æ¿"
+msgstr "编辑模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/EditTemplateDialog.cs:8
msgid "notset"
-msgstr ""
+msgstr "未设置"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2
-#, fuzzy
msgid "_Mime:"
-msgstr "å称(_N):"
+msgstr "_Mime:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2
-#, fuzzy
msgid "_Group:"
-msgstr "组"
+msgstr "组(_G):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2
msgid "Is _expandable template"
-msgstr ""
+msgstr "å¯æ‰©å±•æ¨¡æ¿(_E)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2
msgid "Is _surround with template"
-msgstr ""
+msgstr "环绕模æ¿(_S)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2
msgid "_Shortcut:"
-msgstr ""
+msgstr "å¿«æ·æ–¹å¼(_S):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.CombineInformationWidget.cs:2
@@ -5460,21 +4973,19 @@ msgstr ""
#: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.ColorShemeEditor.cs:35
#: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.NewColorShemeDialog.cs:10
msgid "_Description:"
-msgstr "æè¿°(_D):"
+msgstr "æè¿°(_D):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2
-#, fuzzy
msgid "Template Text:"
-msgstr "模æ¿"
+msgstr "模æ¿æ–‡æœ¬:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:2
-#, fuzzy
msgid "Editable"
-msgstr "编辑表"
+msgstr "å¯ç¼–辑"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:3
msgid "Identifier"
-msgstr ""
+msgstr "标识符"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:5
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs:20
@@ -5484,55 +4995,52 @@ msgid "Text"
msgstr "文本"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:5
-#, fuzzy
msgid "Icon name"
-msgstr "解决方案å(_S):"
+msgstr "图标å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:2
msgid "Default value for this variable."
-msgstr ""
+msgstr "æ­¤å˜é‡çš„默认值。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:2
msgid "The tooltip to display to the user for this variable."
-msgstr ""
+msgstr "æ­¤æ示将此å˜é‡æ˜¾ç¤ºç»™ç”¨æˆ·ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:2
msgid "A function to be evaluated for the contents of this variable."
-msgstr ""
+msgstr "对于此å˜é‡çš„内容进行计算的功能。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:2
msgid "Whether the variable is an editable region."
-msgstr ""
+msgstr "无论å˜é‡æ˜¯ä¸€ä¸ªå¯ç¼–辑区域。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:3
msgid ""
"Whether the variable is an identifier, and should only accept valid "
"identifiers as input."
-msgstr ""
+msgstr "是å¦å˜é‡æ˜¯ä¸€ä¸ªæ ‡è¯†ç¬¦ï¼Œå¹¶ä¸”应该åªæŽ¥å—有效标识符作为输入。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:3
msgid "A list of values for the user to choose from."
-msgstr ""
+msgstr "供用户选择值的列表。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs:4
msgid "{0} is currently running on <b>{1}</b>."
-msgstr ""
+msgstr "{0}当å‰æ­£åœ¨è¿è¡Œåœ¨ <b>{1}</b>."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs:8
-#, fuzzy
msgid "Select the mono installation prefix"
-msgstr "<b>选择è¦å®‰è£…çš„æ’件,然åŽç‚¹å‡»ä¸‹ä¸€æ­¥</b>"
+msgstr "选择mono安装å‰ç¼€"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs:8
-#, fuzzy
msgid "Mono runtime not found"
-msgstr "文件未找到:{0}"
+msgstr "Monoè¿è¡Œæ—¶æœªæ‰¾åˆ°"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs:8
msgid ""
"Please provide a valid directory prefix where mono is installed (for "
"example, /usr)"
-msgstr ""
+msgstr "请æ供有效的mono安装å‰ç¼€(例如: /usr)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.MonoRuntimePanelWidget.cs:2
msgid ""
@@ -5541,6 +5049,8 @@ msgid ""
"the .NET runtime to be used for building and running applications when none "
"is specifically selected."
msgstr ""
+"如果你有Mono的并行安装,你å¯ä»¥åœ¨è¿™é‡Œæ³¨å†Œï¼Œæ‰€ä»¥ä½ å¯ä»¥ç”¨å®ƒæ¥æž„建和è¿è¡Œé¡¹ç›®ã€‚ "
+"<b>默认è¿è¡Œæ—¶é—´</b>是用于构建和时专门选择任何è¿è¡Œçš„应用程åº.NETè¿è¡Œåº“。"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.MonoRuntimePanelWidget.cs:2
msgid "Set as Default"
@@ -5549,27 +5059,23 @@ msgstr "设为缺çœ"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.MonoRuntimePanelWidget.cs:2
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.AddinInfoView.cs:2
msgid "label1"
-msgstr ""
+msgstr "label1"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultPad.cs:8
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs:6
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupWindow.cs:115
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/PackagesWidget.cs:89
-#, fuzzy
msgid "Searching..."
-msgstr "正在ä¿å­˜..."
+msgstr "正在æœç´¢..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultPad.cs:8
-#, fuzzy
msgid "Search completed"
-msgstr "æœç´¢å·²å–消。"
+msgstr "æœç´¢å®Œæˆã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultPad.cs:8
-#, fuzzy
msgid "{0} match."
msgid_plural "{0} matches."
-msgstr[0] "{0}分钟"
-msgstr[1] "{0}分钟"
+msgstr[0] "{0} 个匹é…。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:6
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.FindInFiles.FindInFilesDialog.cs:2
@@ -5578,9 +5084,8 @@ msgstr "在文件中查找"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:6
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.FindInFiles.FindInFilesDialog.cs:2
-#, fuzzy
msgid "Replace in Files"
-msgstr "在文件中进行替æ¢(_E)..."
+msgstr "在文件中替æ¢"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:8
msgid "Whole solution"
@@ -5589,68 +5094,58 @@ msgstr "整个解决方案"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:8
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/CustomExecutionModeManagerDialog.cs:6
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Execution.CustomExecutionModeDialog.cs:2
-#, fuzzy
msgid "All solutions"
-msgstr "空解决方案"
+msgstr "所有解决方案"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:8
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/CustomExecutionModeManagerDialog.cs:6
-#, fuzzy
msgid "Current project"
-msgstr "清除最近打开的工程"
+msgstr "当å‰é¡¹ç›®"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:8
msgid "All open files"
-msgstr "打开的全部文件"
+msgstr "所有打开文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:8
msgid "Directories"
msgstr "目录"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:8
-#, fuzzy
msgid "Current document"
-msgstr "当å‰åˆ—"
+msgstr "当å‰æ–‡æ¡£"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:8
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs:22
-#, fuzzy
msgid "Selection"
-msgstr "选择(_S)"
+msgstr "选择"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:12
-#, fuzzy
msgid "_Replace:"
-msgstr "替æ¢ï¼š"
+msgstr "替æ¢(_R):"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:12
-#, fuzzy
msgid "R_eplace"
-msgstr "替æ¢"
+msgstr "替æ¢(_E):"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:12
-#, fuzzy
msgid "_Path:"
-msgstr "路径:"
+msgstr "路径(_P):"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:12
msgid "Re_cursively"
-msgstr ""
+msgstr "递归(_C)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:12
-#, fuzzy
msgid "_File Mask:"
-msgstr "文件掩ç ï¼š"
+msgstr "文件掩ç (_F):"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:12
-#, fuzzy
msgid "Include binary files"
-msgstr "包括找到的文件"
+msgstr "包å«äºŒè¿›åˆ¶æ–‡ä»¶"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:12
-#, fuzzy
msgid "Include hidden files and directories"
-msgstr "显示éšè—文件和目录"
+msgstr "包括éšè—的文件和目录"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:18
msgid "Select directory"
@@ -5658,23 +5153,20 @@ msgstr "选择目录"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:31
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/BaseDirectoryPanel.cs:6
-#, fuzzy
msgid "Directory not found: {0}"
-msgstr "文件未找到:{0}"
+msgstr "目录未找到:{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:38
-#, fuzzy
msgid "There is a search already in progress. Do you want to stop it?"
-msgstr "å·²ç»æœ‰å¦å¤–一个æœç´¢æ­£åœ¨è¿›è¡Œä¸­ã€‚您是å¦æƒ³è¦å–消它?"
+msgstr "有正在进行的æœç´¢ã€‚你想阻止它?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:39
msgid "Search pattern is invalid"
msgstr "æœç´¢æ¨¡å¼æ— æ•ˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:40
-#, fuzzy
msgid "Replace pattern is invalid"
-msgstr "æœç´¢æ¨¡å¼æ— æ•ˆ"
+msgstr "替æ¢æ¨¡å¼æ˜¯æ— æ•ˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:44
msgid "The search could not be finished: {0}"
@@ -5685,353 +5177,297 @@ msgid "Search cancelled."
msgstr "æœç´¢å·²å–消。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:44
-#, fuzzy
msgid "Search completed."
-msgstr "æœç´¢å·²å–消。"
+msgstr "æœç´¢å®Œæˆã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:44
msgid "Search time: {0} seconds."
msgstr "æœç´¢æ—¶é—´ï¼š{0}秒。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:44
-#, fuzzy
msgid "{0} match found"
msgid_plural "{0} matches found"
-msgstr[0] "{0}分钟"
-msgstr[1] "{0}分钟"
+msgstr[0] "找到匹é…项 {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs:44
msgid "in {0} file."
msgid_plural "in {0} files."
-msgstr[0] ""
+msgstr[0] "在文件 {0}。"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.FindInFiles.FindInFilesDialog.cs:2
-#, fuzzy
msgid "_Find:"
-msgstr "查找:"
+msgstr "查找(_F):"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.FindInFiles.FindInFilesDialog.cs:2
msgid "_Look in:"
-msgstr ""
+msgstr "æœç´¢äºŽï¼š"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.FindInFiles.FindInFilesDialog.cs:2
-#, fuzzy
msgid "C_ase sensitive"
-msgstr "区分大å°å†™"
+msgstr "区分大å°å†™(_A)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.FindInFiles.FindInFilesDialog.cs:2
-#, fuzzy
msgid "Rege_x search"
-msgstr "库"
+msgstr "正则表达å¼æœç´¢(_X)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.FindInFiles.FindInFilesDialog.cs:2
#: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/POEditorWidget.cs:17
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs:16
-#, fuzzy
msgid "_Whole words only"
-msgstr "匹é…整个å•è¯"
+msgstr "全字匹é…(_W)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:10
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:29
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:37
-#, fuzzy
msgid "Looking in '{0}'"
-msgstr "正在装入解决方案:{0}"
+msgstr "æœç´¢äºŽ{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:11
-#, fuzzy
msgid "Looking for '{0}' in current document"
-msgstr "正在 {1} 中查找“{0}â€ã€‚"
+msgstr "正在当å‰æ–‡æ¡£æœç´¢â€œ{0}â€"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:11
-#, fuzzy
msgid "Replacing '{0}' in current document"
-msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
+msgstr "正在当å‰æ–‡æ¡£ä¸­'{0}'替æ¢"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:16
-#, fuzzy
msgid "Looking for '{0}' in current selection"
-msgstr "正在 {1} 中查找“{0}â€ã€‚"
+msgstr "正在当å‰é€‰æ‹©å—中æœç´¢ '{0}' "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:16
-#, fuzzy
msgid "Replacing '{0}' in current selection"
-msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
+msgstr "正在当å‰é€‰æ‹©å—中替æ¢'{0}' "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:19
-#, fuzzy
msgid "Looking in solution folder '{0}'"
-msgstr "正在打开解决方案:{0}"
+msgstr "æœç´¢äºŽè§£å†³æ–¹æ¡ˆç›®å½• '{0}'"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:19
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:25
-#, fuzzy
msgid "Looking in project '{0}'"
-msgstr "正在 {1} 中查找“{0}â€ã€‚"
+msgstr "æœç´¢äºŽé¡¹ç›®'{0}'"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:20
-#, fuzzy
msgid "Looking for '{0}' in all projects"
-msgstr "正在 {1} 中查找“{0}â€ã€‚"
+msgstr "在所有项目中æœç´¢ '{0}' "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:20
-#, fuzzy
msgid "Replacing '{0}' in all projects"
-msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
+msgstr "正在所有项目中替æ¢'{0}'"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:26
-#, fuzzy
msgid "Looking for '{0}' in project '{1}'"
-msgstr "正在 {1} 中查找“{0}â€ã€‚"
+msgstr "正在项目'{1}'中æœç´¢ '{0}' "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:26
-#, fuzzy
msgid "Replacing '{0}' in project '{1}'"
-msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
+msgstr "正在项目{1}'中替æ¢'{0}' "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:30
-#, fuzzy
msgid "Looking for '{0}' in all open documents"
-msgstr "正在 {1} 中查找“{0}â€ã€‚"
+msgstr "正在所有已打开文档中æœç´¢ '{0}'"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:30
-#, fuzzy
msgid "Replacing '{0}' in all open documents"
-msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
+msgstr "正在所有已打开文档中替æ¢'{0}' "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:44
-#, fuzzy
msgid "Looking for '{0}' in directory '{1}'"
-msgstr "正在 {1} 中查找“{0}â€ã€‚"
+msgstr "æœç´¢ '{0}' 于目录 '{1}'"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:44
-#, fuzzy
msgid "Replacing '{0}' in directory '{1}'"
-msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
+msgstr "正在替æ¢'{0}' 于目录 '{1}'"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs:10
-#, fuzzy
msgid "File {0} not found."
-msgstr "中找ä¸åˆ°æ–‡ä»¶ '{0}'。"
+msgstr "文件 '{0}'未找到。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs:26
-#, fuzzy
msgid "Clear results"
-msgstr "æœç´¢ç»“æžœ"
+msgstr "清除结果"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs:26
-#, fuzzy
msgid "Show output"
msgstr "显示输出"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs:26
-#, fuzzy
msgid "Pin results pad"
msgstr "显示结果é¢æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs:67
-#, fuzzy
msgid "Search Result"
msgstr "æœç´¢ç»“æžœ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeFormatting/CodeFormattingCommands.cs:4
-#, fuzzy
msgid "_Format Selection"
-msgstr "å°å†™é€‰ä¸­å†…容(_L)"
+msgstr "æ ¼å¼åŒ–选择(_F)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/ExecutionModeCommandService.cs:2
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/ExecutionModeCommandService.cs:4
-#, fuzzy
msgid "Run With: {0}"
-msgstr "使用其他程åºæ‰“å¼€"
+msgstr "打开方å¼:{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/ExecutionModeCommandService.cs:2
msgid "Hold Control key to display the execution parameters dialog."
-msgstr ""
+msgstr "按ä½Ctrl键显示执行å‚数对è¯æ¡†ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/ExecutionModeCommandService.cs:5
msgid "Edit Custom Modes..."
-msgstr ""
+msgstr "编辑自定义模å¼..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/ExecutionModeCommandService.cs:6
-#, fuzzy
msgid "Custom Parameters..."
-msgstr "å‚æ•°"
+msgstr "自定义å‚æ•°..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Debug Mode"
-msgstr "调试"
+msgstr "调试模å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Debug Casts"
-msgstr "调试"
+msgstr "调试转æ¢"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "MDB Mode"
-msgstr ""
+msgstr "MDB模å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "GDB Symbols"
-msgstr "定义符å·(_Y):"
+msgstr "GDB的符å·"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Profiler"
-msgstr "æ供者"
+msgstr "分æžå·¥å…·"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Verbose Level"
-msgstr ""
+msgstr "详细级别"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Runtime Version"
-msgstr "è¿è¡Œæ—¶åˆ»ç‰ˆæœ¬(_V):"
+msgstr "è¿è¡Œæ—¶ç‰ˆæœ¬"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Security Mode"
-msgstr "ä¿å®‰ç¨‹åº"
+msgstr "安全模å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Verify All"
-msgstr ""
+msgstr "验è¯å…¨éƒ¨"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs:6
-#, fuzzy
msgid "Trace Expression"
-msgstr "正则表达å¼"
+msgstr "跟踪表达å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Log Level"
-msgstr "警告级别(_W):"
+msgstr "日志级别"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Log Mask"
-msgstr ""
+msgstr "日志掩ç "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Serializer Generation"
-msgstr "代ç ç”Ÿæˆ"
+msgstr "åºåˆ—化生æˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Mono Configuration Directory"
-msgstr "解决方案目录(_S)"
+msgstr "Monoé…置目录"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Mono Configuration File"
-msgstr "应用程åºé…置文件"
+msgstr "Monoé…置文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Disable AIO"
-msgstr "ç¦ç”¨"
+msgstr "ç¦ç”¨AIO"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Disable Managed Collation"
-msgstr ""
+msgstr "ç¦ç”¨æ‰˜ç®¡æ‰‹æœº"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "External Encodings"
-msgstr "外部工具"
+msgstr "扩展编ç "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "GAC Prefix"
-msgstr "预览"
+msgstr "GAC å‰ç¼€"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Strip Drive Letters"
-msgstr ""
+msgstr "Strip Drive Letters"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Case Insensitive Paths"
-msgstr "区分大å°å†™"
+msgstr "ä¸åŒºåˆ†å¤§å°å†™çš„路径"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Managed Watcher"
-msgstr ""
+msgstr "管ç†ç›‘视器"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "No SMP"
-msgstr ""
+msgstr "æ—  SMP"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Mono Path"
-msgstr "Mono 工程"
+msgstr "Mono 路径"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Windows Forms Theme"
-msgstr ""
+msgstr "Windows 窗体主题"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Threads Per Cpu"
-msgstr ""
+msgstr "线程æ¯CPU"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Keep ASP.NET Temporary Files"
-msgstr "ASP.NET 文件"
+msgstr "ä¿æŒ ASP.NET 临时文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Trace Listener"
-msgstr "任务列表"
+msgstr "跟踪侦å¬å™¨"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "X11 Exceptions"
-msgstr "选项"
+msgstr "X11 Exceptions"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "XDebug"
-msgstr "调试"
+msgstr "XDebug"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Garbage Collector"
-msgstr "目标目录"
+msgstr "垃圾收集器"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Enable LLVM"
-msgstr "å¯ç”¨"
+msgstr "å¯ç”¨ LLVM"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Disable LLVM"
-msgstr "ç¦ç”¨"
+msgstr "ç¦ç”¨ LLVM"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Desktop Mode"
-msgstr "调试"
+msgstr "æ¡Œé¢æ¨¡å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:4
-#, fuzzy
msgid "Server Mode"
-msgstr "æœåŠ¡å™¨"
+msgstr "æœåŠ¡å™¨æ¨¡å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:5
-#, fuzzy
msgid "Additional Options"
-msgstr "<b>常规选项</b>"
+msgstr "附加选项"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Enable debugging support."
-msgstr ""
+msgstr "å¯ç”¨è°ƒè¯•æ”¯æŒã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "Enable more detailed InvalidCastException messages."
@@ -6257,7 +5693,6 @@ msgid "Additional command line options to be provided to the Mono command."
msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:5
-#, fuzzy
msgid "Disabled"
msgstr "ç¦ç”¨"
@@ -6269,30 +5704,25 @@ msgid "Debug"
msgstr "调试"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Runtime"
-msgstr "è¿è¡Œæ—¶åˆ»ï¼š"
+msgstr "è¿è¡Œæ—¶"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
#: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:9
-#, fuzzy
msgid "Security"
-msgstr "<b>ä¿å­˜</b>"
+msgstr "安全"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Tracing"
-msgstr "æœç´¢äºŽï¼š"
+msgstr "追踪"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Logging"
-msgstr "ç¼–ç "
+msgstr "日志"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Library Options"
-msgstr "显示选项"
+msgstr "库选项"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CombineConfigurationPanel.cs:8
@@ -6301,69 +5731,61 @@ msgid "Configuration"
msgstr "é…ç½®"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
-#, fuzzy
msgid "Compatibility"
-msgstr "编译"
+msgstr "兼容性"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
msgid "LLVM"
-msgstr ""
+msgstr "LLVM"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:4
-#, fuzzy
msgid "Optimizations"
-msgstr "<b>优化</b>"
+msgstr "优化"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.SelectFileFormatDialog.cs:2
-#, fuzzy
msgid "Select File Format"
-msgstr "全选(_A)"
+msgstr "选择文件格å¼"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.SelectFileFormatDialog.cs:2
msgid "<b>File Format Incompatibility Detected</b>"
-msgstr ""
+msgstr "<b>文件格å¼ä¸å…¼å®¹æ£€æµ‹</b>"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.SelectFileFormatDialog.cs:2
msgid ""
"The current file format for project {0} is not compatible with some settings "
"of the project."
-msgstr ""
+msgstr "项目{0}当å‰çš„文件格å¼ä¸ä¸Žè¯¥é¡¹ç›®çš„一些设置兼容。"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.SelectFileFormatDialog.cs:2
-#, fuzzy
msgid "Please select a new file format for the solution:"
-msgstr "为æ¯ä¸ªè§£å†³æ–¹æ¡ˆé¡¹é€‰æ‹©ä¸€ä¸ªç›®æ ‡é…置:"
+msgstr "请选择该解决方案一个新的文件格å¼ï¼š"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.SelectFileFormatDialog.cs:2
-#, fuzzy
msgid "Current Format:"
-msgstr "当å‰åˆ—"
+msgstr "当å‰æ ¼å¼:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.SelectFileFormatDialog.cs:2
-#, fuzzy
msgid "New Format:"
-msgstr "文件掩ç ï¼š"
+msgstr "æ–°æ ¼å¼:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.MaintenanceOptionsPanelWidget.cs:2
-#, fuzzy
msgid "Enable MonoDevelop Instrumentation"
-msgstr "Mono 文档"
+msgstr "å¯ç”¨ MonoDevelop 仪表"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.MaintenanceOptionsPanelWidget.cs:2
msgid "Enable automated test support"
-msgstr ""
+msgstr "å¯ç”¨è‡ªåŠ¨æµ‹è¯•æ”¯æŒ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs:5
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskStore.cs:10
-#, fuzzy
msgid "End of list"
-msgstr "转到行"
+msgstr "列表末尾"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AssemblyFoldersPanelWidget.cs:2
msgid ""
"Custom folders where MonoDevelop should look for assemblies and packages:"
-msgstr ""
+msgstr "自定义文件夹,其中的MonoDevelop应该寻找组件和包:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/BuildMessagePanel.cs:5
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:108
@@ -6374,69 +5796,59 @@ msgid "Error"
msgstr "错误"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/BuildMessagePanel.cs:5
-#, fuzzy
msgid "Error or Warning"
-msgstr "显示警告"
+msgstr "错误或警告"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/BuildMessagePanel.cs:5
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs:22
-#, fuzzy
msgid "Always"
-msgstr "总是创建备份"
+msgstr "总是"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/BuildMessagePanel.cs:5
-#, fuzzy
msgid "On Errors"
msgstr "错误"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/BuildMessagePanel.cs:5
-#, fuzzy
msgid "On Errors or Warnings"
-msgstr "没有警告"
+msgstr "错误&警告"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/BuildMessagePanel.cs:5
-#, fuzzy
msgid "For Errors"
-msgstr "显示错误"
+msgstr "错误"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/BuildMessagePanel.cs:5
msgid "For Errors and Warnings"
-msgstr ""
+msgstr "错误和警告"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildMessagePanelWidget.cs:2
-#, fuzzy
msgid "Show error pad:"
-msgstr "显示错误"
+msgstr "显示错误é¢æ¿ï¼š"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildMessagePanelWidget.cs:2
-#, fuzzy
msgid "Show message bubbles:"
-msgstr "显示信æ¯"
+msgstr "显示消æ¯æ°”泡:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildMessagePanelWidget.cs:2
msgid "Jump to first error or warning:"
-msgstr ""
+msgstr "跳转到第一个错误或警告:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs:31
-#, fuzzy
msgid "Search:"
-msgstr "æœç´¢"
+msgstr "æœç´¢ï¼š"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs:32
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs:7
-#, fuzzy
msgid "Find next {0}"
-msgstr "查找下一个"
+msgstr "查找下一个{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs:33
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs:7
-#, fuzzy
msgid "Find previous {0}"
-msgstr "查找上一个(_P)"
+msgstr "查找上一个 {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs:92
msgid "Console input not supported"
-msgstr ""
+msgstr "控制å°è¾“å…¥ä¸æ”¯æŒ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs:92
msgid ""
@@ -6444,16 +5856,16 @@ msgid ""
"application needs to read data from the standard input, please set the 'Run "
"in External Console' option in the project options."
msgstr ""
+"使用{0}输出控制å°æ—¶ï¼Œä¸æ”¯æŒæŽ§åˆ¶å°è¾“入。如果你的应用程åºéœ€è¦ä»Žæ ‡å‡†è¾“入读å–æ•°"
+"æ®ï¼Œè¯·è®¾ç½®é¡¹ç›®ä¸­é€‰æ‹©é€‰é¡¹â€œåœ¨å¤–部控制å°ä¸­è¿è¡Œâ€ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:9
-#, fuzzy
msgid "Generate templates"
-msgstr "创建新文件"
+msgstr "生æˆæ¨¡æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:10
-#, fuzzy
msgid "No templates found"
-msgstr "未找到失败测试。"
+msgstr "没有å‘现模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:21
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:38
@@ -6485,18 +5897,16 @@ msgid "Warnings in file generation."
msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:27
-#, fuzzy
msgid "Generated files successfully."
-msgstr "æ“作æˆåŠŸå®Œæˆã€‚"
+msgstr "生æˆæ–‡ä»¶æˆåŠŸã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:41
msgid "Cancelled because generator ran again for the same file"
msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:42
-#, fuzzy
msgid "The '{0}' code generator crashed"
-msgstr "无法创建文件“{0}â€ã€‚"
+msgstr "'{0}' 代ç ç”Ÿæˆå™¨å´©æºƒ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:43
msgid "The '{0}' code generator output invalid filename '{1}'"
@@ -6524,26 +5934,22 @@ msgid "_Browse..."
msgstr "æµè§ˆ(_B)..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/ConsoleView.cs:9
-#, fuzzy
msgid "Clear"
-msgstr "清ç†"
+msgstr "清除"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs:60
-#, fuzzy
msgid "Cut"
-msgstr "剪切(_T)"
+msgstr "剪切"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs:61
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs:57
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.InstrumentationViewerDialog.cs:2
-#, fuzzy
msgid "Copy"
-msgstr "å¤åˆ¶(_C)"
+msgstr "å¤åˆ¶"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs:62
-#, fuzzy
msgid "Paste"
-msgstr "粘贴(_P)"
+msgstr "粘贴"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs:64
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs:51
@@ -6567,7 +5973,7 @@ msgstr "æ˜¾ç¤ºå·¥å…·æ  '{0}'"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs:25
msgid "The key combination ({0}, {1}) is not a command."
-msgstr ""
+msgstr "组åˆé”® ({0},{1}) ä¸æ˜¯ä¸€ä¸ªå‘½ä»¤ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/LinkCommandEntry.cs:2
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/MarkerOperationsHandler.cs:2
@@ -6621,7 +6027,7 @@ msgstr "éšè—"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs:35
msgid "Minimize"
-msgstr ""
+msgstr "最å°åŒ–"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs:36
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs:28
@@ -6629,9 +6035,8 @@ msgid "Dock"
msgstr "åœé "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs:37
-#, fuzzy
msgid "Undock"
-msgstr "撤消(_U)"
+msgstr "å–消åœé "
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/ProgressDialog.cs:6
msgid "Operation completed with errors."
@@ -6656,9 +6061,8 @@ msgid "ERROR: "
msgstr "错误:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs:69
-#, fuzzy
msgid "Gathering class information..."
-msgstr "正在执行主编译..."
+msgstr "正在收集类信æ¯..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindow.cs:19
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/TooltipInformationWindow.cs:14
@@ -6668,14 +6072,12 @@ msgid "Summary"
msgstr "摘è¦"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWidget.cs:24
-#, fuzzy
msgid "No Completions Found"
-msgstr "未找到回归。"
+msgstr "å‘现没有完æˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWidget.cs:24
-#, fuzzy
msgid "No suggestions"
-msgstr "å¤åˆ¶é€‰ä¸­å†…容"
+msgstr "无建议"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.MultiTaskProgressDialog.cs:2
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.ProgressDialog.cs:2
@@ -6684,32 +6086,30 @@ msgstr "进度"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.MultiTaskProgressDialog.cs:2
msgid "Details:"
-msgstr "细节:"
+msgstr "详情:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.ProgressDialog.cs:2
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkErrorDialog.cs:2
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.ErrorDialog.cs:2
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.ProgressDialog.cs:2
msgid "Details"
-msgstr "细节"
+msgstr "详情"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.ProgressDialog.cs:2
msgid "GtkButton"
-msgstr ""
+msgstr "GtkButton"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs:17
msgid "Loading Workbench"
-msgstr "加载 Workbench"
+msgstr "加载工作å°"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs:29
-#, fuzzy
msgid "Could not open file: {0}"
-msgstr "无法删除文件夹“{0}â€"
+msgstr "无法打开文件:{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:15
-#, fuzzy
msgid "Workspace saved."
-msgstr "工程已ä¿å­˜ã€‚"
+msgstr "工作区已ä¿å­˜ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:15
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:13
@@ -6720,29 +6120,24 @@ msgid "Save failed."
msgstr "ä¿å­˜å¤±è´¥ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:17
-#, fuzzy
msgid "Saving Workspace..."
-msgstr "正在ä¿å­˜..."
+msgstr "正在ä¿å­˜å·¥ä½œåŒº..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:20
-#, fuzzy
msgid "No solution has been selected."
-msgstr "安装已ç»æˆåŠŸå®Œæˆã€‚"
+msgstr "没有解决方案已被选择。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:26
-#, fuzzy
msgid "Could not close solution '{0}'."
-msgstr "无法ä¿å­˜è§£å†³æ–¹æ¡ˆï¼š{0}"
+msgstr "无法关闭解决方案“{0}â€ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:33
-#, fuzzy
msgid "{0} is already opened"
-msgstr "文件å {0} 无效"
+msgstr "{0}已打开"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:41
-#, fuzzy
msgid "File is not a project or solution: {0}"
-msgstr "无法ä¿å­˜è§£å†³æ–¹æ¡ˆï¼š{0}"
+msgstr "文件ä¸æ˜¯ä¸€ä¸ªé¡¹ç›®æˆ–解决方案:{0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:44
msgid "Solution loaded."
@@ -6774,22 +6169,20 @@ msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:54
#: ../src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderProject.cs:8
-#, fuzzy
msgid ""
"The project '{0}' has been modified by an external application. Do you want "
"to reload it?"
-msgstr "文件“{0}â€å·²ç»å­˜åœ¨ã€‚您是å¦æƒ³è¦æ›¿æ¢å®ƒï¼Ÿ"
+msgstr "该项目“{0}â€å·²ç»ç”±å¤–部应用程åºè¿›è¡Œä¿®æ”¹ã€‚你想é‡æ–°åŠ è½½å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/PlatformService.cs:14
-#, fuzzy
msgid "Text file"
-msgstr "删除文件"
+msgstr "文本文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/PlatformService.cs:14
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ItemToolboxNode.cs:40
#: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs:4
msgid "Unknown"
-msgstr ""
+msgstr "未知"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs:7
msgid "_Reload"
@@ -6826,16 +6219,15 @@ msgstr "覆盖文件(_O)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs:41
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/LogReportingStartup.cs:4
msgid "An error has occurred"
-msgstr ""
+msgstr "å‘生一个错误"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MimeTypePolicyOptionsPanel.cs:11
-#, fuzzy
msgid "Use default settings from '{0}'"
-msgstr "使用默认 sans-serif 字体(_S)"
+msgstr "从使用默认设置“{0}â€"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MimeTypePolicyOptionsSection.cs:4
msgid "_Policy:"
-msgstr ""
+msgstr "ç­–ç•¥(_P):"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MimeTypePolicyOptionsSection.cs:4
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/PolicyOptionsPanel.cs:4
@@ -6847,31 +6239,27 @@ msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MimeTypePolicyOptionsSection.cs:6
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/PolicyOptionsPanel.cs:6
-#, fuzzy
msgid "System Default"
-msgstr "设为缺çœ"
+msgstr "系统默认"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MimeTypePolicyOptionsSection.cs:6
msgid "Inherited Policy"
-msgstr ""
+msgstr "继承策略"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs:4
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.BinariesZipEditorWidget.cs:1
-#, fuzzy
msgid "Configuration:"
-msgstr "é…ç½®"
+msgstr "é…ç½®:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs:4
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.NewConfigurationDialog.cs:2
-#, fuzzy
msgid "Platform:"
-msgstr "目标路径"
+msgstr "å¹³å°ï¼š"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs:5
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs:16
-#, fuzzy
msgid "All Configurations"
-msgstr "é…ç½®"
+msgstr "全部é…ç½®"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs:8
msgid "(Active)"
@@ -6880,11 +6268,11 @@ msgstr "(活动)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs:19
#: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Project.CodeGenerationPanelWidget.cs:2
msgid "Any CPU"
-msgstr ""
+msgstr "任何 CPU"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectOptionsDialog.cs:3
msgid "Project Options"
-msgstr "工程选项"
+msgstr "项目选项"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectOptionsDialog.cs:3
msgid ""
@@ -6895,14 +6283,12 @@ msgstr ""
"请åªä½¿ç”¨å­—æ¯ã€æ•°å­—ã€ç©ºæ ¼ã€â€œ.â€å’Œâ€œ_â€ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectOptionsDialog.cs:4
-#, fuzzy
msgid "The project could not be renamed."
-msgstr "工程无法创建"
+msgstr "该项目ä¸èƒ½è¢«é‡å‘½å。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectOptionsDialog.cs:4
-#, fuzzy
msgid "The file '{0}' already exist. Do you want to replace it?"
-msgstr "文件“{0}â€å·²ç»å­˜åœ¨ã€‚您是å¦æƒ³è¦æ›¿æ¢å®ƒï¼Ÿ"
+msgstr "文件“{0}â€å·²ç»å­˜åœ¨ã€‚你想å–代它?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/RenameConfigDialog.cs:2
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewConfigurationDialog.cs:4
@@ -6916,17 +6302,15 @@ msgstr "å·²ç»å­˜åœ¨ä¸€ä¸ªå为“{0}â€çš„é…置。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AddFileDialog.cs:12
msgid "Override default build action"
-msgstr ""
+msgstr "覆盖默认生æˆæ“作"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AddMimeTypeDialog.cs:3
-#, fuzzy
msgid "Unknown type"
-msgstr "未知语言:{0}"
+msgstr "未知类型"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AddMimeTypeDialog.cs:3
-#, fuzzy
msgid "Type '{0}' already registered"
-msgstr "文件 {0} å·²ç»å­˜åœ¨ã€‚是å¦è¦†ç›–?"
+msgstr "类型“{0}â€å·²æ³¨å†Œ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs:11
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs:21
@@ -6935,7 +6319,6 @@ msgstr "文件 {0} å·²ç»å­˜åœ¨ã€‚是å¦è¦†ç›–?"
#: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:57
#: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:59
#: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:62
-#, fuzzy
msgid "Assembly"
msgstr "程åºé›†"
@@ -6949,9 +6332,8 @@ msgid "Browse..."
msgstr "æµè§ˆ..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs:25
-#, fuzzy
msgid "Select Assembly"
-msgstr ".NET 程åºé›†"
+msgstr "选择程åºé›†"
# FIXME: il8n this
# FIXME: il8n this
@@ -6967,107 +6349,90 @@ msgstr "解决方案选项"
msgid ""
"Project directory can't be deleted since it contains files from other "
"projects or solutions"
-msgstr ""
+msgstr "项目目录无法删除,因为它包å«å…¶ä»–项目或解决方案的文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:2
-#, fuzzy
-msgid "Policies"
-msgstr "编译器:"
+msgid "Custom Policies"
+msgstr "自定义策略"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:2
msgid "Editing Policy:"
-msgstr ""
+msgstr "编辑策略:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:2
-#, fuzzy
msgid "Delete Policy"
-msgstr "最近工程"
+msgstr "删除策略"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:2
#: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.HighlightingPanel.cs:15
-#, fuzzy
msgid "Export"
-msgstr "导出..."
+msgstr "导出"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:3
-#, fuzzy
msgid "To file..."
-msgstr "打开文件..."
+msgstr "到文件..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:4
-#, fuzzy
msgid "To project or solution..."
-msgstr "选择目标ä½ç½®"
+msgstr "到项目或解决方案......"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:5
msgid "Add Policy"
-msgstr ""
+msgstr "添加策略"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:6
-#, fuzzy
msgid "New policy..."
-msgstr "新建文件..."
+msgstr "新建策略..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:7
-#, fuzzy
msgid "From file..."
-msgstr "新建文件(_F)..."
+msgstr "从文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:8
-#, fuzzy
msgid "From project or solution..."
-msgstr "选择目标ä½ç½®"
+msgstr "从项目或解决方案......"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:10
-#, fuzzy
msgid "Are you sure you want to delete the policy '{0}'?"
-msgstr "您确定想è¦åˆ é™¤æ–‡ä»¶â€œ{0}â€å—?"
+msgstr "你确定你è¦åˆ é™¤ç­–ç•¥\"{0}\"?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:13
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:15
-#, fuzzy
msgid "Select Policy File"
-msgstr "全选(_A)"
+msgstr "选择策略文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:13
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:15
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs:2
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ApplyPolicyDialog.cs:1
-#, fuzzy
msgid "MonoDevelop policy files"
-msgstr "MonoDevelop 解决方案文件"
+msgstr "MonoDevelop 策略文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:13
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ApplyPolicyDialog.cs:2
-#, fuzzy
msgid "The policy set could not be loaded"
-msgstr "无法装入文件“{0}â€ã€‚"
+msgstr "该策略集无法加载"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:14
-#, fuzzy
msgid "Apply to Project"
-msgstr "空 C 工程"
+msgstr "应用到项目"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:15
-#, fuzzy
msgid "The policy set could not be saved"
-msgstr "项目无法被ä¿å­˜"
+msgstr "该策略集无法ä¿å­˜"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs:15
-#, fuzzy
msgid "No Selection"
-msgstr "å¤åˆ¶é€‰ä¸­å†…容"
+msgstr "无选择"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectFileSelectorDialog.cs:3
#: ../external/mono-addins/Mono.Addins.Gui/Mono.Addins.Gui/AddinManagerDialog.cs:6
-#, fuzzy
msgid "All files"
msgstr "全部文件"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectFileSelectorDialog.cs:5
-#, fuzzy
msgid "Project Folders"
-msgstr "工程文件(_P)"
+msgstr "项目文件夹"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectFileSelectorDialog.cs:5
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs:1
@@ -7086,14 +6451,12 @@ msgid "Solution saved."
msgstr "解决方案已ä¿å­˜ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:15
-#, fuzzy
msgid "Items saved."
-msgstr "工程已ä¿å­˜ã€‚"
+msgstr "项已ä¿å­˜ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:17
-#, fuzzy
msgid "Item saved."
-msgstr "工程已ä¿å­˜ã€‚"
+msgstr "项已ä¿å­˜ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:17
#, fuzzy
@@ -7137,26 +6500,22 @@ msgid ""
msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:39
-#, fuzzy
msgid "Delete from Disk"
-msgstr "删除文件"
+msgstr "从ç£ç›˜ä¸­åˆ é™¤"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:41
-#, fuzzy
msgid "Deleting Files..."
-msgstr "在文件中进行替æ¢(_E)..."
+msgstr "正在删除文件..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:41
-#, fuzzy
msgid "The file or directory '{0}' could not be deleted."
-msgstr "无法删除文件 {0}"
+msgstr "无法删除的文件或目录\"{0}\"。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:41
-#, fuzzy
msgid ""
"An application is already running and will have to be stopped. Do you want "
"to continue?"
-msgstr "文件“{0}â€å·²ç»å­˜åœ¨ã€‚您是å¦æƒ³è¦æ›¿æ¢å®ƒï¼Ÿ"
+msgstr "应用程åºå·²åœ¨è¿è¡Œï¼Œå°†ä¸å¾—ä¸åœæ­¢ã€‚你想è¦ç»§ç»­å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:49
msgid "Execution failed."
@@ -7167,9 +6526,8 @@ msgid "No runnable executable found."
msgstr "未找到å¯è¿è¡Œçš„å¯æ‰§è¡Œæ–‡ä»¶ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:58
-#, fuzzy
msgid "Clean failed."
-msgstr "编译目标(_T)"
+msgstr "清除失败。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:58
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:92
@@ -7179,14 +6537,12 @@ msgid "---------------------- Done ----------------------"
msgstr "---------------------- å®Œæˆ ----------------------"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:58
-#, fuzzy
msgid "Clean successful."
-msgstr "构建æˆåŠŸã€‚"
+msgstr "清ç†æˆåŠŸã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:73
-#, fuzzy
msgid "Outdated Build"
-msgstr "构建åŽ(_A):"
+msgstr "过时的生æˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:73
#, fuzzy
@@ -7210,9 +6566,8 @@ msgid "Some of the open documents have unsaved changes."
msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:94
-#, fuzzy
msgid "Build canceled."
-msgstr "构建失败。"
+msgstr "生æˆå·²å–消。"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:94
msgid "Build successful."
@@ -7220,12 +6575,11 @@ msgstr "构建æˆåŠŸã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:94
msgid "Build: "
-msgstr "构建:"
+msgstr "生æˆ:"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:94
-#, fuzzy
msgid "Keep file path"
-msgstr "工程文件å"
+msgstr "ä¿æŒæ–‡ä»¶è·¯å¾„"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:94
#, fuzzy
@@ -7263,88 +6617,79 @@ msgid "Could not create directory '{0}'."
msgstr "无法创建目录“{0}â€ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:106
-#, fuzzy
msgid "Directory '{0}' could not be moved."
-msgstr "无法删除目录“{0}â€ã€‚"
+msgstr "目录“{0}â€æ— æ³•ç§»åŠ¨ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:108
-#, fuzzy
msgid "File '{0}' could not be moved."
-msgstr "无法装入文件“{0}â€ã€‚"
+msgstr "文件“{0}â€æ— æ³•ç§»åŠ¨ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:108
-#, fuzzy
msgid "File '{0}' could not be copied."
-msgstr "无法装入文件“{0}â€ã€‚"
+msgstr "文件“{0}â€æ— æ³•å¤åˆ¶ã€‚"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
-#, fuzzy
msgid "copy"
-msgstr "å¤åˆ¶(_C)"
+msgstr "å¤åˆ¶"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
msgid "another copy"
-msgstr ""
+msgstr "å¦ä¸€ä¸ªå‰¯æœ¬"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
msgid "3rd copy"
-msgstr ""
+msgstr "第三个副本"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
msgid "4th copy"
-msgstr ""
+msgstr "第四副本"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
msgid "5th copy"
-msgstr ""
+msgstr "第五副本"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
msgid "6th copy"
-msgstr ""
+msgstr "第六副本"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
msgid "7th copy"
-msgstr ""
+msgstr "第七副本"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
msgid "8th copy"
-msgstr ""
+msgstr "第八副本"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
msgid "9th copy"
-msgstr ""
+msgstr "第ä¹å‰¯æœ¬"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:109
-#, fuzzy
msgid "copy {0}"
-msgstr "正在打开 {0}"
+msgstr "å¤åˆ¶ {0}"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:112
-#, fuzzy
msgid ""
"The project '{0}' is currently running and will have to be stopped. Do you "
"want to continue closing it?"
-msgstr "文件“{0}â€å·²ç»å­˜åœ¨ã€‚您是å¦æƒ³è¦æ›¿æ¢å®ƒï¼Ÿ"
+msgstr "该项目“{0}â€å½“å‰æ­£åœ¨è¿è¡Œï¼Œå°†ä¸å¾—ä¸è¢«åœæ­¢ã€‚ä½ è¦ç»§ç»­å…³é—­å®ƒï¼Ÿ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:112
-#, fuzzy
msgid "Close Project"
-msgstr "控制å°å·¥ç¨‹"
+msgstr "关闭项目"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:113
msgid "Code completion database generation"
-msgstr ""
+msgstr "代ç å®Œæˆæ•°æ®åº“生æˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/CustomExecutionModeDialog.cs:3
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CodeFormattingPanel.cs:5
-#, fuzzy
msgid "(Custom)"
-msgstr "剪切(_T)"
+msgstr "(自定义)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/CustomExecutionModeDialog.cs:3
-#, fuzzy
msgid "(Custom {0})"
-msgstr "剪切(_T)"
+msgstr "(自定义{0})"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/CustomExecutionModeManagerDialog.cs:6
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ComponentSelectorDialog.cs:2
@@ -7362,19 +6707,16 @@ msgid "Name"
msgstr "å称"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/CustomExecutionModeManagerDialog.cs:6
-#, fuzzy
msgid "Execution Mode"
-msgstr "执行失败。"
+msgstr "执行模å¼"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/CustomExecutionModeManagerDialog.cs:6
-#, fuzzy
msgid "Available for"
-msgstr "å¯ç”¨çš„ç¼–ç ï¼š"
+msgstr "有效"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/CustomExecutionModeManagerDialog.cs:6
-#, fuzzy
msgid "Current solution"
-msgstr "当å‰åˆ—"
+msgstr "当å‰è§£å†³æ–¹æ¡ˆ"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/CustomExecutionModeManagerDialog.cs:8
#, fuzzy
@@ -7410,7 +6752,7 @@ msgstr "目录"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectReferencePanel.cs:12
msgid "(Cyclic dependencies not allowed)"
-msgstr ""
+msgstr "(ä¸å…许循环ä¾èµ–)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs:17
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs:3
@@ -7418,7 +6760,6 @@ msgstr ""
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ImplicitFrameworkAssemblyReferenceDescriptor.cs:4
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ImplicitFrameworkAssemblyReferenceDescriptor.cs:5
#: ../src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs:103
-#, fuzzy
msgid "Reference"
msgstr "引用"
@@ -7428,19 +6769,16 @@ msgid "_All"
msgstr "全部(_A)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs:17
-#, fuzzy
msgid "_Packages"
-msgstr "包"
+msgstr "包(_P)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs:17
-#, fuzzy
msgid "Pro_jects"
-msgstr "工程"
+msgstr "项目(_J)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs:17
-#, fuzzy
msgid ".Net A_ssembly"
-msgstr ".NET 程åºé›†"
+msgstr ".NET 程åºé›†(_S)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs:21
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/PackageReferencePanel.cs:9
@@ -7455,23 +6793,20 @@ msgid "Package"
msgstr "包"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs:35
-#, fuzzy
msgid "Search ({0})"
-msgstr "æœç´¢"
+msgstr "æœç´¢({0})"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.BaseDirectoryPanelWidget.cs:2
-#, fuzzy
msgid "<b>Location of Files</b>"
-msgstr "<b>ä½ç½®</b>"
+msgstr "<b>文件ä½ç½®</b>"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.BaseDirectoryPanelWidget.cs:2
-#, fuzzy
msgid "Root directory:"
-msgstr "目标目录(_T)"
+msgstr "根目录:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.CodeFormattingPanelWidget.cs:2
msgid "This is a summary of all file types used in the project or solution:"
-msgstr ""
+msgstr "这是项目或解决方案中使用的所有类型的文件的摘è¦ï¼š"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.CombineBuildOptionsWidget.cs:2
msgid "<b>Output Directory</b>"
@@ -7494,9 +6829,8 @@ msgid "S_trong Name File:"
msgstr ""
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.CommonAssemblySigningPreferences.cs:2
-#, fuzzy
msgid "_Delay sign assembly"
-msgstr "程åºé›†"
+msgstr "延迟签å程åºé›†(_D)"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.CustomCommandPanelWidget.cs:2
msgid ""
@@ -7504,6 +6838,8 @@ msgid ""
"as a replacement of common project operations. It is also possible to enter "
"custom commands which will be available in the project or solution menu."
msgstr ""
+"MonoDevelop å¯ä»¥æ‰§è¡Œç”¨æˆ·æŒ‡å®šçš„命令或脚本之å‰ã€ 之åŽæˆ–作为共åŒé¡¹ç›®è¿ä½œçš„替代"
+"å“。它也是å¯ä»¥è¾“入自定义的命令,这将是的项目或解决方案的èœå•ä¸­å¯ç”¨ã€‚"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.CustomCommandWidget.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Execution.CustomExecutionModeWidget.cs:2
@@ -7598,6 +6934,8 @@ msgid ""
"Visual Studio generates a default ID for embedded resources,\n"
"instead of simply using the resource's filename."
msgstr ""
+"<b>使用 _Visual Studioæ ·å¼èµ„æºå称</b>\n"
+"Visual Studio 会生æˆä¸€ä¸ªé»˜è®¤ ID 为嵌入的资æºï¼Œè€Œä¸æ˜¯ç®€å•åœ°ä½¿ç”¨èµ„æºçš„文件å。"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.NamespaceSynchronisationPanelWidget.cs:2
msgid ""
@@ -7605,6 +6943,8 @@ msgid ""
"Visual Studio generates a default ID for embedded resources, instead of "
"simply using the resource's filename."
msgstr ""
+"<b>使用 _Visual Studioæ ·å¼èµ„æºå称</b>\n"
+"Visual Studio 会生æˆä¸€ä¸ªé»˜è®¤ ID 为嵌入的资æºï¼Œè€Œä¸æ˜¯ç®€å•åœ°ä½¿ç”¨èµ„æºçš„文件å。"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.OutputOptionsPanelWidget.cs:2
#: ../src/addins/MonoDevelop.Gettext/gtk-gui/MonoDevelop.Gettext.TranslationProjectOptionsDialog.cs:2
@@ -7996,9 +7336,8 @@ msgid ""
msgstr ""
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderFileNodeBuilder.cs:2
-#, fuzzy
msgid "_Remove from Solution"
-msgstr "从工程中删除(_R)"
+msgstr "从解决方案中删除(_R)"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderFileNodeBuilder.cs:3
#, fuzzy
@@ -8012,54 +7351,46 @@ msgid "Are you sure you want to remove the file {0} from the solution {1}?"
msgstr "您真的确定想è¦å°†æ–‡ä»¶å¤¹â€œ{0}â€ç§»åŠ¨åˆ°æ–‡ä»¶å¤¹â€œ{1}â€ä¸­å—?"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Fonts/FontChooserPanelWidget.cs:7
-#, fuzzy
msgid "Select Font"
-msgstr "全部ä¸é€‰"
+msgstr "选择字体"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Fonts/FontChooserPanelWidget.cs:8
-#, fuzzy
msgid "Set To Default"
-msgstr "设为缺çœ"
+msgstr "设为默认值"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkAlertDialog.cs:7
#: ../src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs:8
msgid "Apply to all"
-msgstr ""
+msgstr "应用到全部"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.NewPolicySetDialog.cs:2
-#, fuzzy
msgid "New Policy"
-msgstr "新建工程"
+msgstr "新建策略"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.NewPolicySetDialog.cs:2
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.ImportProjectPolicyDialog.cs:2
-#, fuzzy
msgid "Policy Name:"
-msgstr "工程å称:"
+msgstr "ç­–ç•¥å称:"
#: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.NewPolicySetDialog.cs:2
msgid "Copy Settings From:"
-msgstr ""
+msgstr "å¤åˆ¶è®¾ç½®ä»Žï¼š"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs:3
-#, fuzzy
msgid "Recent Templates"
-msgstr "代ç æ¨¡æ¿"
+msgstr "最近模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs:3
-#, fuzzy
msgid "Installed Templates"
-msgstr "模æ¿(_T)"
+msgstr "已安装模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs:3
-#, fuzzy
msgid "Online Templates"
-msgstr "代ç æ¨¡æ¿"
+msgstr "在线模æ¿"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs:3
-#, fuzzy
msgid "Search..."
-msgstr "正在ä¿å­˜..."
+msgstr "æœç´¢..."
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs:4
#: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ComponentSelectorDialog.cs:2
@@ -8068,18 +7399,16 @@ msgid "All"
msgstr "全部"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectOptionsWidget.cs:2
-#, fuzzy
msgid "<b>Project Options</b>"
-msgstr "工程选项"
+msgstr "<b>项目选项</b>"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectOptionsWidget.cs:2
msgid "N_ame:"
msgstr "å称(_A):"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectOptionsWidget.cs:2
-#, fuzzy
msgid "L_ocation:"
-msgstr "ä½ç½®ï¼š"
+msgstr "ä½ç½®(_O):"
#: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectOptionsWidget.cs:2
msgid "_Solution name:"
@@ -9328,9 +8657,8 @@ msgid "Select target directory"
msgstr "选择输出目录"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs:1
-#, fuzzy
msgid "Adding..."
-msgstr "正在添加文件..."
+msgstr "添加..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs:2
#, fuzzy
@@ -9350,9 +8678,8 @@ msgid "The files will be kept on disk."
msgstr "无法删除文件 {0}"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs:2
-#, fuzzy
msgid "Removing..."
-msgstr "正在ä¿å­˜..."
+msgstr "正在删除..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs:2
#, fuzzy
@@ -9385,38 +8712,32 @@ msgid "Solution checked out"
msgstr "解决方案已ä¿å­˜ã€‚"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs:11
-#, fuzzy
msgid "Add File"
msgstr "添加文件"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs:11
-#, fuzzy
msgid "Remove File"
-msgstr "资æºæ–‡ä»¶"
+msgstr "删除文件"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs:11
-#, fuzzy
msgid "Revert File"
-msgstr "最近文件(_F)"
+msgstr "还原文件"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs:11
-#, fuzzy
msgid "Lock File"
-msgstr " (装入失败)"
+msgstr "é”定文件"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs:11
-#, fuzzy
msgid "Unlock File"
-msgstr " (装入失败)"
+msgstr "解é”文件"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitCommand.cs:4
msgid "Committing {0}..."
-msgstr ""
+msgstr "正在æ交{0} ..."
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CommitCommand.cs:4
-#, fuzzy
msgid "Commit operation completed."
-msgstr "ä¿å­˜æ“作失败。"
+msgstr "æ交æ“作完æˆã€‚"
#: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/PublishCommand.cs:6
msgid "Initial check-in of module {0}"
@@ -16298,7 +15619,6 @@ msgstr ""
msgid "{0} match"
msgid_plural "{0} matches"
msgstr[0] "{0}分钟"
-msgstr[1] "{0}分钟"
#: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs:30
msgid "Found and replaced one occurrence"
@@ -17086,30 +16406,28 @@ msgid "Add new packages for this project in the packaging project '{0}'"
msgstr ""
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.CommandDeployEditorWidget.cs:1
-#, fuzzy
msgid "Run in external console"
-msgstr "è¿è¡ŒäºŽå¤–部控制å°(_X)"
+msgstr "在外部控制å°ä¸­è¿è¡Œ"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.CommandDeployEditorWidget.cs:1
msgid "Dispose console after running"
msgstr ""
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.DeployDialog.cs:2
-#, fuzzy
msgid "Create Package"
-msgstr "包"
+msgstr "创建包"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.DeployDialog.cs:2
msgid "<big><b>Package Type</b></big>"
-msgstr "<big><b>包ç§ç±»</b></big>"
+msgstr "<big><b>包类型</b></big>"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.DeployDialog.cs:2
msgid "Select the type of package to create:"
-msgstr "选择包的ç§ç±»ï¼š"
+msgstr "选择æ¥åˆ›å»ºçš„包类型:"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.DeployDialog.cs:2
msgid "<big><b>Select Project</b></big>"
-msgstr ""
+msgstr "<big><b>选择项目</b></big>"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.DeployDialog.cs:2
#, fuzzy
@@ -17150,34 +16468,28 @@ msgid "Packages"
msgstr "包"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.DeployDialog.cs:2
-#, fuzzy
msgid "Project name:"
-msgstr "工程文件å"
+msgstr "项目å称:"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.DeployDialog.cs:2
-#, fuzzy
msgid "Create in solution:"
-msgstr "清ç†è§£å†³æ–¹æ¡ˆ"
+msgstr "创建于解决方案:"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.DeployDialog.cs:2
-#, fuzzy
msgid "Add to existing Packaging Project"
-msgstr "添加已存在的工程(_P)"
+msgstr "添加到现有的包项目"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.DeployDialog.cs:2
-#, fuzzy
msgid "Project:"
-msgstr "工程"
+msgstr "项目:"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.InstallDialog.cs:2
-#, fuzzy
msgid "Install Project"
-msgstr "控制å°å·¥ç¨‹"
+msgstr "安装项目"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.InstallDialog.cs:2
-#, fuzzy
msgid "Directory prefix:"
-msgstr "目录:"
+msgstr "目录å‰ç¼€ï¼š"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.InstallDialog.cs:2
msgid ""
@@ -17189,23 +16501,20 @@ msgid "Select the archive file name and format:"
msgstr ""
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.SourcesZipEditorWidget.cs:1
-#, fuzzy
msgid "File format:"
-msgstr "文件掩ç ï¼š"
+msgstr "文件格å¼:"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.EditPackageDialog.cs:1
-#, fuzzy
msgid "Package Settings"
-msgstr "包"
+msgstr "包设置"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.EditPackageDialog.cs:1
msgid "Select the projects and solutions you want to include in the package:"
msgstr ""
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.EditPackageDialog.cs:1
-#, fuzzy
msgid "Projects/Solutions"
-msgstr "工程选项"
+msgstr "项目/解决方案"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.BinariesZipEditorWidget.cs:1
#, fuzzy
@@ -17213,9 +16522,8 @@ msgid "Select the archive file name and location:"
msgstr "选择目标ä½ç½®"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.BinariesZipEditorWidget.cs:1
-#, fuzzy
msgid "Target platform:"
-msgstr "目标路径"
+msgstr "目标平å°ï¼š"
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Gui/FileReplaceDialog.cs:3
msgid "<b>_Replace with source file</b>"
@@ -17231,9 +16539,8 @@ msgstr ""
# set the label properties
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.FileReplaceDialog.cs:1
-#, fuzzy
msgid "Replace existing file?"
-msgstr "在文件中替æ¢"
+msgstr "替æ¢çŽ°æœ‰æ–‡ä»¶ï¼Ÿ"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.FileReplaceDialog.cs:1
#, fuzzy
@@ -17264,9 +16571,8 @@ msgid "Apply this decision to _all files in this operation"
msgstr ""
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.FileReplaceDialog.cs:1
-#, fuzzy
msgid "_Cancel deployment"
-msgstr "部署"
+msgstr "å–消部署(_C)"
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Targets/BaseFuseFileCopyHandler.cs:3
#, fuzzy
@@ -17282,9 +16588,8 @@ msgid "Could not unmount FUSE filesystem."
msgstr ""
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.SshFuseFileCopyConfigurationEditorWidget.cs:1
-#, fuzzy
msgid "Host name:"
-msgstr "布局å称:"
+msgstr "主机å:"
#: ../src/addins/Deployment/MonoDevelop.Deployment/gtk-gui/MonoDevelop.Deployment.Gui.SshFuseFileCopyConfigurationEditorWidget.cs:1
msgid "Directory:"
@@ -17310,48 +16615,41 @@ msgid "Create Package..."
msgstr "创建新包..."
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:1
-#, fuzzy
msgid "Add Package..."
-msgstr "æ’件管ç†å™¨..."
+msgstr "添加包..."
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:1
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.AddinInfoView.cs:2
-#, fuzzy
msgid "Install..."
-msgstr "å¸è½½(_U)..."
+msgstr "安装..."
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:30
-#, fuzzy
msgid "Program files"
-msgstr "工程文件"
+msgstr "程åºæ–‡ä»¶"
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:30
-#, fuzzy
msgid "Program files root folder"
-msgstr "无法找到工程文件:"
+msgstr "程åºæ–‡ä»¶æ ¹æ–‡ä»¶å¤¹"
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:30
-#, fuzzy
msgid "Binaries"
-msgstr "行数"
+msgstr "二进制"
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:30
-#, fuzzy
msgid "Global Assembly Cache"
-msgstr "程åºé›†å称"
+msgstr "全局程åºé›†ç¼“å­˜"
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:30
msgid "Shared application data"
-msgstr ""
+msgstr "共享应用程åºæ•°æ®"
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:30
msgid "Shared application data root folder"
-msgstr ""
+msgstr "共享应用程åºæ•°æ®çš„根文件夹"
#: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:31
-#, fuzzy
msgid "Linux"
-msgstr "行"
+msgstr "Linux"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A multimedia (audio/video) application"
@@ -17379,9 +16677,8 @@ msgid "A game"
msgstr "游æˆ"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
-#, fuzzy
msgid "Graphical application"
-msgstr "AWT 应用程åº"
+msgstr "图形应用程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Network application such as a web browser"
@@ -17407,27 +16704,24 @@ msgid "Small utility application, 'Accessories'"
msgstr ""
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
-#, fuzzy
msgid "A tool to build applications"
-msgstr "åœæ­¢æ­£åœ¨è¿›è¡Œçš„构建或应用程åºæ‰§è¡Œ"
+msgstr "应用程åºç”Ÿæˆå·¥å…·"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
-#, fuzzy
msgid "A tool to debug applications"
-msgstr "调试应用程åº..."
+msgstr "应用程åºè°ƒè¯•å·¥å…·"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
-#, fuzzy
msgid "IDE application"
-msgstr "AWT 应用程åº"
+msgstr "IDE应用程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A GUI designer application"
-msgstr ""
+msgstr "GUI设计器应用程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A profiling tool"
-msgstr ""
+msgstr "分æžå·¥å…·"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Applications like cvs or subversion"
@@ -17560,19 +16854,19 @@ msgstr ""
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A chat client"
-msgstr "èŠå¤©é¡¾å®¢ç¨‹åº"
+msgstr "èŠå¤©å®¢æˆ·ç«¯"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "An IRC client"
-msgstr "IRC 顾客程åº"
+msgstr "IRC客户端"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Tools like FTP or P2P programs"
-msgstr ""
+msgstr "类似FTP或P2P的程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "HAM radio software"
-msgstr "業餘無線電程åº"
+msgstr "HAM无线电软件"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A news reader or a news ticker"
@@ -17698,13 +16992,12 @@ msgid "Software to teach arts"
msgstr ""
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
-#, fuzzy
msgid "Construction"
-msgstr "约æŸ"
+msgstr "建筑学"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Musical software"
-msgstr "音ä¹ç¨‹åº"
+msgstr "音ä¹è½¯ä»¶"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Software to learn foreign languages"
@@ -17728,15 +17021,15 @@ msgstr "生物学程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Chemistry software"
-msgstr "科学程åº"
+msgstr "化学软件"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "ComputerSience software"
-msgstr ""
+msgstr "计算机科学软件"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Data visualization software"
-msgstr ""
+msgstr "æ•°æ®åˆ†æžè½¯ä»¶"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Economy software"
@@ -17776,7 +17069,7 @@ msgstr "数学程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Numerical analysis software"
-msgstr ""
+msgstr "æ•°æ®åˆ†æžè½¯ä»¶"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Medical software"
@@ -17796,7 +17089,7 @@ msgstr "è¿åŠ¨ç¨‹åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Parallel computing software"
-msgstr ""
+msgstr "并行计算软件"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A simple amusement"
@@ -17808,7 +17101,7 @@ msgstr "备份程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A tool to manage compressed data/archives"
-msgstr ""
+msgstr "一个工具æ¥ç®¡ç†åŽ‹ç¼©çš„æ•°æ®/å½’æ¡£"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Electronics software, e.g. a circuit designer"
@@ -17823,25 +17116,24 @@ msgid "Engineering software, e.g. CAD programs"
msgstr "工程程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
-#, fuzzy
msgid "A file tool utility"
-msgstr "打开文件或解决方案"
+msgstr "文件工具实用程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A file manager"
-msgstr "档案管ç†ç¨‹åº"
+msgstr "文件管ç†å™¨"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A terminal emulator application"
-msgstr ""
+msgstr "终端模拟应用程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A file system tool"
-msgstr ""
+msgstr "文件系统工具"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Monitor application/applet that monitors some resource or activity"
-msgstr ""
+msgstr "监视应用程åºç›‘视æŸäº›èµ„æºæˆ–活动"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A security tool"
@@ -17849,7 +17141,7 @@ msgstr "ä¿å®‰ç¨‹åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Accessibility"
-msgstr ""
+msgstr "辅助的"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "A calculator"
@@ -17860,551 +17152,491 @@ msgid "A clock application/applet"
msgstr "时钟程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
-#, fuzzy
msgid "A text editor"
msgstr "文本编辑器"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
-#, fuzzy
msgid "Help or documentation"
-msgstr "Mono 文档"
+msgstr "帮助或文档"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid ""
"Important application, core to the desktop such as a file manager or a help "
"browser"
-msgstr "é‡è¦ç¨‹åºï¼Œå¦‚档案总管程åº"
+msgstr "é‡è¦çš„应用,例如一个文件管ç†å™¨æˆ–帮助æµè§ˆå™¨æ¡Œé¢çš„核心"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Application based on KDE libraries"
-msgstr ""
+msgstr "应用基于 KDE 库"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Application based on GNOME libraries"
-msgstr ""
+msgstr "应用基于 GNOME 库"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Application based on GTK+ libraries "
-msgstr ""
+msgstr "基于 GTK + 库的应用程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Application based on Qt libraries "
-msgstr ""
+msgstr "基于 Qt 库应用程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
-#, fuzzy
msgid "Application based on Motif libraries"
-msgstr "应用程åºé…置文件"
+msgstr "应用基于Motif 库"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid "Application based on Java GUI libraries, such as AWT or Swing"
-msgstr ""
+msgstr "基于 Java GUI 库,如 AWT å’Œ Swing 应用程åº"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:1
msgid ""
"Application that only works inside a terminal (text-based or command line "
"application)"
-msgstr ""
+msgstr "应用程åºåªèƒ½åœ¨ç»ˆç«¯å†…(基于文本或命令行应用程åºï¼‰"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:2
msgid "GNOME Desktop"
-msgstr ""
+msgstr "GNOMEæ¡Œé¢"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:2
msgid "KDE Desktop"
-msgstr ""
+msgstr "KDEæ¡Œé¢"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:2
msgid "ROX Desktop"
-msgstr ""
+msgstr "ROXæ¡Œé¢"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:2
msgid "XFCE Desktop"
-msgstr ""
+msgstr "XFCEæ¡Œé¢"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DesktopInfo.xml:2
msgid "Legacy menu systems"
-msgstr ""
+msgstr "传统的èœå•ç³»ç»Ÿ"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux.addin.xml:4
-#, fuzzy
msgid "Linux Deployment Settings"
-msgstr "部署目标"
+msgstr "Linux的部署设置"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux.addin.xml:6
msgid "pkg-config folder"
-msgstr ""
+msgstr "pkg-config 文件夹"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux.addin.xml:6
msgid ".desktop application folder"
-msgstr ""
+msgstr ".desktop 应用程åºæ–‡ä»¶å¤¹"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/app.desktop.xft.xml:0
msgid "Desktop Application Launcher"
-msgstr ""
+msgstr "æ¡Œé¢åº”用程åºå¯åŠ¨å™¨"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/app.desktop.xft.xml:0
-#, fuzzy
msgid "Creates a Desktop Entry file."
-msgstr "创建一个空的 C# 文件。"
+msgstr "创建桌é¢é¡¹æ–‡ä»¶ã€‚"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/BasicOptionPanelWidget.cs:2
msgid "Script name not provided"
-msgstr ""
+msgstr "未æ供脚本å"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DotDesktopViewWidget.cs:3
-#, fuzzy
msgid "Mime Type"
-msgstr "类型"
+msgstr "Mime类型"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DotDesktopViewWidget.cs:3
-#, fuzzy
msgid "<Default>"
-msgstr "(缺çœ)"
+msgstr "(默认)"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DotDesktopDisplayBinding.cs:3
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DotDesktopView.cs:2
-#, fuzzy
msgid "Desktop Entry"
-msgstr "创建一个空的 C# 文件。"
+msgstr "æ¡Œé¢é¡¹"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/MenuCategorySelectorDialog.cs:2
-#, fuzzy
msgid "Additional categories"
-msgstr "NUnit 类目"
+msgstr "其他类别"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/LinuxDeployExtension.cs:2
msgid "Launch script for {0}"
-msgstr ""
+msgstr "针对{0}å¯åŠ¨è„šæœ¬"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/LinuxDeployExtension.cs:2
msgid "pkg-config file for {0}"
-msgstr ""
+msgstr " {0}的pkg-config 文件"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.BasicOptionPanelWidget.cs:1
-#, fuzzy
msgid "Generate launch script"
-msgstr "生æˆè­¦å‘Š"
+msgstr "生æˆå¯åŠ¨è„šæœ¬"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.BasicOptionPanelWidget.cs:1
msgid "Script name:"
-msgstr ""
+msgstr "脚本å称:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.BasicOptionPanelWidget.cs:1
msgid "Generate .desktop file"
-msgstr ""
+msgstr "生æˆ.desktop 文件"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.BasicOptionPanelWidget.cs:1
msgid "Generate .pc file for the library"
-msgstr ""
+msgstr "为此库生æˆ.pc 文件"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Desktop Entry Type:"
-msgstr ""
+msgstr "æ¡Œé¢é¡¹ç±»åž‹ï¼š"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
-#, fuzzy
msgid "Link"
-msgstr "行"
+msgstr "链接"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Show strings for locale:"
-msgstr ""
+msgstr "为本地化显示字符串:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
-#, fuzzy
msgid "New locale..."
-msgstr "新建文件..."
+msgstr "新建本地化..."
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
-#, fuzzy
msgid "Icon:"
-msgstr "缩éš"
+msgstr "图标:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
-#, fuzzy
msgid "Generic name:"
-msgstr "æ–°å称:"
+msgstr "通用å:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
-#, fuzzy
msgid "Run in terminal"
-msgstr "用终端打开"
+msgstr "在终端中è¿è¡Œ"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Test exe:"
-msgstr ""
+msgstr "测试exe:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
-#, fuzzy
msgid "Working path:"
-msgstr "工作目录(_W):"
+msgstr "工作路径:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
-#, fuzzy
msgid "Header"
-msgstr "æ’入头"
+msgstr "头部"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
-#, fuzzy
msgid "Show in desktop menu"
-msgstr "显示测试时间"
+msgstr "显示在桌é¢èœå•"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
-#, fuzzy
msgid "Menu categories:"
-msgstr "类别:"
+msgstr "èœå•åˆ†ç±»ï¼š"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Select the environments that should display this desktop entry:"
-msgstr ""
+msgstr "选择è¦æ˜¾ç¤ºè¯¥æ¡Œé¢é¡¹çš„环境:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Always show"
-msgstr ""
+msgstr "始终å¯è§"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Only show in the following environments:"
-msgstr ""
+msgstr "仅显示在以下环境:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Not show in the following environments:"
-msgstr ""
+msgstr "ä¸æ˜¾ç¤ºåœ¨ä»¥ä¸‹çŽ¯å¢ƒ:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Menu entry"
-msgstr ""
+msgstr "èœå•é¡¹"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "MIME types supported by this application:"
-msgstr ""
+msgstr "此应用程åºæ‰€æ”¯æŒçš„ MIME 类型:"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Mime types"
-msgstr ""
+msgstr "Mime 类型"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.DotDesktopViewWidget.cs:1
msgid "Other entries"
-msgstr ""
+msgstr "其他æ¡ç›®"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.MenuCategorySelectorDialog.cs:1
-#, fuzzy
msgid "Menu Category Selection"
-msgstr "剪切选中内容"
+msgstr "èœå•é€‰æ‹©ç±»åˆ«"
#: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/gtk-gui/MonoDevelop.Deployment.Linux.MenuCategorySelectorDialog.cs:1
-#, fuzzy
msgid "Select the categories you want to assign to the desktop entry:"
-msgstr "选择您想è¦æ³¨å†Œå®‰è£…æºçš„ä½ç½®ï¼š"
+msgstr "选择您想è¦æŒ‡å®šæ¡Œé¢é¡¹çš„类别:"
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:48
-#, fuzzy
msgid "Xml Editor"
-msgstr "编辑"
+msgstr "Xml 编辑器"
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:50
-#, fuzzy
msgid "Create _Schema"
-msgstr "创建新文件夹"
+msgstr "创建布局(_S)"
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:53
-#, fuzzy
msgid "_Validate"
-msgstr "有效性"
+msgstr "验è¯(_V)"
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:56
msgid "_Assign XSLT..."
-msgstr ""
+msgstr "指定XSLT(_A)..."
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:59
msgid "_Open XSLT"
-msgstr ""
+msgstr "打开XSLT(_O)"
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:62
msgid "Run XSL_T"
-msgstr ""
+msgstr "è¿è¡ŒXSLT(_T)"
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:66
-#, fuzzy
msgid "_Go to Schema Definition"
-msgstr "转到定义"
+msgstr "转到布局定义(_G)"
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:73
msgid "_XML"
-msgstr ""
+msgstr "_XML"
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:88
msgid "XML Schemas"
-msgstr ""
+msgstr "XML 架构"
#: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:105
-#, fuzzy
msgid "XML Format"
-msgstr "文件掩ç ï¼š"
+msgstr "XML æ ¼å¼"
#: ../src/addins/Xml/Completion/XmlMultipleClosingTagCompletionData.cs:3
msgid "Closing tag for '{0}', also closing all intermediate tags"
-msgstr ""
+msgstr "结æŸæ ‡è®°ä¸º\"{0}\",也结æŸæ‰€æœ‰ä¸­é—´æ ‡è®°"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
-#, fuzzy
msgid "Omit XML declaration"
-msgstr "转到定义"
+msgstr "忽略 XML声明"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
-#, fuzzy
msgid "New line chars"
-msgstr "查看列表"
+msgstr "新行字符"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
-#, fuzzy
msgid "Indent content"
-msgstr "缩进选中内容(_I)"
+msgstr "缩进内容"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
-#, fuzzy
msgid "Indent string"
-msgstr "<b>代ç ç”Ÿæˆ</b>"
+msgstr "缩进字符串"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
-#, fuzzy
msgid "Attributes in new line"
-msgstr "å‘上一行"
+msgstr "在新行中的属性"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
msgid "Max attributes per line"
-msgstr ""
+msgstr "æ¯è¡Œçš„最大属性"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
msgid "Attributes indent string"
-msgstr ""
+msgstr "缩进字符串属性"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
msgid "Wrap attributes"
-msgstr ""
+msgstr "标签属性"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
msgid "Align attributes"
-msgstr ""
+msgstr "对é½å±žæ€§"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
msgid "Align attribute values"
-msgstr ""
+msgstr "对é½å±žæ€§å€¼"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
-#, fuzzy
msgid "Quote char"
-msgstr "结果图"
+msgstr "引用字符"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
msgid "Spaces before assignment"
-msgstr ""
+msgstr "分é…å‰çš„空格"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
msgid "Spaces after assignment"
-msgstr ""
+msgstr "分é…åŽçš„空格"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
msgid "Empty lines before start"
-msgstr ""
+msgstr "开始之å‰çš„空行"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
msgid "Empty lines after start"
-msgstr ""
+msgstr "开始之åŽçš„空行"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
-#, fuzzy
msgid "Empty lines before end"
-msgstr "空资æºæ–‡ä»¶"
+msgstr "结æŸä¹‹å‰çš„空行"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
-#, fuzzy
msgid "Empty lines after end"
-msgstr "空æœç´¢æ¨¡å¼"
+msgstr "结æŸä¹‹åŽçš„空行"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2
-#, fuzzy
msgid "Document"
msgstr "文档"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicyPanelWidget.cs:7
msgid "Enter one or several xpath expressions to which this format applies:"
-msgstr ""
+msgstr "请输入一个或几个 xpath 表达å¼ï¼Œè¿™ç§æ ¼å¼é€‚用于:"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicyPanelWidget.cs:10
-#, fuzzy
msgid "Advanced Settings"
-msgstr "设置"
+msgstr "高级设置"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicyPanelWidget.cs:20
-#, fuzzy
msgid "Format #{0}"
-msgstr "错误:{0}"
+msgstr "æ ¼å¼ #{0}"
#: ../src/addins/Xml/Formatting/XmlFormattingPolicyPanelWidget.cs:20
-#, fuzzy
msgid "XPath scope:"
-msgstr "查询"
+msgstr "XPath 的范围:"
#: ../src/addins/Xml/Editor/XmlTextEditorExtension.cs:185
-#, fuzzy
msgid "Creating schema..."
-msgstr "正在生æˆç¨‹åºé›†"
+msgstr "创建架构..."
#: ../src/addins/Xml/Editor/XmlTextEditorExtension.cs:186
-#, fuzzy
msgid "Schema created."
-msgstr "æœç´¢å·²å–消。"
+msgstr "架构已创建 。 "
#: ../src/addins/Xml/Editor/XmlTextEditorExtension.cs:186
msgid "Error creating XML schema."
-msgstr ""
+msgstr "创建 XML 架构时出现错误。"
#: ../src/addins/Xml/Editor/XmlTextEditorExtension.cs:205
-#, fuzzy
msgid "Error reading file '{0}'."
-msgstr "ä»Žèµ„æº {0} 中装入模æ¿å‡ºé”™"
+msgstr "读å–文件 '{0}'出错."
#: ../src/addins/Xml/Editor/XmlTextEditorExtension.cs:205
msgid "Executing transform..."
-msgstr ""
+msgstr "正在执行转æ¢..."
#: ../src/addins/Xml/Editor/XmlTextEditorExtension.cs:205
-#, fuzzy
msgid "Transform completed."
-msgstr "æœç´¢å·²å–消。"
+msgstr "转æ¢å®Œæˆã€‚"
#: ../src/addins/Xml/Editor/XmlTextEditorExtension.cs:205
-#, fuzzy
msgid "Could not run transform."
-msgstr "无法从安装æºä¸­èŽ·å¾—ä¿¡æ¯"
+msgstr "ä¸èƒ½è¿è¡Œè½¬æ¢ã€‚"
#: ../src/addins/Xml/Editor/BaseXmlEditorExtension.cs:73
-#, fuzzy
msgid "Closing tag for '{0}'"
-msgstr "正在 {1} 中查找“{0}â€ã€‚"
+msgstr "结æŸæ ‡è®°\"{0}\""
#: ../src/addins/Xml/Editor/BaseXmlEditorExtension.cs:73
-#, fuzzy
msgid "Character data"
-msgstr "创建新数æ®åº“"
+msgstr "字符数æ®"
#: ../src/addins/Xml/Editor/BaseXmlEditorExtension.cs:76
-#, fuzzy
msgid "Select"
-msgstr "选择(_S)"
+msgstr "选择"
#: ../src/addins/Xml/Editor/BaseXmlEditorExtension.cs:76
-#, fuzzy
msgid "Select contents"
-msgstr "全部ä¸é€‰"
+msgstr "选择内容"
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
msgid "Validating XML..."
-msgstr ""
+msgstr "æ­£åœ¨éªŒè¯ XML..."
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
-#, fuzzy
msgid "Validation failed."
-msgstr "安装失败"
+msgstr "验è¯å¤±è´¥ã€‚"
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
msgid "XML is valid."
-msgstr ""
+msgstr "XML 是有效的。"
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
msgid "Validating schema..."
-msgstr ""
+msgstr "正在验è¯æž¶æž„..."
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
-#, fuzzy
msgid "Schema is valid."
-msgstr "æœç´¢æ¨¡å¼æ— æ•ˆ"
+msgstr "架构是有效的。"
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
msgid "Validating stylesheet..."
-msgstr ""
+msgstr "正在验è¯æ ·å¼è¡¨..."
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
msgid "Stylesheet is valid."
-msgstr ""
+msgstr "æ ·å¼è¡¨æ˜¯æœ‰æ•ˆçš„。"
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
msgid "Select XSLT Stylesheet"
-msgstr ""
+msgstr "选择 XSLT æ ·å¼è¡¨"
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
-#, fuzzy
msgid "XSL Files"
-msgstr "全部文件"
+msgstr "XSL 文件"
#: ../src/addins/Xml/Editor/XmlEditorService.cs:8
-#, fuzzy
msgid "Select XML Schema"
-msgstr "选择图åƒ"
+msgstr "选择 XML 架构"
#: ../src/addins/Xml/Editor/XmlEditorOptionsPanelWidget.cs:4
-#, fuzzy
msgid "Automatically insert closing tags"
-msgstr "自动包å«æ‰¾åˆ°çš„文件(_I)"
+msgstr "自动æ’入结æŸæ ‡è®°"
#: ../src/addins/Xml/Editor/XmlEditorOptionsPanelWidget.cs:4
msgid "Automatically insert punctuation (=\"\", />, etc.)"
-msgstr ""
+msgstr "自动æ’å…¥æ ‡ç‚¹ç¬¦å· (=\"\",/ >,等等.)"
#: ../src/addins/Xml/Editor/XmlEditorOptionsPanelWidget.cs:4
msgid "Show schema annotation"
-msgstr ""
+msgstr "显示架构批注"
#: ../src/addins/Xml/Editor/XmlSchemasPanel.cs:49
-#, fuzzy
msgid "Schema changes could not be saved"
-msgstr "工程无法创建"
+msgstr "架构更改无法ä¿å­˜"
#: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:4
-#, fuzzy
msgid "Built in"
-msgstr "构建:"
+msgstr "内置"
#: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:4
-#, fuzzy
msgid "User schema"
-msgstr "用户"
+msgstr "用户架构"
#: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:4
-#, fuzzy
msgid "File Extension"
-msgstr "扩展å"
+msgstr "文件扩展å"
#: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:4
-#, fuzzy
msgid "Prefix"
-msgstr "预览"
+msgstr "å‰ç¼€"
#: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:9
-#, fuzzy
msgid "<b>Registered Schema</b>"
-msgstr "<b>ä¿å­˜</b>"
+msgstr "<b>已注册布局</b>"
#: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:11
-#, fuzzy
msgid "<b>Default File Associations</b>"
-msgstr "<b>常规选项</b>"
+msgstr "<b>默认文件关è”</b>"
#: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:19
-#, fuzzy
msgid "Schema '{0}' could not be loaded."
-msgstr "无法装入文件“{0}â€ã€‚"
+msgstr "无法加载架构\"{0}\"。"
#: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:21
msgid "Schema '{0}' has no target namespace."
-msgstr ""
+msgstr "架构\"{0}\"具有没有目标命å空间。"
#: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:24
msgid ""
"A schema is already registered with the namespace '{0}'. Would you like to "
"replace it?"
-msgstr ""
+msgstr "架构是已注册的命å空间\"{0}\"。你想è¦æ›¿æ¢å®ƒ?"
#: ../src/addins/NUnit/templates/NUnitAssemblyGroup.xpt.xml:0
msgid "NUnit assembly test collection"
@@ -18414,21 +17646,19 @@ msgstr "NUnit 测试程åºé›†"
#: ../src/addins/NUnit/templates/NUnitTestClass.xft.xml:0
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
msgid "NUnit"
-msgstr ""
+msgstr "NUnit"
#: ../src/addins/NUnit/templates/NUnitAssemblyGroup.xpt.xml:0
msgid "Create an NUnit assembly test collection"
msgstr "创建一个 NUnit 测试程åºé›†"
#: ../src/addins/NUnit/templates/NUnitTestClass.xft.xml:0
-#, fuzzy
msgid "Test Fixture"
-msgstr "文本编辑器"
+msgstr "Test Fixture"
#: ../src/addins/NUnit/templates/NUnitTestClass.xft.xml:0
-#, fuzzy
msgid "Creates a Test Fixture."
-msgstr "创建一个空接å£ã€‚"
+msgstr "创建一个Test Fixture。"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:11
msgid "Unit Tests"
@@ -18443,33 +17673,29 @@ msgid "Show Test Counters"
msgstr "显示测试计数"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:11
-#, fuzzy
msgid "Test Results"
msgstr "测试结果"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:12
-#, fuzzy
msgid "Unit Testing"
msgstr "å•å…ƒæµ‹è¯•"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
-#, fuzzy
msgid "Run Unit Tests"
-msgstr "å•å…ƒæµ‹è¯•"
+msgstr "è¿è¡Œå•å…ƒæµ‹è¯•"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
msgid "Runs all tests of the current selected project."
-msgstr ""
+msgstr "è¿è¡Œå½“å‰é€‰å®šé¡¹ç›®çš„所有测试。"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
msgid "Runs tests using a special execution mode."
-msgstr ""
+msgstr "è¿è¡Œæµ‹è¯•ä½¿ç”¨ä¸€ç§ç‰¹æ®Šçš„执行模å¼ã€‚"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
#: ../src/addins/NUnit/Gui/TestPad.cs:11
-#, fuzzy
msgid "Debug Test"
-msgstr "调试"
+msgstr "调试测试"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
msgid "Run Test"
@@ -18480,9 +17706,8 @@ msgid "Show test source code"
msgstr "显示测试æºä»£ç "
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
-#, fuzzy
msgid "Go to failure"
-msgstr "转到行"
+msgstr "转到失败"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
msgid "Select test in tree"
@@ -18493,9 +17718,8 @@ msgid "Show results pad"
msgstr "显示结果é¢æ¿"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
-#, fuzzy
msgid "Rerun test"
-msgstr "è¿è¡Œæµ‹è¯•"
+msgstr "é‡æ–°è¿è¡Œæµ‹è¯•"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
msgid "Proportional time scale"
@@ -18526,40 +17750,34 @@ msgid "Show ignored tests"
msgstr "显示忽略测试"
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14
-#, fuzzy
msgid "Add assembly..."
msgstr "添加程åºé›†..."
#: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:19
-#, fuzzy
msgid "Run Test With"
-msgstr "使用其他程åºæ‰“å¼€"
+msgstr "è¿è¡Œæµ‹è¯•æ–¹å¼"
#: ../src/addins/NUnit/templates/NUnitProject.xpt.xml:0
#: ../src/addins/NUnit/templates/NUnitProjectVBNet.xpt.xml:0
-#, fuzzy
msgid "NUnit Library Project"
-msgstr "整个工程"
+msgstr "NUnit 类库项目"
#: ../src/addins/NUnit/templates/NUnitProject.xpt.xml:0
#: ../src/addins/NUnit/templates/NUnitProjectVBNet.xpt.xml:0
-#, fuzzy
msgid "Creates an NUnit library"
-msgstr "创建一个空 C# 类库"
+msgstr "创建 NUnit库"
#: ../src/addins/NUnit/Gui/TestPad.cs:5
-#, fuzzy
msgid "Run All"
-msgstr "é‡æ–°æž„建"
+msgstr "è¿è¡Œæ‰€æœ‰"
#: ../src/addins/NUnit/Gui/TestPad.cs:5
-#, fuzzy
msgid "Run all tests"
-msgstr "è¿è¡Œæµ‹è¯•"
+msgstr "è¿è¡Œæ‰€æœ‰æµ‹è¯•"
#: ../src/addins/NUnit/Gui/TestPad.cs:5
msgid "Cancel running test"
-msgstr ""
+msgstr "å–消正在è¿è¡Œçš„测试"
#: ../src/addins/NUnit/Gui/TestPad.cs:6
msgid "Regressions"
@@ -18574,9 +17792,8 @@ msgid "Result"
msgstr "结果"
#: ../src/addins/NUnit/Gui/TestPad.cs:10
-#, fuzzy
msgid "Debug Test ({0})"
-msgstr "空枚举"
+msgstr "调试测试 ({0})"
#: ../src/addins/NUnit/Gui/TestPad.cs:20
msgid "No regressions found."
@@ -18595,14 +17812,12 @@ msgid "Show Successful Tests"
msgstr "显示æˆåŠŸæµ‹è¯•"
#: ../src/addins/NUnit/Gui/TestResultsPad.cs:6
-#, fuzzy
msgid "Inconclusive Tests"
-msgstr "被忽略测试"
+msgstr "无结论的测试"
#: ../src/addins/NUnit/Gui/TestResultsPad.cs:6
-#, fuzzy
msgid "Show Inconclusive Tests"
-msgstr "显示被忽略的测试"
+msgstr "显示无结论的测试"
#: ../src/addins/NUnit/Gui/TestResultsPad.cs:6
msgid "Failed Tests"
@@ -18625,9 +17840,8 @@ msgid "Show Output"
msgstr "显示输出"
#: ../src/addins/NUnit/Gui/TestResultsPad.cs:7
-#, fuzzy
msgid "Rerun Tests"
-msgstr "è¿è¡Œæµ‹è¯•"
+msgstr "é‡æ–°è¿è¡Œæµ‹è¯•"
#: ../src/addins/NUnit/Gui/TestResultsPad.cs:14
msgid ""
@@ -18642,9 +17856,8 @@ msgstr "è¿è¡Œ <b>{0}</b> 的测试,使用é…ç½® <b>{1}</b>"
#: ../src/addins/NUnit/Gui/TestResultsPad.cs:16
#: ../src/addins/NUnit/Gui/TestResultsPad.cs:21
-#, fuzzy
msgid "Test results for <b>{0}</b> configuration <b>{1}</b>"
-msgstr "è¿è¡Œ <b>{0}</b> 的测试,使用é…ç½® <b>{1}</b>"
+msgstr "测试结果为<b>{0}</b>é…ç½®<b>{1} çš„</b>"
#: ../src/addins/NUnit/Gui/TestResultsPad.cs:18
msgid "Internal error"
@@ -18672,54 +17885,47 @@ msgid " (Load failed)"
msgstr " (装入失败)"
#: ../src/addins/NUnit/Gui/TestNodeBuilder.cs:4
-#, fuzzy
msgid " ({0} passed, {1} failed, {2} not run)"
-msgstr " ({0} 个æˆåŠŸï¼Œ{1} 个失败,{2} 个忽略)"
+msgstr "({0} 通过,{1} 失败,{2} 未è¿è¡Œ)"
#: ../src/addins/NUnit/Services/NUnitService.cs:9
msgid "Test results"
msgstr "测试结果"
#: ../src/addins/NUnit/Services/ExternalTestRunner.cs:10
-#, fuzzy
msgid "Test failed"
-msgstr "ä¿å­˜å¤±è´¥ã€‚"
+msgstr "测试失败"
#: ../src/addins/NUnit/Services/ExternalTestRunner.cs:10
-#, fuzzy
msgid "Test ignored"
-msgstr "文本编辑器"
+msgstr "被忽略的测试"
#: ../src/addins/NUnit/Services/ExternalTestRunner.cs:10
-#, fuzzy
msgid "Test successful"
-msgstr "构建æˆåŠŸã€‚"
+msgstr "测试æˆåŠŸ"
#: ../src/addins/NUnit/Services/ExternalTestRunner.cs:10
-#, fuzzy
msgid "Execution time: {0:0.00}ms"
-msgstr "正在执行:{0}"
+msgstr "执行时间: {0:0.00}ms"
#: ../src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs:35
msgid ""
"Could not get a valid path to the assembly. There may be a conflict in the "
"project configurations."
-msgstr ""
+msgstr "无法å‘大会获得一个有效的路径。在项目é…置中å¯èƒ½æœ‰å†²çªã€‚"
#: ../src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs:38
#: ../src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs:40
-#, fuzzy
msgid "Unhandled exception"
-msgstr "å–消选中内容的缩进(_U)"
+msgstr "未处ç†çš„异常"
#: ../src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs:38
-#, fuzzy
msgid "Canceled"
-msgstr "构建失败。"
+msgstr "å·²å–消"
#: ../src/addins/MacPlatform/MacPlatform.cs:19
msgid "Some dependencies need to be updated"
-msgstr ""
+msgstr "一些ä¾èµ–关系需è¦æ›´æ–°"
#: ../src/addins/MacPlatform/MacPlatform.cs:19
msgid ""
@@ -18727,125 +17933,110 @@ msgid ""
"Framework. Please download and install the latest stable Mono Framework "
"package and restart {0}."
msgstr ""
+"{0} 需è¦æ›´æ–°ç‰ˆæœ¬çš„ GTK + 中,包括在å•æ¡†æž¶ã€‚请下载并安装最新的稳定å•æ¡†æž¶åŒ…并é‡"
+"æ–°å¯åŠ¨ {0}。"
#: ../src/addins/MacPlatform/MacPlatform.cs:41
-#, fuzzy
msgid "Preferences..."
-msgstr "选项"
+msgstr "å好设置"
#: ../src/addins/MacPlatform/MacPlatform.cs:41
-#, fuzzy
-msgid "Policies..."
-msgstr "编译器:"
+msgid "Custom Policies..."
+msgstr "自定义策略..."
#: ../src/addins/MacPlatform/MacPlatform.cs:41
-#, fuzzy
msgid "Hide {0}"
-msgstr "构建 {0}"
+msgstr "éšè— {0}"
#: ../src/addins/MacPlatform/MacPlatform.cs:41
msgid "Add-in Manager..."
msgstr "æ’件管ç†å™¨..."
#: ../src/addins/MacPlatform/Dialogs/MacAddFileDialogHandler.cs:3
-#, fuzzy
msgid "Override build action:"
-msgstr "构建解决方案(_D)"
+msgstr "é‡å†™ç”Ÿæˆæ“作:"
#: ../src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs:6
-#, fuzzy
msgid "Show files:"
-msgstr "新文件:"
+msgstr "显示文件:"
#: ../src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs:7
-#, fuzzy
msgid "Encoding:"
-msgstr "ç¼–ç "
+msgstr "ç¼–ç ï¼š"
#: ../src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs:8
-#, fuzzy
msgid "Open with:"
-msgstr "使用其他程åºæ‰“å¼€"
+msgstr "打开方å¼ï¼š"
#: ../src/addins/MacPlatform/Dialogs/SelectEncodingPanel.cs:4
#: ../src/addins/MacPlatform/MacProxyCredentialProvider.cs:16
msgid "OK"
-msgstr ""
+msgstr "确定"
#: ../src/addins/MacPlatform/Dialogs/SelectEncodingPanel.cs:4
#: ../src/addins/MacPlatform/MacProxyCredentialProvider.cs:16
-#, fuzzy
msgid "Cancel"
-msgstr "构建失败。"
+msgstr "å–消"
#: ../src/addins/MacPlatform/Dialogs/SelectEncodingPopUpButton.cs:3
#: ../src/addins/WindowsPlatform/WindowsPlatform/Dialogs/OpenFileDialogHandler.cs:204
-#, fuzzy
msgid "Add or Remove..."
-msgstr "添加é…ç½®..."
+msgstr "增加或移除"
#: ../src/addins/MacPlatform/Dialogs/MacExceptionDialogHandler.cs:10
-#, fuzzy
msgid "View details"
-msgstr "查看:"
+msgstr "查看详情"
#: ../src/addins/MacPlatform/Dialogs/MacExceptionDialogHandler.cs:10
-#, fuzzy
msgid "Hide details"
-msgstr "细节"
+msgstr "éšè—详情"
#: ../src/addins/MacPlatform/MacProxyCredentialProvider.cs:15
#: ../src/addins/WindowsPlatform/WindowsPlatform/WindowsProxyCredentialProvider.cs:116
msgid "{0} needs credentials to access the proxy server {1}."
-msgstr ""
+msgstr "{0} 需è¦å‡­æ®è®¿é—®ä»£ç†æœåŠ¡å™¨ {1}。"
#: ../src/addins/MacPlatform/MacProxyCredentialProvider.cs:15
#: ../src/addins/WindowsPlatform/WindowsPlatform/WindowsProxyCredentialProvider.cs:121
msgid "{0} needs credentials to access {1}."
-msgstr ""
+msgstr "{0} 需è¦å‡­æ®ä»¥è®¿é—® {1}。"
#: ../src/addins/MacPlatform/MacProxyCredentialProvider.cs:16
#: ../src/addins/WindowsPlatform/WindowsPlatform/WindowsProxyCredentialProvider.cs:129
-#, fuzzy
msgid "Credentials Required"
-msgstr "清除最近打开的文件"
+msgstr "所需的凭æ®"
#: ../src/addins/MacPlatform/MacPlatform.addin.xml:1
msgid "_Minimize"
-msgstr ""
+msgstr "最å°åŒ–(_M)"
#: ../src/addins/MacPlatform/MacPlatform.addin.xml:1
msgid "Minimize the window"
-msgstr ""
+msgstr "最å°åŒ–窗å£"
#: ../src/addins/MacPlatform/MacPlatform.addin.xml:1
-#, fuzzy
msgid "_Hide Application"
-msgstr "AWT 应用程åº"
+msgstr "éšè—应用程åº(_H)"
#: ../src/addins/MacPlatform/MacPlatform.addin.xml:1
-#, fuzzy
msgid "Hide Application"
-msgstr "AWT 应用程åº"
+msgstr "éšè—应用程åº"
#: ../src/addins/MacPlatform/MacPlatform.addin.xml:1
msgid "_Hide Others"
-msgstr ""
+msgstr "éšè—其他(_H)"
#: ../src/addins/MacPlatform/MacPlatform.addin.xml:1
-#, fuzzy
msgid "Hide other applications' windows"
-msgstr "窗å£(_W)"
+msgstr "éšè—其他应用程åºçš„窗å£"
#: ../src/addins/MacPlatform/MacPlatform.addin.xml:1
-#, fuzzy
msgid "Show All"
-msgstr "显示全部文件"
+msgstr "显示所有"
#: ../src/addins/MacPlatform/MacPlatform.addin.xml:1
-#, fuzzy
msgid "Show all applications' windows"
-msgstr "解决方案选项"
+msgstr "显示所有应用程åºçª—å£"
#: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/Gui/AnalysisOptionsPanel.cs:3
msgid "Enable source analysis of open files"
@@ -20907,70 +20098,60 @@ msgid "Missing ':' for line declaration"
msgstr "é‡å‘½åé…ç½®"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:60
-#, fuzzy
msgid "Line is not a number"
-msgstr "è¡Œå·(_L):"
+msgstr "è¡Œä¸æ˜¯æ•°å­—"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:61
msgid "Column is not a number"
-msgstr ""
+msgstr "列ä¸æ˜¯æ•°å­—"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:87
msgid "Trace expression not specified"
-msgstr ""
+msgstr "跟踪表达是未指定"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:89
-#, fuzzy
msgid "Function name not specified"
-msgstr "指定了无效的程åºé›†å称"
+msgstr "没有指定函数å"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:90
-#, fuzzy
msgid "Invalid function syntax"
-msgstr "无效的文件å"
+msgstr "无效的函数语法"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:90
-#, fuzzy
msgid "Exception not identified"
-msgstr "指定了无效的程åºé›†å称"
+msgstr "异常未确定"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:102
-#, fuzzy
msgid "Breakpoint Action"
-msgstr "断点"
+msgstr "断电æ“作"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:109
msgid "When to Take Action"
-msgstr ""
+msgstr "当进行æ“作时"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:120
-#, fuzzy
msgid "Advanced Conditions"
-msgstr "设置"
+msgstr "高级æ¡ä»¶"
#: ../src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebugApplicationDialog.cs:2
-#, fuzzy
msgid "Debug Application"
-msgstr "调试应用程åº..."
+msgstr "调试应用程åº"
#: ../src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebugApplicationDialog.cs:2
-#, fuzzy
msgid "Working Directory"
-msgstr "工作目录:"
+msgstr "工作目录"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:5
-#, fuzzy
msgid "Debug Windows"
-msgstr "窗å£(_W)"
+msgstr "调试窗å£"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:5
-#, fuzzy
msgid "Watch"
-msgstr "路径"
+msgstr "监视"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:5
msgid "Locals"
-msgstr ""
+msgstr "局部"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:5
msgid "Breakpoints"
@@ -20978,34 +20159,31 @@ msgstr "断点"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:5
msgid "Threads"
-msgstr ""
+msgstr "线程"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:5
msgid "Call Stack"
-msgstr "回调"
+msgstr "调用栈"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:5
msgid "Immediate"
-msgstr ""
+msgstr "å³æ—¶"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:9
msgid "Start debugging"
-msgstr ""
+msgstr "开始调试"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:9
-#, fuzzy
msgid "Start _Debugging"
-msgstr "调试"
+msgstr "开始调试(_D)"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:9
-#, fuzzy
msgid "Debug current project"
-msgstr "清除最近打开的工程"
+msgstr "调试当å‰é¡¹ç›®"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:9
-#, fuzzy
msgid "Start D_ebugging Item"
-msgstr "调试"
+msgstr "开始调试项(_E)"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Debug Application..."
@@ -21013,26 +20191,23 @@ msgstr "调试应用程åº..."
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Attach to Process..."
-msgstr ""
+msgstr "附加到进程..."
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Pause"
msgstr "æš‚åœ"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Pause Execution"
-msgstr "执行"
+msgstr "æš‚åœæ‰§è¡Œ"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Continue"
-msgstr "约æŸ"
+msgstr "继续"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Continue Execution"
-msgstr "执行"
+msgstr "继续执行"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Step Over"
@@ -21047,205 +20222,172 @@ msgid "Step Out"
msgstr "跳出"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "New Breakpoint"
-msgstr "切æ¢æ–­ç‚¹"
+msgstr "新建断点"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "New Function Breakpoint"
-msgstr "切æ¢æ–­ç‚¹"
+msgstr "新建函数断点"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "New Exception Catchpoint"
-msgstr "选项"
+msgstr "新建异常æ•èŽ·ç‚¹"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "View Breakpoints"
-msgstr "断点"
+msgstr "查看断点"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Remove Breakpoint"
-msgstr "切æ¢æ–­ç‚¹"
+msgstr "删除断点"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Breakpoint Properties"
-msgstr "构建属性"
+msgstr "断点属性"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Toggle Breakpoint"
msgstr "切æ¢æ–­ç‚¹"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Enable/Disable Breakpoint"
-msgstr "清除全部断点"
+msgstr "å¯ç”¨/ç¦ç”¨æ–­ç‚¹"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Enable or Disable All Breakpoints"
-msgstr "清除全部断点"
+msgstr "å¯ç”¨æˆ–ç¦ç”¨æ‰€æœ‰æ–­ç‚¹"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Clear All Breakpoints"
-msgstr "清除全部断点"
+msgstr "清除所有断点"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Show Disassembly"
-msgstr ""
+msgstr "显示å汇编"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Show Current Execution Line"
-msgstr ""
+msgstr "显示当å‰æ‰§è¡Œè¡Œ"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Add expression to watch pad"
-msgstr "正则表达å¼"
+msgstr "添加表达å¼åˆ°ç›‘视æ¿"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Add watch"
-msgstr "路径"
+msgstr "添加监视"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Stops the execution of the expression being evaluated by the debugger"
-msgstr ""
+msgstr "åœæ­¢è°ƒè¯•å™¨è¡¨è¾¾å¼çš„执行"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Stop Evaluation"
-msgstr "正在ä¿å­˜..."
+msgstr "åœæ­¢è®¡ç®—"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
msgid "Run To Cursor"
-msgstr ""
+msgstr "è¿è¡Œè‡³å…‰æ ‡"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Set Next Statement"
-msgstr "ä¿å­˜"
+msgstr "设为下一æ¡è¯­å¥"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11
-#, fuzzy
msgid "Show Next Statement"
-msgstr "å¯åŠ¨æ—¶æ˜¾ç¤º(_S)"
+msgstr "显示下一æ¡è¯­å¥"
#: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:18
-#, fuzzy
msgid "Debugger"
-msgstr "调试"
+msgstr "调试器"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/ReinstallProjectPackagesActionTests.cs:168
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ReinstallProjectPackagesAction.cs:101
-#, fuzzy
msgid "Retargeting packages...{0}"
-msgstr "创建新包..."
+msgstr "é‡æ–°å®šä½è½¯ä»¶åŒ…... {0}"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/AvailablePackagesViewModel.cs:211
-#, fuzzy
msgid "All package sources could not be reached."
-msgstr "工程无法创建"
+msgstr "所有包的æ¥æºæ— æ³•è¾¾æˆã€‚"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/AvailablePackagesViewModel.cs:217
-#, fuzzy
msgid "Some package sources could not be reached."
-msgstr "工程无法创建"
+msgstr "一些包的æ¥æºæ— æ³•è¾¾æˆã€‚"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs:142
msgid "WARNING: {0} Package contains PowerShell scripts which will not be run."
-msgstr ""
+msgstr "警告: {0} 软件包包å«çš„PowerShell脚本将ä¸ä¼šè¢«æ‰§è¡Œã€‚"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs:149
msgid "Licenses not accepted."
-msgstr ""
+msgstr "ä¸æŽ¥å—许å¯è¯ã€‚"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:26
-#, fuzzy
msgid "Manage Packages"
-msgstr "包"
+msgstr "管ç†è½¯ä»¶åŒ…"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:45
-#, fuzzy
msgid "Available"
-msgstr "å¯ç”¨çš„ç¼–ç ï¼š"
+msgstr "å¯ç”¨"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:56
#: ../external/mono-addins/Mono.Addins.Gui/Mono.Addins.Gui/AddinManagerDialog.cs:3
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.AddinManagerDialog.cs:2
-#, fuzzy
msgid "Installed"
-msgstr "安装"
+msgstr "已安装"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:67
-#, fuzzy
msgid "Updated"
-msgstr "æ›´æ–°"
+msgstr "已更新"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:78
-#, fuzzy
msgid "Recent"
-msgstr "删除"
+msgstr "最近"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:102
-#, fuzzy
msgid "Messages"
-msgstr "ä¿¡æ¯"
+msgstr "消æ¯"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:165
-#, fuzzy
msgid "Include Prerelease"
-msgstr "包å«"
+msgstr "包括预å‘è¡Œ"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:182
#: ../external/mono-addins/Mono.Addins.Gui/gtk-gui/Mono.Addins.Gui.AddinManagerDialog.cs:2
-#, fuzzy
msgid "Update All"
-msgstr "ä¿å­˜å¤±è´¥ã€‚"
+msgstr "全部更新"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:218
-#, fuzzy
msgid "<span weight='bold'>Created by:</span>"
-msgstr "<span weight=\"bold\" size=\"x-large\">标题</span>"
+msgstr "<span weight='bold'>创建者:</span>"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:246
-#, fuzzy
msgid "<span weight='bold'>Id:</span>"
-msgstr "<span weight=\"bold\" size=\"x-large\">标题</span>"
+msgstr "<span weight='bold'>Id:</span>"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:279
-#, fuzzy
msgid "<span weight='bold'>Version:</span>"
-msgstr "<span weight=\"bold\" size=\"x-large\">标题</span>"
+msgstr "<span weight='bold'>版本:</span>"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:307
-#, fuzzy
msgid "<span weight='bold'>Last Updated:</span>"
-msgstr "<span weight=\"bold\" size=\"x-large\">标题</span>"
+msgstr "<span weight='bold'>最åŽæ›´æ–°:</span>"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:335
-#, fuzzy
msgid "<span weight='bold'>Downloads:</span>"
-msgstr "<span weight=\"bold\" size=\"x-large\">标题</span>"
+msgstr "<span weight='bold'>下载:</span>"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:399
-#, fuzzy
msgid "<span weight='bold'>Dependencies:</span>"
-msgstr "<span weight=\"bold\" size=\"x-large\">标题</span>"
+msgstr "<span weight='bold'>ä¾èµ–项:</span>"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:484
-#, fuzzy
msgid "Manage"
-msgstr "正在装入æ’件"
+msgstr "管ç†"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.LicenseAcceptanceDialog.cs:22
-#, fuzzy
msgid "License Agreements"
-msgstr "正在执行 SQL 查询"
+msgstr "许å¯åè®®"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.LicenseAcceptanceDialog.cs:36
#, fuzzy
@@ -21269,14 +20411,12 @@ msgid ""
msgstr ""
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.SelectProjectsDialog.cs:18
-#, fuzzy
msgid "Select Projects"
-msgstr "最近工程"
+msgstr "所选项目"
#: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.SelectProjectsDialog.cs:31
-#, fuzzy
msgid "Install the package into the following projects:"
-msgstr "创建一个新的 C# 控制å°å·¥ç¨‹ã€‚"
+msgstr "安装软件包至下é¢çš„项目:"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/PackageSourcesOptionsPanel.cs:83
msgid "Unable to encrypt Package Source passwords."
@@ -21928,62 +21068,52 @@ msgstr "æ“作æˆåŠŸå®Œæˆã€‚"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:9
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:108
msgid "NuGet"
-msgstr ""
+msgstr "NuGet"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:12
-#, fuzzy
msgid "Add NuGet packages to the project"
-msgstr "创建一个新的 C# 控制å°å·¥ç¨‹ã€‚"
+msgstr "添加NuGet包到项目"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:13
-#, fuzzy
msgid "Add NuGet _Packages..."
-msgstr "æ’件管ç†å™¨..."
+msgstr "添加的NuGet包(_P) ..."
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:17
-#, fuzzy
msgid "Add packages to the project"
-msgstr "创建一个新的 C# 控制å°å·¥ç¨‹ã€‚"
+msgstr "添加包到项目"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:18
-#, fuzzy
msgid "Add _Packages..."
-msgstr "æ’件管ç†å™¨..."
+msgstr "添加包(_P)..."
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:22
msgid "Restore missing NuGet packages"
msgstr ""
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:23
-#, fuzzy
msgid "_Restore NuGet Packages"
-msgstr "包"
+msgstr "æ¢å¤NuGet包(_R)"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:27
-#, fuzzy
msgid "Restore missing packages"
-msgstr "创建新文件"
+msgstr "æ¢å¤ç¼ºå¤±çš„软件包"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:28
-#, fuzzy
msgid "_Restore"
-msgstr "资æº"
+msgstr "æ¢å¤(_R)"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:32
-#, fuzzy
msgid "Current package version"
-msgstr "当å‰åˆ—"
+msgstr "当å‰è½¯ä»¶åŒ…版本"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:36
-#, fuzzy
msgid "Retarget package"
-msgstr "包"
+msgstr "é‡æ–°å®šä½è½¯ä»¶åŒ…"
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:37
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:55
-#, fuzzy
msgid "Re_target"
-msgstr "编辑部署目标"
+msgstr ""
#: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:40
#, fuzzy
@@ -25336,15 +24466,13 @@ msgid "Remove redundant constructor"
msgstr ""
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/EmptyDestructorIssue.cs:1
-#, fuzzy
msgid "Empty destructor"
-msgstr "空结构"
+msgstr "空的æžæž„器"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/EmptyDestructorIssue.cs:3
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/EmptyDestructorAnalyzer.cs:1
-#, fuzzy
msgid "Empty destructor is redundant"
-msgstr "空目录å"
+msgstr "空的æžæž„器是多余的"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/EmptyDestructorIssue.cs:16
#, fuzzy
@@ -25740,19 +24868,16 @@ msgstr ""
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0127ReturnMustNotBeFollowedByAnyExpression.cs:4
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/ReturnMustNotBeFollowedByAnyExpressionCodeFixProvider.cs:5
-#, fuzzy
msgid "Remove returned expression"
-msgstr "ASP.NET 选项"
+msgstr "删除已返回表达å¼"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0127ReturnMustNotBeFollowedByAnyExpression.cs:5
-#, fuzzy
msgid "Change return type of method."
-msgstr "日积月累(_T)..."
+msgstr "更改方法的返回类型。"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0127ReturnMustNotBeFollowedByAnyExpression.cs:6
-#, fuzzy
msgid "Return type is 'void'"
-msgstr "日积月累(_T)..."
+msgstr "返回类型是‘void’"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0152DuplicateCaseLabelValueIssue.cs:1
msgid "Duplicate case label value issue"
@@ -25796,20 +24921,17 @@ msgstr ""
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0029InvalidConversionIssue.cs:12
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/InvalidConversionCodeFixProvider.cs:8
-#, fuzzy
msgid "Change field type"
-msgstr "创建新文件夹"
+msgstr "更改字段类型"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0029InvalidConversionIssue.cs:13
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/InvalidConversionCodeFixProvider.cs:9
-#, fuzzy
msgid "Change local variable type"
-msgstr "é‡åå˜é‡"
+msgstr "更改本地å˜é‡ç±»åž‹"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0029InvalidConversionIssue.cs:14
-#, fuzzy
msgid "Change return type"
-msgstr "ChangeLog"
+msgstr "更改返回类型"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/SealedMemberInSealedClassIssue.cs:1
msgid "Sealed member in sealed class"
@@ -26402,19 +25524,17 @@ msgid "Expression is always '{0}'"
msgstr "正则表达å¼"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/UnusedLabelIssue.cs:1
-#, fuzzy
msgid "Unused label"
-msgstr "é‡åå˜é‡"
+msgstr "未使用的标签"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/UnusedLabelIssue.cs:7
msgid "Label is unused"
-msgstr ""
+msgstr "标签是未使用"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInDeclaration/UnusedLabelIssue.cs:7
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS0164LabelHasNotBeenReferencedCodeFixProvider.cs:5
-#, fuzzy
msgid "Remove unused label"
-msgstr "é‡åå˜é‡"
+msgstr "删除未使用的标签"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:1
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/MemberHidesStaticFromOuterClassAnalyzer.cs:1
@@ -26422,29 +25542,24 @@ msgid "Member hides static member from outer class"
msgstr ""
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:7
-#, fuzzy
msgid "field"
-msgstr "查找"
+msgstr "字段"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:7
-#, fuzzy
msgid "property"
msgstr "属性"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:7
-#, fuzzy
msgid "event"
-msgstr "事件 {0}"
+msgstr "事件"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:7
-#, fuzzy
msgid "method"
-msgstr "é‡å方法"
+msgstr "方法"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:7
-#, fuzzy
msgid "member"
-msgstr "è¡Œå·(_L):"
+msgstr "æˆå‘˜"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:7
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/MemberHidesStaticFromOuterClassAnalyzer.cs:1
@@ -26453,24 +25568,20 @@ msgstr ""
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:8
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:9
-#, fuzzy
msgid "Event"
-msgstr "事件 {0}"
+msgstr "事件"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:10
-#, fuzzy
msgid "Field"
-msgstr "查找"
+msgstr "字段"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:12
-#, fuzzy
msgid "Fixed field"
-msgstr "查找"
+msgstr "固定字段"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:13
-#, fuzzy
msgid "Method"
-msgstr "é‡å方法"
+msgstr "方法"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MethodOverloadWithOptionalParameterIssue.cs:1
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MethodOverloadWithOptionalParameterIssue.cs:5
@@ -26494,7 +25605,7 @@ msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReferenceEqualsWithValueTypeIssue.cs:8
msgid "Use Equals()"
-msgstr ""
+msgstr "使用Equals()"
#: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReferenceEqualsWithValueTypeIssue.cs:9
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReferenceEqualsWithValueTypeAnalyzer.cs:1
@@ -27039,16 +26150,14 @@ msgid "Add exception description"
msgstr "ç”Ÿæˆ XML 文档(_X)"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/AddNewFormatItemCodeRefactoringProvider.cs:4
-#, fuzzy
msgid "Insert format argument"
-msgstr "æ示å‚æ•°(_P)"
+msgstr "æ’入格å¼å‚æ•°"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertAnonymousMethodToLambdaCodeRefactoringProvider.cs:3
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertLambdaStatementToExpressionCodeRefactoringProvider.cs:6
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertMethodGroupToLambdaCodeRefactoringProvider.cs:7
-#, fuzzy
msgid "To lambda expression"
-msgstr "回归"
+msgstr "æˆä¸ºlambda表达å¼"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertCoalescingToConditionalExpressionCodeRefactoringProvider.cs:3
#, fuzzy
@@ -27058,70 +26167,64 @@ msgstr "回归"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertDecToHexCodeRefactoringProvider.cs:2
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertDecToHexCodeRefactoringProvider.cs:2
msgid "To hex"
-msgstr ""
+msgstr "æˆä¸ºå六进制"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertEqualityOperatorToEqualsCodeRefactoringProvider.cs:1
msgid "To 'Equals' call"
-msgstr ""
+msgstr "æˆä¸º'Equals' 调用"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertEqualityOperatorToReferenceEqualsCodeRefactoringProvider.cs:3
msgid "To 'ReferenceEquals' call"
-msgstr ""
+msgstr "æˆä¸º'ReferenceEquals' 调用"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertEqualsToEqualityOperatorCodeRefactoringProvider.cs:6
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertReferenceEqualsToEqualityOperatorCodeRefactoringProvider.cs:6
msgid "To '=='"
-msgstr ""
+msgstr "æˆä¸º'=='"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertEqualsToEqualityOperatorCodeRefactoringProvider.cs:6
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertReferenceEqualsToEqualityOperatorCodeRefactoringProvider.cs:6
msgid "To '!='"
-msgstr ""
+msgstr "æˆä¸º'=='"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertExplicitToImplicitImplementationCodeRefactoringProvider.cs:9
-#, fuzzy
msgid "To implicit implementation"
-msgstr "创建一个 Gtk# 工程。"
+msgstr "æˆä¸ºéšå¼å®žçŽ°"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertForeachToForCodeRefactoringProvider.cs:4
msgid "To 'for'"
-msgstr ""
+msgstr "æˆä¸º'for'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertHexToDecCodeRefactoringProvider.cs:2
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertHexToDecCodeRefactoringProvider.cs:2
msgid "To dec"
-msgstr ""
+msgstr "æˆä¸ºå进制"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertIfStatementToConditionalTernaryExpressionCodeRefactoringProvider.cs:11
-#, fuzzy
msgid "To '?:' expression"
-msgstr "回归"
+msgstr "æˆä¸º'?:' 表达å¼"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertIfStatementToSwitchStatementCodeRefactoringProvider.cs:5
-#, fuzzy
msgid "To 'switch'"
-msgstr "路径"
+msgstr "æˆä¸º'switch'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertImplicitToExplicitImplementationCodeRefactoringProvider.cs:7
-#, fuzzy
msgid "To explicit implementation"
-msgstr "创建一个 Gtk# 工程。"
+msgstr "æˆä¸ºæ˜¾å¼å®žçŽ°"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertLambdaBodyExpressionToStatementCodeRefactoringProvider.cs:4
-#, fuzzy
msgid "To lambda statement"
-msgstr "将跳格转æ¢ä¸ºç©ºæ ¼(_O)"
+msgstr "æˆä¸ºlambda 声明"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertLambdaToAnonymousMethodCodeRefactoringProvider.cs:3
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertMethodGroupToAnonymousMethodCodeRefactoringProvider.cs:7
-#, fuzzy
msgid "To anonymous method"
-msgstr "抽象内容"
+msgstr "æˆä¸ºåŒ¿å方法"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertSwitchToIfCodeRefactoringProvider.cs:4
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertSelectCaseToIfCodeRefactoringProvider.cs:5
msgid "To 'if'"
-msgstr ""
+msgstr "æˆä¸º 'if'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/FlipOperatorOperandsCodeRefactoringProvider.cs:3
#, fuzzy
@@ -27216,13 +26319,12 @@ msgid "Use 'System.Environment.NewLine'"
msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertForToWhileCodeRefactoringProvider.cs:2
-#, fuzzy
msgid "To 'while'"
-msgstr "MonoDevelop"
+msgstr "æˆä¸º'while'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertDoWhileToWhileLoopCodeRefactoringProvider.cs:3
msgid "To 'while { ... }'"
-msgstr ""
+msgstr "æˆä¸º'while { ... }'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplacePostfixExpressionWithAssignmentCodeRefactoringProvider.cs:3
#, fuzzy
@@ -27235,39 +26337,36 @@ msgid "Replace '{0}--' with '{0} -= 1'"
msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplaceWithOperatorAssignmentCodeRefactoringProvider.cs:1
-#, fuzzy
msgid "To '{0}='"
-msgstr "剪切(_T)"
+msgstr "To '{0}='"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplaceAssignmentWithPostfixExpressionCodeRefactoringProvider.cs:6
-#, fuzzy
msgid "To '{0}++'"
-msgstr "剪切(_T)"
+msgstr "To '{0}++'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplaceAssignmentWithPostfixExpressionCodeRefactoringProvider.cs:6
-#, fuzzy
msgid "To '{0}--'"
-msgstr "剪切(_T)"
+msgstr "To '{0}--'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertShiftToMultiplyCodeRefactoringProvider.cs:2
msgid "To '*'"
-msgstr ""
+msgstr "To '*'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertShiftToMultiplyCodeRefactoringProvider.cs:2
msgid "To '/'"
-msgstr ""
+msgstr "To '/'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertMultiplyToShiftCodeRefactoringProvider.cs:4
msgid "To '<<'"
-msgstr ""
+msgstr "To '<<'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertMultiplyToShiftCodeRefactoringProvider.cs:4
msgid "To '>>'"
-msgstr ""
+msgstr "To '>>'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertWhileToDoWhileLoopCodeRefactoringProvider.cs:3
msgid "To 'do...while'"
-msgstr ""
+msgstr "To 'do...while'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/PublicConstructorInAbstractClass.cs:1
msgid "Constructor in abstract class should not be public"
@@ -27278,9 +26377,8 @@ msgid "Replace with call to OfType<T>().Any()"
msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeAny.cs:1
-#, fuzzy
msgid "Replace with 'OfType<T>().Any()'"
-msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
+msgstr "用 'OfType<T>().Any()'替æ¢"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/AdditionalOfTypeAnalyzer.cs:2
msgid "Replace with call to OfType<T> (extended cases)"
@@ -27314,9 +26412,8 @@ msgid "Shows NotImplementedException throws in the quick task bar"
msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NotImplementedExceptionAnalyzer.cs:1
-#, fuzzy
msgid "Not implemented"
-msgstr "简å•çŽ©æ„"
+msgstr "未实现"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantAssignmentAnalyzer.cs:1
msgid ""
@@ -27324,41 +26421,37 @@ msgid ""
msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantInternalAnalyzer.cs:1
-#, fuzzy
msgid "Removes 'internal' modifiers that are not required"
-msgstr "ä¿å­˜æ‰“开的全部文件"
+msgstr "删除ä¸æ˜¯å¿…需的 'internal' 修饰符"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantInternalAnalyzer.cs:1
-#, fuzzy
msgid "'internal' modifier is redundant"
-msgstr "ä¿å­˜æ‰“开的全部文件"
+msgstr "'internal' 修饰符是多余"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantPrivateAnalyzer.cs:1
msgid "Removes 'private' modifiers that are not required"
-msgstr ""
+msgstr "删除ä¸æ˜¯å¿…需的 'private' 修饰符"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantPrivateAnalyzer.cs:1
-#, fuzzy
msgid "'private' modifier is redundant"
-msgstr "ä¿å­˜"
+msgstr "'private' 修饰符是多余"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/StaticEventSubscriptionAnalyzer.cs:1
msgid "Checks if static events are removed"
-msgstr ""
+msgstr "检查是å¦å·²åˆ é™¤é™æ€äº‹ä»¶"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/StaticEventSubscriptionAnalyzer.cs:1
msgid ""
"Subscription to static events without unsubscription may cause memory leaks"
-msgstr ""
+msgstr "é™æ€äº‹ä»¶æ²¡æœ‰ç¡®è®¤æ’¤é”€è®¢é˜…å¯èƒ½å¯¼è‡´å†…存泄æ¼"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/XmlDocAnalyzer.cs:1
-#, fuzzy
msgid "Validate Xml docs"
-msgstr "ç”Ÿæˆ XML 文档(_X)"
+msgstr "éªŒè¯ Xml 文档"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/BitwiseOperatorOnEnumWithoutFlagsAnalyzer.cs:1
msgid "Bitwise operation on enum not marked with [Flags] attribute"
-msgstr ""
+msgstr "对枚举ä¸æ ‡æœ‰ [Flags] 属性的按ä½è¿ç®—"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/CompareOfFloatsByEqualityOperatorAnalyzer.cs:1
msgid "Comparison of floating point numbers with equality operator"
@@ -27462,17 +26555,15 @@ msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ValueParameterNotUsedAnalyzer.cs:5
msgid "setter"
-msgstr ""
+msgstr "设置器"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ValueParameterNotUsedAnalyzer.cs:5
-#, fuzzy
msgid "add accessor"
-msgstr "地å€"
+msgstr "添加访问器"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ValueParameterNotUsedAnalyzer.cs:5
-#, fuzzy
msgid "remove accessor"
-msgstr "删除"
+msgstr "删除访问器"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CompilerWarnings/UnassignedReadonlyFieldAnalyzer.cs:1
#, fuzzy
@@ -27485,9 +26576,8 @@ msgid "Non public methods are not found by NUnit"
msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertIfStatementToNullCoalescingExpressionAnalyzer.cs:1
-#, fuzzy
msgid "Convert 'if' to '??'"
-msgstr "MonoDevelop"
+msgstr "转æ¢'if'为 '??'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertNullableToShortFormAnalyzer.cs:1
#, fuzzy
@@ -27561,14 +26651,12 @@ msgid "'sealed' modifier is redundant in sealed classes"
msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/UnusedParameterAnalyzer.cs:1
-#, fuzzy
msgid "Parameter is never used"
-msgstr "中找ä¸åˆ°æ–‡ä»¶ '{0}'。"
+msgstr "å‚数从未被使用"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInDeclaration/UnusedTypeParameterAnalyzer.cs:1
-#, fuzzy
msgid "Type parameter '{0}' is never used"
-msgstr "中找ä¸åˆ°æ–‡ä»¶ '{0}'。"
+msgstr "类型å‚æ•° '{0}' 从未被使用"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/ArrayCreationCanBeReplacedWithArrayInitializerAnalyzer.cs:1
msgid ""
@@ -27953,211 +27041,184 @@ msgstr ""
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertStatementBodyToExpressionBodyCodeRefactoringProvider.cs:8
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertStatementBodyToExpressionBodyCodeRefactoringProvider.cs:9
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertStatementBodyToExpressionBodyCodeRefactoringProvider.cs:10
-#, fuzzy
msgid "To expression body"
-msgstr "切æ¢æ–­ç‚¹"
+msgstr "æˆä¸ºè¡¨è¾¾å¼ä½“"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertExpressionBodyToStatementBodyCodeRefactoringProvider.cs:6
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertExpressionBodyToStatementBodyCodeRefactoringProvider.cs:9
msgid "To statement body"
-msgstr ""
+msgstr "æˆä¸ºå£°æ˜Žä½“"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckArrayIndexValueCodeRefactoringProvider.cs:4
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckStringIndexValueCodeRefactoringProvider.cs:4
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckStringBuilderIndexValueCodeRefactoringProvider.cs:4
msgid "Check 'if ({0}.Length > {1})'"
-msgstr ""
+msgstr "检查'if ({0}.Length > {1})'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckCollectionIndexValueCodeRefactoringProvider.cs:4
msgid "Check 'if ({0}.Count > {1})'"
-msgstr ""
+msgstr "检查'if ({0}.Count > {1})'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckDictionaryKeyValueCodeRefactoringProvider.cs:3
msgid "Use 'if ({0}.TryGetValue({1}, out val))'"
-msgstr ""
+msgstr "使用'if ({0}.TryGetValue({1}, out val))'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReverseDirectionForForLoopCodeRefactoringProvider.cs:6
-#, fuzzy
msgid "Reverse 'for' loop'"
-msgstr "MonoDevelop"
+msgstr "å转'for' loop'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/InitializeFieldFromConstructorParameterCodeRefactoringProvider.cs:3
msgid "Initialize field from parameter"
-msgstr ""
+msgstr "从å‚æ•°åˆå§‹åŒ–字段"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/InitializeAutoPropertyFromConstructorParameterCodeRefactoringProvider.cs:3
msgid "Initialize auto-property from parameter"
-msgstr ""
+msgstr "从å‚æ•°åˆå§‹åŒ–自动属性"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS1520MethodMustHaveAReturnTypeCodeFixProvider.cs:3
-#, fuzzy
msgid "Fix constructor"
-msgstr "约æŸ"
+msgstr "ä¿®å¤æž„造器"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS0108UseNewKeywordIfHidingIntendedCodeFixProvider.cs:5
-#, fuzzy
msgid "Add 'new' modifier"
-msgstr "添加到解决方案"
+msgstr "加入“newâ€ä¿®é¥°ç¬¦"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/ReturnMustNotBeFollowedByAnyExpressionCodeFixProvider.cs:6
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/InvalidConversionCodeFixProvider.cs:11
-#, fuzzy
msgid "Change return type of method"
-msgstr "日积月累(_T)..."
+msgstr "更改方法的返回类型。"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS0152DuplicateCaseLabelValueCodeFixProvider.cs:5
-#, fuzzy
msgid "Remove 'case {0}' switch section"
-msgstr "删除"
+msgstr "删除'case {0}' switch 段"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS0152DuplicateCaseLabelValueCodeFixProvider.cs:5
-#, fuzzy
msgid "Remove 'case {0}' label"
-msgstr "删除"
+msgstr "删除'case {0}' 标签"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS0162UnreachableCodeDetectedCodeFixProvider.cs:6
-#, fuzzy
msgid "Remove redundant code"
-msgstr "切æ¢æ–­ç‚¹"
+msgstr "删除冗余代ç "
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/NotResolvedInTextIssueCodeFixProvider.cs:6
-#, fuzzy
msgid "Swap parameter"
-msgstr "å‚æ•°"
+msgstr "交æ¢å‚æ•°"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/FieldCanBeMadeReadOnlyCodeFixProvider.cs:3
-#, fuzzy
msgid "To 'readonly'"
-msgstr "就绪"
+msgstr "æˆä¸º 'readonly'"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NameOfSuggestionAnalyzer.cs:1
msgid "Suggest the usage of the nameof operator"
-msgstr ""
+msgstr "建议使用nameofæ“作符"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NameOfSuggestionAnalyzer.cs:1
msgid "Use 'nameof({0})' expression instead."
-msgstr ""
+msgstr "使用 'nameof({0})'表达å¼æ›¿æ¢ã€‚"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NameOfSuggestionCodeFixProvider.cs:4
msgid "To 'nameof({0})'"
-msgstr ""
+msgstr "æˆä¸º 'nameof({0})'"
#: ../external/RefactoringEssentials/RefactoringEssentials/Samples/CSharp/SampleAnalyzer.cs:2
msgid "Sample analyzer: Class name should not have a 'C' prefix."
-msgstr ""
+msgstr "æ ·å“分æžï¼šç±»åä¸åº”该有“Câ€å‰ç¼€ã€‚"
#: ../external/RefactoringEssentials/RefactoringEssentials/Samples/CSharp/SampleCodeRefactoringProvider.cs:9
-#, fuzzy
msgid "Sample: Prepend with 'I'"
-msgstr "正在 {1} 中替æ¢â€œ{0}â€ã€‚"
+msgstr "示例:在å‰é¢åŠ ä¸Šâ€œIâ€"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertInterpolatedStringToStringFormatCodeRefactoringProvider.cs:1
-#, fuzzy
msgid "To format string"
-msgstr "代ç ç”Ÿæˆ"
+msgstr "æˆä¸ºæ ¼å¼åŒ–字符串"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertStringFormatToInterpolatedStringCodeRefactoringProvider.cs:2
msgid "To interpolated string"
-msgstr ""
+msgstr "æˆä¸ºçªœæ”¹å­—符串"
#: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ImportStaticClassWithUsingCodeRefactoringProvider.cs:5
msgid "Import static class with using"
-msgstr ""
+msgstr "使用using导入é™æ€ç±»"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/CheckIfParameterIsNothingCodeRefactoringProvider.cs:2
-#, fuzzy
msgid "Add 'Is Nothing' check for parameter"
-msgstr "å‚æ•°(_A):"
+msgstr "为å‚数添加 'Is Nothing' 检查"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertIfStatementToSelectCaseStatementCodeRefactoringProvider.cs:6
-#, fuzzy
msgid "To 'Select Case'"
-msgstr "选择图åƒ"
+msgstr "至 'Select Case'"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertToCustomEventCodeRefactoringProvider.cs:6
-#, fuzzy
msgid "Convert to custom event"
-msgstr "MonoDevelop"
+msgstr "转æ¢ä¸ºè‡ªå®šä¹‰äº‹ä»¶"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/CheckDictionaryKeyValueCodeRefactoringProvider.cs:5
msgid "Check 'If {0}.TryGetValue({1}, val)'"
-msgstr ""
+msgstr "检查'If {0}.TryGetValue({1}, val)'"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ReplaceDirectCastWithSafeCastCodeRefactoringProvider.cs:1
-#, fuzzy
msgid "Convert cast to 'TryCast'"
-msgstr "将跳格转æ¢ä¸ºç©ºæ ¼(_O)"
+msgstr "将转æ¢ä¸º 'TryCast'"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ReplaceSafeCastWithDirectCastCodeRefactoringProvider.cs:3
-#, fuzzy
msgid "Convert 'TryCast' to 'DirectCast'"
-msgstr "将跳格转æ¢ä¸ºç©ºæ ¼(_O)"
+msgstr "转æ¢â€œTryCastâ€åˆ°â€œDirectCastâ€"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/Diagnostics/Custom/NameOfSuggestionAnalyzer.cs:1
msgid "Suggest the usage of the NameOf operator"
-msgstr ""
+msgstr "建议使用NameOfæ“作符"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/Diagnostics/Custom/NameOfSuggestionAnalyzer.cs:1
msgid "Use 'NameOf({0})' expression instead."
-msgstr ""
+msgstr "使用“NameOf({0})â€çš„表达æ¥ä»£æ›¿ã€‚"
#: ../external/RefactoringEssentials/RefactoringEssentials/VB/Diagnostics/Custom/NameOfSuggestionCodeFixProvider.cs:4
msgid "To 'NameOf({0})'"
-msgstr ""
+msgstr "æˆä¸º 'NameOf({0})'"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.InstrumentationViewerDialog.cs:2
-#, fuzzy
msgid "C_onnect"
-msgstr "断开连接"
+msgstr "连接(_O)"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.InstrumentationViewerDialog.cs:2
-#, fuzzy
msgid "Exit"
-msgstr "编辑"
+msgstr "退出"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.InstrumentationViewerDialog.cs:2
msgid "Flush Memory"
-msgstr "åŒæ­¥å†…存数æ®"
+msgstr "åŒæ­¥å†…å­˜"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.InstrumenationChartView.cs:2
-#, fuzzy
msgid "Time View"
-msgstr "查看"
+msgstr "时间视图"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.InstrumenationChartView.cs:2
-#, fuzzy
msgid "List View"
-msgstr "查看"
+msgstr "列表视图"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.NewProfile.cs:1
-#, fuzzy
msgid "New View"
-msgstr "新建文件..."
+msgstr "新建视图"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.NewProfile.cs:1
-#, fuzzy
msgid "View Name:"
-msgstr "æ–°å称:"
+msgstr "视图å称:"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.CounterSelectorDialog.cs:2
-#, fuzzy
msgid "Select Counter"
msgstr "选择计数器"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.TimeLineViewWindow.cs:2
-#, fuzzy
msgid "Time Line"
-msgstr "查看列表"
+msgstr "时间线"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.TimeLineViewWindow.cs:2
-#, fuzzy
msgid "Single Thread"
-msgstr "显示测试æºä»£ç "
+msgstr "å•çº¿ç¨‹"
#: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.TimeStatisticsView.cs:1
-#, fuzzy
msgid "Show Categories"
-msgstr "类别:"
+msgstr "显示分类"
#, fuzzy
#~ msgid "Can't resolve full path {0}"
diff --git a/main/src/addins/AspNet/Commands/AddViewFromControllerCommandHandler.cs b/main/src/addins/AspNet/Commands/AddViewFromControllerCommandHandler.cs
index 2c437a46ba..2b135358f7 100644
--- a/main/src/addins/AspNet/Commands/AddViewFromControllerCommandHandler.cs
+++ b/main/src/addins/AspNet/Commands/AddViewFromControllerCommandHandler.cs
@@ -26,6 +26,7 @@
using System;
using MonoDevelop.Components.Commands;
+using MonoDevelop.Core;
using MonoDevelop.Ide;
using MonoDevelop.AspNet.Projects;
using MonoDevelop.Projects;
@@ -82,9 +83,9 @@ namespace MonoDevelop.AspNet.Commands
outputFile = System.IO.Path.Combine (path, dialog.ViewName) + ext;
if (System.IO.File.Exists (outputFile)) {
- fileGood = MessageService.AskQuestion ("Overwrite file?",
- String.Format ("The file '{0}' already exists.\n", dialog.ViewName) +
- "Would you like to overwrite it?", AlertButton.OverwriteFile, AlertButton.Cancel)
+ fileGood = MessageService.AskQuestion (GettextCatalog.GetString ("Overwrite file?"),
+ GettextCatalog.GetString ("The file '{0}' already exists.\n", dialog.ViewName) +
+ GettextCatalog.GetString ("Would you like to overwrite it?"), AlertButton.OverwriteFile, AlertButton.Cancel)
!= AlertButton.Cancel;
} else
break;
diff --git a/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs b/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs
index 2d5c091f3f..0bc8ca0ece 100644
--- a/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs
+++ b/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs
@@ -65,7 +65,7 @@ namespace MonoDevelop.AspNet.Commands
if (controller != null)
await RefactoringService.RoslynJumpToDeclaration (controller, doc.Project);
else
- MessageService.ShowError ("Matching controller cannot be found.");
+ MessageService.ShowError (GettextCatalog.GetString ("Matching controller cannot be found."));
}
async Task<INamedTypeSymbol> FindController (MonoDevelop.Projects.Project project, string name)
diff --git a/main/src/addins/AspNet/Commands/GoToViewCommandHandler.cs b/main/src/addins/AspNet/Commands/GoToViewCommandHandler.cs
index f84173bdca..0c0f6459c6 100644
--- a/main/src/addins/AspNet/Commands/GoToViewCommandHandler.cs
+++ b/main/src/addins/AspNet/Commands/GoToViewCommandHandler.cs
@@ -64,7 +64,7 @@ namespace MonoDevelop.AspNet.Commands
}
}
- MessageService.ShowError ("Matching view cannot be found.");
+ MessageService.ShowError (GettextCatalog.GetString ("Matching view cannot be found."));
}
}
}
diff --git a/main/src/addins/AspNet/Execution/XspParameters.cs b/main/src/addins/AspNet/Execution/XspParameters.cs
index e55fd0e541..c5f499071b 100644
--- a/main/src/addins/AspNet/Execution/XspParameters.cs
+++ b/main/src/addins/AspNet/Execution/XspParameters.cs
@@ -80,7 +80,7 @@ namespace MonoDevelop.AspNet.Execution
try {
port = Convert.ToUInt16 (value);
} catch (InvalidCastException) {
- throw new ArgumentException ("The port value is outside the permitted range");
+ throw new ArgumentException (GettextCatalog.GetString ("The port value is outside the permitted range"));
}
}
}
@@ -92,7 +92,7 @@ namespace MonoDevelop.AspNet.Execution
System.Net.IPAddress tempAdd = System.Net.IPAddress.Parse (value);
address = tempAdd.ToString ();
} catch(FormatException) {
- throw new ArgumentException ("The IP address is invalid.");
+ throw new ArgumentException (GettextCatalog.GetString ("The IP address is invalid."));
}
}
}
diff --git a/main/src/addins/AspNet/Html/DocTypeCompletionData.cs b/main/src/addins/AspNet/Html/DocTypeCompletionData.cs
index 254a26da2a..571f8e0125 100644
--- a/main/src/addins/AspNet/Html/DocTypeCompletionData.cs
+++ b/main/src/addins/AspNet/Html/DocTypeCompletionData.cs
@@ -27,7 +27,6 @@
//
using System;
-using System.Threading.Tasks;
using MonoDevelop.Core;
using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Editor.Extension;
@@ -63,7 +62,7 @@ namespace MonoDevelop.AspNet.Html
get { return name; }
}
- public override Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
var buf = window.CompletionWidget;
if (buf != null) {
@@ -78,8 +77,7 @@ namespace MonoDevelop.AspNet.Html
}
buf.Replace (deleteStartOffset, buf.CaretOffset - deleteStartOffset, text);
- }
- return Task.FromResult (ka);
+ }
}
}
}
diff --git a/main/src/addins/AspNet/Html/HtmlParser.cs b/main/src/addins/AspNet/Html/HtmlParser.cs
index 05f80ff6b3..f42b08c30f 100644
--- a/main/src/addins/AspNet/Html/HtmlParser.cs
+++ b/main/src/addins/AspNet/Html/HtmlParser.cs
@@ -35,7 +35,7 @@ using MonoDevelop.Projects;
using MonoDevelop.Xml.Dom;
using MonoDevelop.Xml.Parser;
using MonoDevelop.AspNet.Html.Parser;
-using MonoDevelop.Core.Text;
+using MonoDevelop.Core;
namespace MonoDevelop.AspNet.Html
{
@@ -67,7 +67,7 @@ namespace MonoDevelop.AspNet.Html
{
foreach (XNode node in doc.Nodes) {
if (node is XElement && !Object.ReferenceEquals (node, doc.RootElement)) {
- yield return new Error (ErrorType.Warning, "More than one root element", node.Region);
+ yield return new Error (ErrorType.Warning, GettextCatalog.GetString ("More than one root element"), node.Region);
}
}
}
diff --git a/main/src/addins/AspNet/Html/HtmlPathCompletion.cs b/main/src/addins/AspNet/Html/HtmlPathCompletion.cs
index 9609ad048f..76493955a1 100644
--- a/main/src/addins/AspNet/Html/HtmlPathCompletion.cs
+++ b/main/src/addins/AspNet/Html/HtmlPathCompletion.cs
@@ -31,8 +31,7 @@ using MonoDevelop.Core;
using System.Text.RegularExpressions;
using MonoDevelop.Ide;
using MonoDevelop.Ide.Editor.Extension;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.AspNet.Html
{
public static class HtmlPathCompletion
@@ -118,21 +117,20 @@ namespace MonoDevelop.AspNet.Html
get { throw new InvalidOperationException (); }
}
- public override Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
string text;
var dialog = new MonoDevelop.Ide.Projects.ProjectFileSelectorDialog (proj, "", pattern);
try {
if (MessageService.RunCustomDialog (dialog) != (int)Gtk.ResponseType.Ok || dialog.SelectedFile == null)
- return Task.FromResult (ka);
+ return;
text = pathFunc (dialog.SelectedFile);
}
finally {
dialog.Destroy ();
dialog.Dispose ();
}
- window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, "", text);
- return Task.FromResult (ka);
+ window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, "", text);
}
}
}
diff --git a/main/src/addins/AspNet/ProjectPad/AspNetFolderNodeCommandHandler.cs b/main/src/addins/AspNet/ProjectPad/AspNetFolderNodeCommandHandler.cs
index bcbab2276b..d680cda5a1 100644
--- a/main/src/addins/AspNet/ProjectPad/AspNetFolderNodeCommandHandler.cs
+++ b/main/src/addins/AspNet/ProjectPad/AspNetFolderNodeCommandHandler.cs
@@ -95,9 +95,9 @@ namespace MonoDevelop.AspNet.ProjectPad
outputFile = System.IO.Path.Combine (path, dialog.ControllerName) + ".cs";
if (System.IO.File.Exists (outputFile)) {
- fileGood = MessageService.AskQuestion ("Overwrite file?",
- String.Format ("The file '{0}' already exists.\n", dialog.ControllerName) +
- "Would you like to overwrite it?", AlertButton.OverwriteFile, AlertButton.Cancel)
+ fileGood = MessageService.AskQuestion (GettextCatalog.GetString ("Overwrite file?"),
+ GettextCatalog.GetString ("The file '{0}' already exists.\n", dialog.ControllerName) +
+ GettextCatalog.GetString ("Would you like to overwrite it?"), AlertButton.OverwriteFile, AlertButton.Cancel)
!= AlertButton.Cancel;
} else
break;
diff --git a/main/src/addins/AspNet/Projects/AspNetAppProjectFlavor.cs b/main/src/addins/AspNet/Projects/AspNetAppProjectFlavor.cs
index 1527fa9c43..da751481b6 100644
--- a/main/src/addins/AspNet/Projects/AspNetAppProjectFlavor.cs
+++ b/main/src/addins/AspNet/Projects/AspNetAppProjectFlavor.cs
@@ -208,7 +208,7 @@ namespace MonoDevelop.AspNet.Projects
});
}
- monitor.Log.WriteLine ("Running web server...");
+ monitor.Log.WriteLine (GettextCatalog.GetString ("Running web server..."));
var op = context.ExecutionHandler.Execute (cmd, console);
@@ -222,13 +222,13 @@ namespace MonoDevelop.AspNet.Projects
using (monitor.CancellationToken.Register (op.Cancel))
await op.Task;
- monitor.Log.WriteLine ("The web server exited with code: {0}", op.ExitCode);
+ monitor.Log.WriteLine (GettextCatalog.GetString ("The web server exited with code: {0}", op.ExitCode));
} catch (Exception ex) {
if (!(ex is UserException)) {
LoggingService.LogError ("Could not launch ASP.NET web server.", ex);
}
- monitor.ReportError ("Could not launch web server.", ex);
+ monitor.ReportError (GettextCatalog.GetString ("Could not launch web server."), ex);
} finally {
if (console != null)
console.Dispose ();
diff --git a/main/src/addins/AspNet/Projects/GtkAspNetProjectTemplateWizardPageWidget.cs b/main/src/addins/AspNet/Projects/GtkAspNetProjectTemplateWizardPageWidget.cs
index 699afe4c5a..2df1750d4a 100644
--- a/main/src/addins/AspNet/Projects/GtkAspNetProjectTemplateWizardPageWidget.cs
+++ b/main/src/addins/AspNet/Projects/GtkAspNetProjectTemplateWizardPageWidget.cs
@@ -59,12 +59,10 @@ namespace MonoDevelop.AspNet.Projects
includeUnitTestProjectDescriptionLeftHandPadding.WidthRequest = leftPaddingWidth;
}
- double scale = GtkWorkarounds.GetPixelScale ();
-
backgroundImage = Xwt.Drawing.Image.FromResource ("aspnet-wizard-page.png");
backgroundImageView = new ImageView (backgroundImage);
- backgroundImageView.Xalign = (float)(1/scale);
- backgroundImageView.Yalign = (float)(1/scale);
+ backgroundImageView.Xalign = 1.0f;
+ backgroundImageView.Yalign = 1.0f;
backgroundLargeImageVBox.PackStart (backgroundImageView, true, true, 0);
var separatorColor = Ide.Gui.Styles.NewProjectDialog.ProjectConfigurationSeparatorColor.ToGdkColor ();
@@ -76,9 +74,6 @@ namespace MonoDevelop.AspNet.Projects
configurationTableEventBox.ModifyBg (StateType.Normal, backgroundColor);
configurationBottomEventBox.ModifyBg (StateType.Normal, backgroundColor);
backgroundLargeImageEventBox.ModifyBg (StateType.Normal, backgroundColor);
-
- if (Platform.IsWindows && scale > 1.0)
- ScaleWidgets (scale);
}
public GtkAspNetProjectTemplateWizardPageWidget (AspNetProjectTemplateWizardPage wizardPage)
@@ -87,46 +82,6 @@ namespace MonoDevelop.AspNet.Projects
WizardPage = wizardPage;
}
- void ScaleWidgets (double scale)
- {
- ScaleWidgetsWidth (scale, new Widget[] {
- leftBorderEventBox,
- configurationVBox,
- includeLabelPadding,
- testingLabelPadding,
- paddingLabel,
- testingSeparator,
- mvcDescriptionLeftHandPadding,
- mvcDescriptionLabel,
- webFormsDescriptionLeftHandPadding,
- webFormsDescriptionLabel,
- webApiDescriptionLeftHandPadding,
- webApiDescriptionLabel,
- includeUnitTestProjectDescriptionLabel,
- includeUnitTestProjectDescriptionLeftHandPadding
- });
-
- ScaleWidgetsHeight (scale, new Widget[] {
- includeLabelPadding,
- testingLabelPadding,
- testingSeparator
- });
- }
-
- void ScaleWidgetsWidth (double scale, Widget[] widgets)
- {
- foreach (Widget widget in widgets) {
- widget.WidthRequest = (int)(widget.WidthRequest * scale);
- }
- }
-
- void ScaleWidgetsHeight (double scale, Widget[] widgets)
- {
- foreach (Widget widget in widgets) {
- widget.HeightRequest = (int)(widget.HeightRequest * scale);
- }
- }
-
public override void Dispose ()
{
Dispose (backgroundImage);
diff --git a/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml b/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
index 26b5866a02..b39dcd0319 100644
--- a/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
+++ b/main/src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml
@@ -81,11 +81,11 @@
</ExtensionPoint>
<Extension path = "/MonoDevelop/Ide/ProjectTemplates">
- <ProjectTemplate id = "AspNet-EmptyProject"
+ <ProjectTemplate id = "MonoDevelop.AspNet.EmptyProject"
file = "Templates/Projects/EmptyProject.xpt.xml" />
- <ProjectTemplate id = "AspNet-MvcProject"
+ <ProjectTemplate id = "MonoDevelop.AspNet.MvcProject"
file = "Templates/Projects/MvcProject.xpt.xml" />
- <ProjectTemplate id = "AspNet-WebApplication"
+ <ProjectTemplate id = "MonoDevelop.AspNet.WebApplication"
file = "Templates/Projects/WebFormsProject.xpt.xml"/>
</Extension>
@@ -265,10 +265,6 @@
<NodeBuilder id="AspNetFolderNodeBuilderExtension" class = "MonoDevelop.AspNet.ProjectPad.AspNetFolderNodeBuilderExtension"/>
</Extension>
- <Extension path = "/MonoDevelop/SourceEditor2/CustomModes">
- <SyntaxMode mimeTypes="application/x-aspx" class="MonoDevelop.AspNet.WebForms.WebFormsSyntaxMode"/>
- </Extension>
-
<Extension path = "/MonoDevelop/Core/MimeTypes">
<MimeType id="application/x-aspx" _description="ASP.NET page" icon="md-html-file-icon" isText="true">
<File pattern="*.aspx" />
diff --git a/main/src/addins/AspNet/Razor/Generator/PreprocessedCSharpRazorCodeParser.cs b/main/src/addins/AspNet/Razor/Generator/PreprocessedCSharpRazorCodeParser.cs
index b82323703d..1c8a5cf256 100644
--- a/main/src/addins/AspNet/Razor/Generator/PreprocessedCSharpRazorCodeParser.cs
+++ b/main/src/addins/AspNet/Razor/Generator/PreprocessedCSharpRazorCodeParser.cs
@@ -16,6 +16,7 @@ using System.Web.Razor.Generator;
using System.Web.Razor.Parser;
using System.Web.Razor.Parser.SyntaxTree;
using System.Web.Razor.Text;
+using MonoDevelop.Core;
namespace MonoDevelop.AspNet.Razor.Generator
{
@@ -41,7 +42,7 @@ namespace MonoDevelop.AspNet.Razor.Generator
if (split.Length == 1) {
return new PropertyCodeGenerator (split[0], "Model");
}
- Context.OnError (l, string.Format ("The '{0}' directive requires exactly one argument", ModelKeyword));
+ Context.OnError (l, GettextCatalog.GetString ("The '{0}' directive requires exactly one argument", ModelKeyword));
return null;
});
}
@@ -53,7 +54,7 @@ namespace MonoDevelop.AspNet.Razor.Generator
if (split.Length == 2) {
return new PropertyCodeGenerator (split[0], split[1]);
}
- Context.OnError (l, string.Format ("The '{0}' directive requires exactly two arguments", PropertyKeyword));
+ Context.OnError (l, GettextCatalog.GetString ("The '{0}' directive requires exactly two arguments", PropertyKeyword));
return null;
});
}
@@ -63,7 +64,7 @@ namespace MonoDevelop.AspNet.Razor.Generator
ValueDirective (ClassKeyword, true, (s, l) => {
var split = GetArgumentWords (s);
if (split.Length != 1 && split.Length != 2) {
- Context.OnError (l, string.Format ("The '{0}' directive requires one or two arguments", ClassKeyword));
+ Context.OnError (l, GettextCatalog.GetString ("The '{0}' directive requires one or two arguments", ClassKeyword));
return null;
}
string name = null, access = null;
@@ -74,7 +75,7 @@ namespace MonoDevelop.AspNet.Razor.Generator
}
if (split.Length == 2) {
if (access == null) {
- string err = "If '{0}' directive has two arguments, the first must be 'public' or 'internal'.";
+ string err = GettextCatalog.GetString ("If '{0}' directive has two arguments, the first must be 'public' or 'internal'.");
Context.OnError (l, string.Format (err, ClassKeyword));
return null;
}
@@ -97,12 +98,12 @@ namespace MonoDevelop.AspNet.Razor.Generator
if (checkOne && !directives.Add (keyword)) {
Context.OnError (
CurrentLocation,
- string.Format ("Only one '{0}' directive is permitted", keyword)
+ GettextCatalog.GetString ("Only one '{0}' directive is permitted", keyword)
);
}
SourceLocation location = CurrentLocation;
BaseTypeDirective (
- string.Format ("The '{0}' directive must have a value", keyword),
+ GettextCatalog.GetString ("The '{0}' directive must have a value", keyword),
s => s != null ? valueParsed (s, location) : null
);
}
diff --git a/main/src/addins/AspNet/Razor/Generator/RazorTemplatePreprocessor.cs b/main/src/addins/AspNet/Razor/Generator/RazorTemplatePreprocessor.cs
index 28136349c2..402e78090d 100644
--- a/main/src/addins/AspNet/Razor/Generator/RazorTemplatePreprocessor.cs
+++ b/main/src/addins/AspNet/Razor/Generator/RazorTemplatePreprocessor.cs
@@ -51,7 +51,7 @@ namespace MonoDevelop.AspNet.Razor.Generator
static void GenerateInternal (ProgressMonitor monitor, ProjectFile file, SingleFileCustomToolResult result)
{
if (file.Project.SupportedLanguages.All (l => l != "C#")) {
- const string msg = "Razor templates are only supported in C# projects";
+ string msg = GettextCatalog.GetString ("Razor templates are only supported in C# projects");
result.Errors.Add (new CompilerError (file.Name, -1, -1, null, msg));
monitor.Log.WriteLine (msg);
return;
diff --git a/main/src/addins/AspNet/Razor/RazorCSharpEditorExtension.cs b/main/src/addins/AspNet/Razor/RazorCSharpEditorExtension.cs
index cec88ae560..1fc3994145 100644
--- a/main/src/addins/AspNet/Razor/RazorCSharpEditorExtension.cs
+++ b/main/src/addins/AspNet/Razor/RazorCSharpEditorExtension.cs
@@ -242,11 +242,11 @@ namespace MonoDevelop.AspNet.Razor
XObject prevNode;
bool updateNeeded;
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
Tracker.UpdateEngine ();
if (razorDocument == null)
- return await NonCSharpCompletion (descriptor);
+ return NonCSharpCompletion (descriptor);
var n = Tracker.Engine.Nodes.Peek ();
if (prevNode is RazorExpression && !(n is RazorExpression))
@@ -263,20 +263,20 @@ namespace MonoDevelop.AspNet.Razor
// Rule out Razor comments, html, transition sign (@) and e-mail addresses
if (state is RazorCommentState || (previousChar != '@' && !(state is RazorState)) || descriptor.KeyChar == '@'
|| (previousChar == '@' && Char.IsLetterOrDigit (beforePrevious)))
- return await NonCSharpCompletion (descriptor);
+ return NonCSharpCompletion (descriptor);
// Determine if we are inside generics
if (previousChar == '<') {
var codeState = state as RazorCodeFragmentState;
if (codeState == null || !codeState.IsInsideGenerics)
- return await NonCSharpCompletion (descriptor);
+ return NonCSharpCompletion (descriptor);
}
// Determine whether we begin an html tag or generics
else if (descriptor.KeyChar == '<' && (n is XElement || !Char.IsLetterOrDigit (previousChar)))
- return await NonCSharpCompletion (descriptor);
+ return NonCSharpCompletion (descriptor);
// Determine whether we are inside html text or in code
else if (previousChar != '@' && n is XElement && !(state is RazorSpeculativeState) && !(state is RazorExpressionState))
- return await NonCSharpCompletion (descriptor);
+ return NonCSharpCompletion (descriptor);
// We're in C# context
InitializeCodeCompletion ();
@@ -284,7 +284,7 @@ namespace MonoDevelop.AspNet.Razor
bool result;
try {
- result = await base.KeyPress (descriptor);
+ result = base.KeyPress (descriptor);
if (/*EnableParameterInsight &&*/ (descriptor.KeyChar == ',' || descriptor.KeyChar == ')') && CanRunParameterCompletionCommand ())
base.RunParameterCompletionCommand ();
} finally {
@@ -310,7 +310,7 @@ namespace MonoDevelop.AspNet.Razor
CompletionWidget = defaultCompletionWidget;
}
- Task<bool> NonCSharpCompletion (KeyDescriptor descriptor)
+ bool NonCSharpCompletion (KeyDescriptor descriptor)
{
isInCSharpContext = false;
return base.KeyPress (descriptor);
diff --git a/main/src/addins/AspNet/Razor/RazorCompletion.cs b/main/src/addins/AspNet/Razor/RazorCompletion.cs
index 0fc246cb4c..953209bfa5 100644
--- a/main/src/addins/AspNet/Razor/RazorCompletion.cs
+++ b/main/src/addins/AspNet/Razor/RazorCompletion.cs
@@ -43,37 +43,37 @@ namespace MonoDevelop.AspNet.Razor
{
string icon = "md-keyword";
- list.Add ("helper", icon, "Defines a helper");
- list.Add ("functions", icon, "Defines a region of class members");
- list.Add ("using", icon, "Imports a namespace");
+ list.Add ("helper", icon, GettextCatalog.GetString ("Defines a helper"));
+ list.Add ("functions", icon, GettextCatalog.GetString ("Defines a region of class members"));
+ list.Add ("using", icon, GettextCatalog.GetString ("Imports a namespace"));
if (kind == RazorHostKind.WebCode)
return;
- list.Add ("inherits", icon, "Defines a base class of the view");
- list.Add ("model", icon, "References a strongly-typed model");
+ list.Add ("inherits", icon, GettextCatalog.GetString ("Defines a base class of the view"));
+ list.Add ("model", icon, GettextCatalog.GetString ("References a strongly-typed model"));
if (kind == RazorHostKind.WebPage) {
- list.Add ("layout", icon, "Defines a layout file to use in this view");
- list.Add ("sessionstate", icon, "Defines a sessionstate mode");
- list.Add ("section", icon, "Defines a section");
+ list.Add ("layout", icon, GettextCatalog.GetString ("Defines a layout file to use in this view"));
+ list.Add ("sessionstate", icon, GettextCatalog.GetString ("Defines a sessionstate mode"));
+ list.Add ("section", icon, GettextCatalog.GetString ("Defines a section"));
} else if (kind == RazorHostKind.Template) {
- list.Add ("__class", icon, "Customizes the generated class");
- list.Add ("__property", icon, "Adds a property");
+ list.Add ("__class", icon, GettextCatalog.GetString ("Customizes the generated class"));
+ list.Add ("__property", icon, GettextCatalog.GetString ("Adds a property"));
}
}
static void AddRazorTemplates (CompletionDataList list, RazorHostKind kind)
{
string icon = "md-template";
- list.Add ("inherits", icon, "Template for inherits directive");
- list.Add ("model", icon, "Template for model directive");
- list.Add ("helper", icon, "Template for helper directive");
- list.Add ("functions", icon, "Template for functions directive");
- list.Add ("using", icon, "Template for using statement");
+ list.Add ("inherits", icon, GettextCatalog.GetString ("Template for inherits directive"));
+ list.Add ("model", icon, GettextCatalog.GetString ("Template for model directive"));
+ list.Add ("helper", icon, GettextCatalog.GetString ("Template for helper directive"));
+ list.Add ("functions", icon, GettextCatalog.GetString ("Template for functions directive"));
+ list.Add ("using", icon, GettextCatalog.GetString ("Template for using statement"));
if (kind == RazorHostKind.WebPage) {
- list.Add ("section", icon, "Template for section directive");
+ list.Add ("section", icon, GettextCatalog.GetString ("Template for section directive"));
}
}
diff --git a/main/src/addins/AspNet/WebForms/Parser/WebFormsAttributeValueState.cs b/main/src/addins/AspNet/WebForms/Parser/WebFormsAttributeValueState.cs
index 474089d774..69deb5b576 100644
--- a/main/src/addins/AspNet/WebForms/Parser/WebFormsAttributeValueState.cs
+++ b/main/src/addins/AspNet/WebForms/Parser/WebFormsAttributeValueState.cs
@@ -26,7 +26,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-
+using MonoDevelop.Core;
using MonoDevelop.Xml.Dom;
using MonoDevelop.Xml.Parser;
using MonoDevelop.AspNet.WebForms.Dom;
@@ -79,7 +79,7 @@ namespace MonoDevelop.AspNet.WebForms.Parser
return null;
}
if (c == '@') {
- context.LogError ("Invalid directive location");
+ context.LogError (GettextCatalog.GetString ("Invalid directive location"));
rollback = "<%";
return Parent;
}
@@ -92,7 +92,7 @@ namespace MonoDevelop.AspNet.WebForms.Parser
SetTag (context, AttState.Comment);
return null;
}
- context.LogError ("Malformed server comment");
+ context.LogError (GettextCatalog.GetString ("Malformed server comment"));
rollback = "<%-";
return Parent;
case AttState.Expression:
diff --git a/main/src/addins/AspNet/WebForms/Parser/WebFormsDirectiveState.cs b/main/src/addins/AspNet/WebForms/Parser/WebFormsDirectiveState.cs
index adb91a3091..fe650c3c92 100644
--- a/main/src/addins/AspNet/WebForms/Parser/WebFormsDirectiveState.cs
+++ b/main/src/addins/AspNet/WebForms/Parser/WebFormsDirectiveState.cs
@@ -29,6 +29,7 @@
using System;
using System.Diagnostics;
+using MonoDevelop.Core;
using MonoDevelop.Xml.Parser;
using MonoDevelop.AspNet.WebForms.Dom;
using MonoDevelop.Xml.Dom;
@@ -69,7 +70,7 @@ namespace MonoDevelop.AspNet.WebForms.Parser
}
if (c == '<') {
- context.LogError ("Unexpected '<' in directive.");
+ context.LogError (GettextCatalog.GetString ("Unexpected '<' in directive."));
rollback = string.Empty;
return Parent;
}
@@ -88,7 +89,7 @@ namespace MonoDevelop.AspNet.WebForms.Parser
context.Nodes.Pop ();
if (!directive.IsNamed) {
- context.LogError ("Directive closed prematurely.");
+ context.LogError (GettextCatalog.GetString ("Directive closed prematurely."));
} else {
directive.End (context.Location);
if (context.BuildTree) {
@@ -110,7 +111,7 @@ namespace MonoDevelop.AspNet.WebForms.Parser
return null;
rollback = string.Empty;
- context.LogError ("Unexpected character '" + c + "' in tag.");
+ context.LogError (GettextCatalog.GetString ("Unexpected character '{0}' in tag.", c));
return Parent;
}
}
diff --git a/main/src/addins/AspNet/WebForms/SuggestedHandlerCompletionData.cs b/main/src/addins/AspNet/WebForms/SuggestedHandlerCompletionData.cs
index bc4ad6fe86..9c779f2a55 100644
--- a/main/src/addins/AspNet/WebForms/SuggestedHandlerCompletionData.cs
+++ b/main/src/addins/AspNet/WebForms/SuggestedHandlerCompletionData.cs
@@ -35,8 +35,7 @@ using MonoDevelop.DesignerSupport;
using System.Linq;
using MonoDevelop.Ide.Editor.Extension;
using Microsoft.CodeAnalysis;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.AspNet.WebForms
{
class SuggestedHandlerCompletionData : CompletionData
@@ -76,22 +75,21 @@ namespace MonoDevelop.AspNet.WebForms
}
}
- public override Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
//insert the method name
var buf = window.CompletionWidget;
if (buf != null) {
buf.Replace (window.CodeCompletionContext.TriggerOffset, buf.CaretOffset - window.CodeCompletionContext.TriggerOffset, methodInfo.Name);
- }
-
- //generate the codebehind method
-
- // TODO: Roslyn port.
-// if (codeBehindClassLocation != null && project != null)
-// BindingService.AddMemberToClass (project, codeBehindClass, codeBehindClassLocation, methodInfo, false);
-// else
-// BindingService.AddMemberToClass (project, codeBehindClass, codeBehindClass.Locations.First (), methodInfo, false);
- return Task.FromResult (ka);
+ }
+
+ //generate the codebehind method
+
+ // TODO: Roslyn port.
+// if (codeBehindClassLocation != null && project != null)
+// BindingService.AddMemberToClass (project, codeBehindClass, codeBehindClassLocation, methodInfo, false);
+// else
+// BindingService.AddMemberToClass (project, codeBehindClass, codeBehindClass.Locations.First (), methodInfo, false);
}
}
}
diff --git a/main/src/addins/AspNet/WebForms/WebFormsCodeBehind.cs b/main/src/addins/AspNet/WebForms/WebFormsCodeBehind.cs
index d735e979ca..c26b4b7ab6 100644
--- a/main/src/addins/AspNet/WebForms/WebFormsCodeBehind.cs
+++ b/main/src/addins/AspNet/WebForms/WebFormsCodeBehind.cs
@@ -77,7 +77,7 @@ namespace MonoDevelop.AspNet.WebForms
//parse the ASP.NET file
var parsedDocument = TypeSystemService.ParseFile (project, file.FilePath).Result as WebFormsParsedDocument;
if (parsedDocument == null) {
- result.AddError (string.Format ("Failed to parse file '{0}'", file.Name));
+ result.AddError (GettextCatalog.GetString ("Failed to parse file '{0}'", file.Name));
return result;
}
@@ -162,7 +162,7 @@ namespace MonoDevelop.AspNet.WebForms
LoggingService.LogWarning ("Error resolving master page type", ex);
}
if (string.IsNullOrEmpty (masterTypeName)) {
- var msg = string.Format ("Could not find type for master '{0}'", document.Info.MasterPageTypeVPath);
+ var msg = GettextCatalog.GetString ("Could not find type for master '{0}'", document.Info.MasterPageTypeVPath);
result.AddError (filename, msg);
return result;
}
diff --git a/main/src/addins/AspNet/WebForms/WebFormsDirectiveCompletion.cs b/main/src/addins/AspNet/WebForms/WebFormsDirectiveCompletion.cs
index a7ded63cf7..7092bd87f1 100644
--- a/main/src/addins/AspNet/WebForms/WebFormsDirectiveCompletion.cs
+++ b/main/src/addins/AspNet/WebForms/WebFormsDirectiveCompletion.cs
@@ -66,30 +66,30 @@ namespace MonoDevelop.AspNet.WebForms
CompletionDataList list = new CompletionDataList ();
if (type == WebSubtype.WebForm) {
- list.Add ("Implements", null, "Declare that this page implements an interface.");
- list.Add ("Page", null, "Define properties of this page.");
- list.Add ("PreviousPageType", null, "Strongly type the page's PreviousPage property.");
- list.Add ("MasterType", null, "Strongly type the page's Master property.");
+ list.Add ("Implements", null, GettextCatalog.GetString ("Declare that this page implements an interface."));
+ list.Add ("Page", null, GettextCatalog.GetString ("Define properties of this page."));
+ list.Add ("PreviousPageType", null, GettextCatalog.GetString ("Strongly type the page's PreviousPage property."));
+ list.Add ("MasterType", null, GettextCatalog.GetString ("Strongly type the page's Master property."));
} else if (type == WebSubtype.MasterPage) {
- list.Add ("Implements", null, "Declare that this master page implements an interface.");
- list.Add ("Master", null, "Define properties of this master page.");
- list.Add ("MasterType", null, "Strongly type the page's Master property.");
+ list.Add ("Implements", null, GettextCatalog.GetString ("Declare that this master page implements an interface."));
+ list.Add ("Master", null, GettextCatalog.GetString ("Define properties of this master page."));
+ list.Add ("MasterType", null, GettextCatalog.GetString ("Strongly type the page's Master property."));
} else if (type == WebSubtype.WebControl) {
- list.Add ("Control", null, "Define properties of this user control.");
- list.Add ("Implements", null, "Declare that this control implements an interface.");
+ list.Add ("Control", null, GettextCatalog.GetString ("Define properties of this user control."));
+ list.Add ("Implements", null, GettextCatalog.GetString ("Declare that this control implements an interface."));
} else {
return null;
}
- list.Add ("Assembly", null, "Reference an assembly.");
- list.Add ("Import", null, "Import a namespace.");
+ list.Add ("Assembly", null, GettextCatalog.GetString ("Reference an assembly."));
+ list.Add ("Import", null, GettextCatalog.GetString ("Import a namespace."));
if (type != WebSubtype.MasterPage) {
- list.Add ("OutputCache", null, "Set output caching behaviour.");
+ list.Add ("OutputCache", null, GettextCatalog.GetString ("Set output caching behaviour."));
}
- list.Add ("Reference", null, "Reference a page or user control.");
- list.Add ("Register", null, "Register a user control or custom web controls.");
+ list.Add ("Reference", null, GettextCatalog.GetString ("Reference a page or user control."));
+ list.Add ("Register", null, GettextCatalog.GetString ("Register a user control or custom web controls."));
return list.Count > 0? list : null;
}
diff --git a/main/src/addins/AspNet/WebForms/WebFormsEditorExtension.cs b/main/src/addins/AspNet/WebForms/WebFormsEditorExtension.cs
index 85ecdd8333..317ab2acb8 100644
--- a/main/src/addins/AspNet/WebForms/WebFormsEditorExtension.cs
+++ b/main/src/addins/AspNet/WebForms/WebFormsEditorExtension.cs
@@ -297,19 +297,19 @@ namespace MonoDevelop.AspNet.WebForms
// return documentBuilder.HandleCompletion (defaultEditor, defaultDocumentContext, completionContext, documentInfo, localDocumentInfo, completionChar, ref triggerWordLength);
// }
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
Tracker.UpdateEngine ();
bool isAspExprState = Tracker.Engine.CurrentState is WebFormsExpressionState;
if (documentBuilder == null || !isAspExprState)
- return await base.KeyPress (descriptor);
+ return base.KeyPress (descriptor);
InitializeCodeCompletion ('\0');
// DocumentContext = localDocumentInfo.HiddenDocument;
// Editor = localDocumentInfo.HiddenDocument.Editor;
// CompletionWidget = documentBuilder.CreateCompletionWidget (localDocumentInfo.HiddenDocument.Editor, localDocumentInfo.HiddenDocument, localDocumentInfo);
bool result;
try {
- result = await base.KeyPress (descriptor);
+ result = base.KeyPress (descriptor);
if (PropertyService.Get ("EnableParameterInsight", true) && (descriptor.KeyChar == ',' || descriptor.KeyChar == ')') && CanRunParameterCompletionCommand ()) {
RunParameterCompletionCommand ();
}
@@ -324,7 +324,7 @@ namespace MonoDevelop.AspNet.WebForms
// TODO: Roslyn port
// public override ParameterHintingResult HandleParameterCompletionAsync (CodeCompletionContext completionContext, char completionChar)
// {
-///* if (Tracker.Engine.CurrentState is AspNetExpressionState && documentBuilder != null && localDocumentInfo != null) {
+// /* if (Tracker.Engine.CurrentState is AspNetExpressionState && documentBuilder != null && localDocumentInfo != null) {
// return documentBuilder.HandleParameterCompletion (defaultDocument, completionContext, documentInfo, localDocumentInfo, completionChar);
// }*/
//
diff --git a/main/src/addins/AspNet/WebForms/WebFormsMemberListBuilder.cs b/main/src/addins/AspNet/WebForms/WebFormsMemberListBuilder.cs
index 5ea9c7cba6..c6ddb8ba79 100644
--- a/main/src/addins/AspNet/WebForms/WebFormsMemberListBuilder.cs
+++ b/main/src/addins/AspNet/WebForms/WebFormsMemberListBuilder.cs
@@ -68,7 +68,8 @@ namespace MonoDevelop.AspNet.WebForms
foreach (XElement el in xDocument.Nodes.OfType<XElement> ())
AddMember (el);
} catch (Exception ex) {
- Errors.Add (new Error (ErrorType.Error, "Unknown parser error: " + ex));
+ LoggingService.LogError ("Unknown parser error: {0}", ex);
+ Errors.Add (new Error (ErrorType.Error, GettextCatalog.GetString ("Unknown parser error: {0}", ex.Message)));
}
}
diff --git a/main/src/addins/AspNet/WebForms/WebFormsPageInfo.cs b/main/src/addins/AspNet/WebForms/WebFormsPageInfo.cs
index 5220656f16..3b1cf53a75 100644
--- a/main/src/addins/AspNet/WebForms/WebFormsPageInfo.cs
+++ b/main/src/addins/AspNet/WebForms/WebFormsPageInfo.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
using MonoDevelop.AspNet.Projects;
using MonoDevelop.AspNet.WebForms.Dom;
+using MonoDevelop.Core;
using MonoDevelop.Xml.Dom;
using MonoDevelop.Ide.TypeSystem;
@@ -103,7 +104,7 @@ namespace MonoDevelop.AspNet.WebForms
break;
case "mastertype":
if (MasterPageTypeVPath != null || MasterPageTypeName != null) {
- errors.Add (new Error (ErrorType.Error, "Unexpected second mastertype directive", directive.Region));
+ errors.Add (new Error (ErrorType.Error, GettextCatalog.GetString ("Unexpected second mastertype directive"), directive.Region));
return;
}
MasterPageTypeName = GetAttributeValueCI (directive.Attributes, "typename");
@@ -111,7 +112,7 @@ namespace MonoDevelop.AspNet.WebForms
if (string.IsNullOrEmpty (MasterPageTypeName) == string.IsNullOrEmpty (MasterPageTypeVPath))
errors.Add (new Error (
ErrorType.Error,
- "Mastertype directive must have non-empty 'typename' or 'virtualpath' attribute",
+ GettextCatalog.GetString ("Mastertype directive must have non-empty 'typename' or 'virtualpath' attribute"),
directive.Region
)
);
@@ -138,7 +139,7 @@ namespace MonoDevelop.AspNet.WebForms
else
errors.Add (new Error (
ErrorType.Error,
- "Assembly directive must have non-empty 'name' or 'src' attribute",
+ GettextCatalog.GetString ("Assembly directive must have non-empty 'name' or 'src' attribute"),
directive.Region
)
);
@@ -150,7 +151,7 @@ namespace MonoDevelop.AspNet.WebForms
else
errors.Add (new Error (
ErrorType.Error,
- "Import directive must have non-empty 'namespace' attribute",
+ GettextCatalog.GetString ("Import directive must have non-empty 'namespace' attribute"),
directive.Region
)
);
@@ -162,7 +163,7 @@ namespace MonoDevelop.AspNet.WebForms
else
errors.Add (new Error (
ErrorType.Error,
- "Implements directive must have non-empty 'interface' attribute",
+ GettextCatalog.GetString ("Implements directive must have non-empty 'interface' attribute"),
directive.Region
)
);
@@ -175,7 +176,7 @@ namespace MonoDevelop.AspNet.WebForms
void SetSubtype (WebSubtype type, WebFormsDirective directive, List<Error> errors)
{
if (Subtype != WebSubtype.None) {
- errors.Add (new Error (ErrorType.Error, "Unexpected directive " + directive.Name.FullName, directive.Region));
+ errors.Add (new Error (ErrorType.Error, GettextCatalog.GetString ("Unexpected directive {0}", directive.Name.FullName), directive.Region));
return;
}
diff --git a/main/src/addins/AspNet/WebForms/WebFormsParser.cs b/main/src/addins/AspNet/WebForms/WebFormsParser.cs
index ba38dd44d7..4093d60ccb 100644
--- a/main/src/addins/AspNet/WebForms/WebFormsParser.cs
+++ b/main/src/addins/AspNet/WebForms/WebFormsParser.cs
@@ -58,7 +58,7 @@ namespace MonoDevelop.AspNet.WebForms
parser.Parse (parseOptions.Content.CreateReader ());
} catch (Exception ex) {
LoggingService.LogError ("Unhandled error parsing ASP.NET document '" + (parseOptions.FileName ?? "") + "'", ex);
- errors.Add (new Error (ErrorType.Error, "Unhandled error parsing ASP.NET document: " + ex.Message));
+ errors.Add (new Error (ErrorType.Error, GettextCatalog.GetString ("Unhandled error parsing ASP.NET document: {0}", ex.Message)));
}
// get the errors from the StateEngine parser
@@ -71,10 +71,10 @@ namespace MonoDevelop.AspNet.WebForms
var type = AspNetAppProjectFlavor.DetermineWebSubtype (parseOptions.FileName);
if (type != info.Subtype) {
if (info.Subtype == WebSubtype.None) {
- errors.Add (new Error (ErrorType.Error, "File directive is missing", new DocumentLocation (1, 1)));
+ errors.Add (new Error (ErrorType.Error, GettextCatalog.GetString ("File directive is missing"), new DocumentLocation (1, 1)));
} else {
type = info.Subtype;
- errors.Add (new Error (ErrorType.Warning, "File directive does not match page extension", new DocumentLocation (1, 1)));
+ errors.Add (new Error (ErrorType.Warning, GettextCatalog.GetString ("File directive does not match page extension"), new DocumentLocation (1, 1)));
}
}
diff --git a/main/src/addins/CSharpBinding/CSharpBinding.addin.xml b/main/src/addins/CSharpBinding/CSharpBinding.addin.xml
index c5feafc362..f608360892 100644
--- a/main/src/addins/CSharpBinding/CSharpBinding.addin.xml
+++ b/main/src/addins/CSharpBinding/CSharpBinding.addin.xml
@@ -102,13 +102,13 @@
</Extension>
<Extension path = "/MonoDevelop/Ide/ProjectTemplates">
- <ProjectTemplate id = "CSharpConsoleProject" resource = "ConsoleProject.xpt.xml"/>
- <ProjectTemplate id = "CSharpEmptyProject" resource = "EmptyProject.xpt.xml"/>
- <ProjectTemplate id = "CSharpGtkSharp2Project" resource = "GtkSharp2Project.xpt.xml"/>
- <ProjectTemplate id = "CSharpLibrary" resource = "Library.xpt.xml"/>
- <ProjectTemplate id = "CSharpSharedAssetsProject" resource = "SharedAssetsProject.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.CSharp.ConsoleProject" resource = "ConsoleProject.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.CSharp.EmptyProject" resource = "EmptyProject.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.CSharp.GtkSharp2Project" resource = "GtkSharp2Project.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.CSharp.Library" resource = "Library.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.CSharp.SharedProject" resource = "SharedAssetsProject.xpt.xml"/>
<Condition id="MSBuildTargetIsAvailable" target="$(MSBuildExtensionsPath)\Microsoft\Portable\v4.0\Microsoft.Portable.CSharp.targets">
- <ProjectTemplate id = "CSharpPortableLibrary" resource = "PortableLibrary.xpt.xml" />
+ <ProjectTemplate id = "MonoDevelop.CSharp.PortableLibrary" resource = "PortableLibrary.xpt.xml" />
</Condition>
</Extension>
diff --git a/main/src/addins/CSharpBinding/CSharpBinding.csproj b/main/src/addins/CSharpBinding/CSharpBinding.csproj
index abe265cc2a..7e33495d05 100644
--- a/main/src/addins/CSharpBinding/CSharpBinding.csproj
+++ b/main/src/addins/CSharpBinding/CSharpBinding.csproj
@@ -828,6 +828,7 @@
<Compile Include="MonoDevelop.CSharp.Navigation\FindDerivedSymbolsHandler.cs" />
<Compile Include="MonoDevelop.CSharp.Navigation\FindBaseSymbolsHandler.cs" />
<Compile Include="MonoDevelop.CSharp.Navigation\FindImplementingMembersHandler.cs" />
+ <Compile Include="MonoDevelop.CSharp.Refactoring\ConstructFixer.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Makefile.am" />
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/CreateConstructorGenerator.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/CreateConstructorGenerator.cs
index a14f6603a5..29e0d44547 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/CreateConstructorGenerator.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/CreateConstructorGenerator.cs
@@ -36,6 +36,7 @@ using Microsoft.CodeAnalysis.Simplification;
using ICSharpCode.NRefactory6.CSharp;
using Gtk;
using MonoDevelop.Ide.TypeSystem;
+using ICSharpCode.NRefactory6.CSharp.ExtractMethod;
namespace MonoDevelop.CodeGeneration
{
@@ -115,8 +116,16 @@ namespace MonoDevelop.CodeGeneration
foreach (IPropertySymbol property in Options.EnclosingType.GetMembers ().OfType<IPropertySymbol> ()) {
if (property.IsImplicitlyDeclared)
continue;
- if (property.SetMethod == null)
- continue;
+ if (property.SetMethod == null) {
+ if (property.GetMethod == null)
+ continue;
+ var r = property.GetMethod.DeclaringSyntaxReferences.FirstOrDefault ();
+ if (r == null)
+ continue;
+ var node = r.SyntaxTree.GetRoot ().FindNode (r.Span) as AccessorDeclarationSyntax;
+ if (node == null || node.GetBlockBody () != null)
+ continue;
+ }
yield return property;
}
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/WriteLineGenerator.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/WriteLineGenerator.cs
index f150e59a13..9aed680e48 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/WriteLineGenerator.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/WriteLineGenerator.cs
@@ -126,17 +126,18 @@ namespace MonoDevelop.CodeGeneration
{
var format = new StringBuilder ();
int i = 0;
+ format.Append ("$\"");
foreach (var member in includedMembers) {
if (i > 0)
format.Append (", ");
format.Append (GetName (member));
format.Append ("={");
- format.Append (i++);
+ format.Append (member.ToString ());
format.Append ("}");
}
-
+ format.Append ("\"");
var arguments = new List<ArgumentSyntax> ();
- arguments.Add (SyntaxFactory.Argument (SyntaxFactory.LiteralExpression (SyntaxKind.StringLiteralExpression, SyntaxFactory.Literal (format.ToString ()))));
+ arguments.Add (SyntaxFactory.Argument (SyntaxFactory.ParseExpression (format.ToString ())));
var node =
SyntaxFactory.ExpressionStatement (
SyntaxFactory.InvocationExpression (
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/Resources.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/Resources.cs
index 0f4728caa5..726fab186d 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/Resources.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/Resources.cs
@@ -24,46 +24,47 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
+using MonoDevelop.Core;
namespace ICSharpCode.NRefactory6.CSharp
{
- static class Resources
+ static class Resources
{
- public static string GenerateConstructor = "Generate constructor '{0}({1})'";
- public static string GenerateFieldAssigningConstructor = "Generate field assigning constructor '{0}({1})'";
- public static string GenerateDelegatingConstructor = "Generate delegating constructor '{0}({1})'";
+ public static string GenerateConstructor = GettextCatalog.GetString ("Generate constructor '{0}({1})'");
+ public static string GenerateFieldAssigningConstructor = GettextCatalog.GetString ("Generate field assigning constructor '{0}({1})'");
+ public static string GenerateDelegatingConstructor = GettextCatalog.GetString ("Generate delegating constructor '{0}({1})'");
- public static string GenerateEnumMemberIn = "Generate enum member '{0}' in '{1}'";
- public static string GenerateNewConstructorIn = "Generate constructor in '{0}'";
+ public static string GenerateEnumMemberIn = GettextCatalog.GetString ("Generate enum member '{0}' in '{1}'");
+ public static string GenerateNewConstructorIn = GettextCatalog.GetString ("Generate constructor in '{0}'");
- public static string GenerateAbstractMethod = "Generate abstract method '{0}' in '{1}'";
- public static string GenerateAbstractProperty = "Generate abstract property '{0}' in '{1}'";
- public static string GeneratePropertyIn = "Generate property '{1}.{0}'";
- public static string GenerateMethodIn = "Generate method '{1}.{0}'";
+ public static string GenerateAbstractMethod = GettextCatalog.GetString ("Generate abstract method '{0}' in '{1}'");
+ public static string GenerateAbstractProperty = GettextCatalog.GetString ("Generate abstract property '{0}' in '{1}'");
+ public static string GeneratePropertyIn = GettextCatalog.GetString ("Generate property '{1}.{0}'");
+ public static string GenerateMethodIn = GettextCatalog.GetString ("Generate method '{1}.{0}'");
- public static string GenerateAll = "Generate all";
+ public static string GenerateAll = GettextCatalog.GetString ("Generate all");
- public static string GenerateConstantIn = "Generate constant '{0}' in '{1}'";
- public static string GenerateReadonlyProperty = "Generate read-only property '{1}.{0}'";
- public static string GenerateReadonlyField = "Generate read-only field '{1}.{0}'";
- public static string GenerateFieldIn = "Generate field '{0}' in '{1}'";
- public static string GenerateLocal = "Generate local '{0}'";
+ public static string GenerateConstantIn = GettextCatalog.GetString ("Generate constant '{0}' in '{1}'");
+ public static string GenerateReadonlyProperty = GettextCatalog.GetString ("Generate read-only property '{1}.{0}'");
+ public static string GenerateReadonlyField = GettextCatalog.GetString ("Generate read-only field '{1}.{0}'");
+ public static string GenerateFieldIn = GettextCatalog.GetString ("Generate field '{0}' in '{1}'");
+ public static string GenerateLocal = GettextCatalog.GetString ("Generate local '{0}'");
- public static string ImplementInterface = "Implement interface";
- public static string ImplementInterfaceAbstractly = "Implement interface abstractly";
- public static string ImplementInterfaceExplicitly = "Implement interface explicitly";
- public static string ImplementInterfaceExplicitlyWithDisposePattern = "Implement interface explicitly with Dispose pattern";
- public static string ImplementInterfaceThrough = "Implement interface through '{0}'";
- public static string ImplementInterfaceWithDisposePattern = "Implement interface with Dispose pattern";
+ public static string ImplementInterface = GettextCatalog.GetString ("Implement interface");
+ public static string ImplementInterfaceAbstractly = GettextCatalog.GetString ("Implement interface abstractly");
+ public static string ImplementInterfaceExplicitly = GettextCatalog.GetString ("Implement interface explicitly");
+ public static string ImplementInterfaceExplicitlyWithDisposePattern = GettextCatalog.GetString ("Implement interface explicitly with Dispose pattern");
+ public static string ImplementInterfaceThrough = GettextCatalog.GetString ("Implement interface through '{0}'");
+ public static string ImplementInterfaceWithDisposePattern = GettextCatalog.GetString ("Implement interface with Dispose pattern");
- public static string ImplicitConversionDisplayText = "Generate implicit conversion operator in '{0}'";
- public static string ExplicitConversionDisplayText = "Generate explicit conversion operator in '{0}'";
+ public static string ImplicitConversionDisplayText = GettextCatalog.GetString ("Generate implicit conversion operator in '{0}'");
+ public static string ExplicitConversionDisplayText = GettextCatalog.GetString ("Generate explicit conversion operator in '{0}'");
- public static string GenerateForIn = "Generate {0} for '{1}' in '{2}'";
- public static string GenerateForInNewFile = "Generate {0} for '{1}' in '{2}' (new file)";
- public static string GlobalNamespace = "Global Namespace";
- public static string GenerateNewType = "Generate new type...";
- public static string ToDetectRedundantCalls = "To detect redundant calls";
+ public static string GenerateForIn = GettextCatalog.GetString ("Generate {0} for '{1}' in '{2}'");
+ public static string GenerateForInNewFile = GettextCatalog.GetString ("Generate {0} for '{1}' in '{2}' (new file)");
+ public static string GlobalNamespace = GettextCatalog.GetString ("Global Namespace");
+ public static string GenerateNewType = GettextCatalog.GetString ("Generate new type...");
+ public static string ToDetectRedundantCalls = GettextCatalog.GetString ("To detect redundant calls");
public static string DisposeManagedStateTodo = "TODO: dispose managed state (managed objects).";
public static string FreeUnmanagedResourcesTodo = "TODO: free unmanaged resources (unmanaged objects) and override a finalizer below.";
@@ -74,25 +75,25 @@ namespace ICSharpCode.NRefactory6.CSharp
public static string UncommentTheFollowingIfFinalizerOverriddenTodo = "TODO: uncomment the following line if the finalizer is overridden above.";
- public static string IntroduceConstantFor = "Introduce constant for '{0}'";
- public static string IntroduceConstantForAllOccurrences = "Introduce constant for all occurrences of '{0}'";
- public static string IntroduceFieldFor = "Introduce field for '{0}'";
- public static string IntroduceFieldForAllOccurrences = "Introduce field for all occurrences of '{0}'";
- public static string IntroduceLocalConstantFor = "Introduce local constant for '{0}'";
- public static string IntroduceLocalConstantForAll = "Introduce local constant for all occurrences of '{0}'";
- public static string IntroduceLocalFor = "Introduce local for '{0}'";
- public static string IntroduceLocalForAllOccurrences = "Introduce local for all occurrences of '{0}'";
- public static string IntroduceQueryVariableFor = "Introduce query variable for '{0}'";
- public static string IntroduceQueryVariableForAll = "Introduce query variable for all occurrences of '{0}'";
+ public static string IntroduceConstantFor = GettextCatalog.GetString ("Introduce constant for '{0}'");
+ public static string IntroduceConstantForAllOccurrences = GettextCatalog.GetString ("Introduce constant for all occurrences of '{0}'");
+ public static string IntroduceFieldFor = GettextCatalog.GetString ("Introduce field for '{0}'");
+ public static string IntroduceFieldForAllOccurrences = GettextCatalog.GetString ("Introduce field for all occurrences of '{0}'");
+ public static string IntroduceLocalConstantFor = GettextCatalog.GetString ("Introduce local constant for '{0}'");
+ public static string IntroduceLocalConstantForAll = GettextCatalog.GetString ("Introduce local constant for all occurrences of '{0}'");
+ public static string IntroduceLocalFor = GettextCatalog.GetString ("Introduce local for '{0}'");
+ public static string IntroduceLocalForAllOccurrences = GettextCatalog.GetString ("Introduce local for all occurrences of '{0}'");
+ public static string IntroduceQueryVariableFor = GettextCatalog.GetString ("Introduce query variable for '{0}'");
+ public static string IntroduceQueryVariableForAll = GettextCatalog.GetString ("Introduce query variable for all occurrences of '{0}'");
- public static string OrganizeUsingsWithAccelerator = "_Organize Usings";
- public static string RemoveAndSortUsingsWithAccelerator = "Remove _and Sort Usings";
- public static string SortUsingsWithAccelerator = "_Sort Usings";
- public static string RemoveUnnecessaryUsingsWithAccelerator = "_Remove Unnecessary Usings";
- public static string EncapsulateFieldsUsages = "Encapsulate fields (and use property)";
- public static string EncapsulateFields = "Encapsulate fields (but still use field)";
- public static string EncapsulateFieldUsages = "Encapsulate field: '{0}' (and use property)";
- public static string EncapsulateField = "Encapsulate field: '{0}' (but still use field)";
+ public static string OrganizeUsingsWithAccelerator = GettextCatalog.GetString ("_Organize Usings");
+ public static string RemoveAndSortUsingsWithAccelerator = GettextCatalog.GetString ("Remove _and Sort Usings");
+ public static string SortUsingsWithAccelerator = GettextCatalog.GetString ("_Sort Usings");
+ public static string RemoveUnnecessaryUsingsWithAccelerator = GettextCatalog.GetString ("_Remove Unnecessary Usings");
+ public static string EncapsulateFieldsUsages = GettextCatalog.GetString ("Encapsulate fields (and use property)");
+ public static string EncapsulateFields = GettextCatalog.GetString ("Encapsulate fields (but still use field)");
+ public static string EncapsulateFieldUsages = GettextCatalog.GetString ("Encapsulate field: '{0}' (and use property)");
+ public static string EncapsulateField = GettextCatalog.GetString ("Encapsulate field: '{0}' (but still use field)");
}
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/AnonymousMethodCompletionData.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/AnonymousMethodCompletionData.cs
index 67ec4bda54..a9a0652de2 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/AnonymousMethodCompletionData.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/AnonymousMethodCompletionData.cs
@@ -26,8 +26,7 @@
using System;
using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.CSharp.Formatting;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.CSharp.Completion
{
class AnonymousMethodCompletionData : RoslynCompletionData
@@ -50,16 +49,14 @@ namespace MonoDevelop.CSharp.Completion
return DisplayText.CompareTo(anonymousMethodCompletionData.DisplayText);
}
- public override async Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, Ide.Editor.Extension.KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, Ide.Editor.Extension.KeyDescriptor descriptor)
{
- ka = await base.InsertCompletionText (window, ka, descriptor);
-
- factory.Ext.Editor.GetContent<CSharpTextEditorIndentation> ().DoReSmartIndent ();
- if (this.CompletionText.Contains ("\n")) {
-
- factory.Ext.Editor.GetContent<CSharpTextEditorIndentation> ().DoReSmartIndent (factory.Ext.Editor.GetLine (factory.Ext.Editor.CaretLine).NextLine.Offset);
- }
- return ka;
+ base.InsertCompletionText (window, ref ka, descriptor);
+ factory.Ext.Editor.GetContent<CSharpTextEditorIndentation> ().DoReSmartIndent ();
+ if (this.CompletionText.Contains ("\n")) {
+
+ factory.Ext.Editor.GetContent<CSharpTextEditorIndentation> ().DoReSmartIndent (factory.Ext.Editor.GetLine (factory.Ext.Editor.CaretLine).NextLine.Offset);
+ }
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CSharpCompletionTextEditorExtension.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CSharpCompletionTextEditorExtension.cs
index 0f169a0da1..cfefd65b10 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CSharpCompletionTextEditorExtension.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CSharpCompletionTextEditorExtension.cs
@@ -278,9 +278,9 @@ namespace MonoDevelop.CSharp.Completion
HandleDocumentParsed (null, null);
}
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
- var result = await base.KeyPress (descriptor);
+ bool result = base.KeyPress (descriptor);
if (/*EnableParameterInsight &&*/ (descriptor.KeyChar == ',' || descriptor.KeyChar == ')') && CanRunParameterCompletionCommand ())
base.RunParameterCompletionCommand ();
@@ -362,7 +362,7 @@ namespace MonoDevelop.CSharp.Completion
// timer.Dispose ();
} }
- class CSharpCompletionDataList : CompletionDataList
+ internal class CSharpCompletionDataList : CompletionDataList
{
}
@@ -372,7 +372,7 @@ namespace MonoDevelop.CSharp.Completion
}
- void AddImportCompletionData (CompletionResult completionResult, CSharpCompletionDataList result, RoslynCodeCompletionFactory factory, SemanticModel semanticModel, int position, CancellationToken cancellationToken = default(CancellationToken))
+ internal void AddImportCompletionData (CompletionResult completionResult, CSharpCompletionDataList result, RoslynCodeCompletionFactory factory, SemanticModel semanticModel, int position, CancellationToken cancellationToken = default(CancellationToken))
{
if (result.Count == 0)
return;
@@ -391,6 +391,9 @@ namespace MonoDevelop.CSharp.Completion
if (extensionMethodImport) {
var memberAccess = completionResult.SyntaxContext.TargetToken.Parent as MemberAccessExpressionSyntax;
if (memberAccess != null) {
+ var symbolInfo = completionResult.SyntaxContext.SemanticModel.GetSymbolInfo (memberAccess.Expression);
+ if (symbolInfo.Symbol.Kind == SymbolKind.NamedType)
+ return;
extensionType = completionResult.SyntaxContext.SemanticModel.GetTypeInfo (memberAccess.Expression).Type;
if (extensionType == null) {
return;
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CastCompletionData.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CastCompletionData.cs
index fef480fbc0..91651bd413 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CastCompletionData.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CastCompletionData.cs
@@ -32,8 +32,7 @@ using System.Collections.Generic;
using System.Linq;
using MonoDevelop.Ide.TypeSystem;
using MonoDevelop.Ide.Editor.Extension;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.CSharp.Completion
{
class CastCompletionData : RoslynSymbolCompletionData
@@ -57,18 +56,16 @@ namespace MonoDevelop.CSharp.Completion
return "<span foreground=\"darkgray\">" + description + "</span>";
}
- public override async Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
var editor = factory.Ext.Editor;
var offset = window.CodeCompletionContext.TriggerOffset;
- using (var undo = editor.OpenUndoGroup ()) {
- ka = await base.InsertCompletionText (window, ka, descriptor);
-
- var span = nodeToCast.Span;
- var type = SafeMinimalDisplayString (targetType, semanticModel, nodeToCast.SpanStart, Ambience.LabelFormat);
- editor.ReplaceText (span.Start, span.Length, "((" + type + ")" + nodeToCast + ")");
- }
- return ka;
+ using (var undo = editor.OpenUndoGroup ()) {
+ base.InsertCompletionText (window, ref ka, descriptor);
+ var span = nodeToCast.Span;
+ var type = SafeMinimalDisplayString (targetType, semanticModel, nodeToCast.SpanStart, Ambience.LabelFormat);
+ editor.ReplaceText (span.Start, span.Length, "((" + type + ")" + nodeToCast + ")");
+ }
}
public override bool IsOverload (CompletionData other)
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreateOverrideCompletionData.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreateOverrideCompletionData.cs
index c46cf560a6..7b1cdb3456 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreateOverrideCompletionData.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreateOverrideCompletionData.cs
@@ -35,8 +35,7 @@ using MonoDevelop.Ide.Editor.Extension;
using MonoDevelop.CSharp.Refactoring;
using MonoDevelop.CSharp.Formatting;
using System;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.CSharp.Completion
{
class CreateOverrideCompletionData : RoslynSymbolCompletionData
@@ -94,7 +93,7 @@ namespace MonoDevelop.CSharp.Completion
this.GenerateBody = true;
}
- public override async Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
var editor = ext.Editor;
bool isExplicit = false;
@@ -143,8 +142,7 @@ namespace MonoDevelop.CSharp.Completion
editor.CaretOffset = targetCaretPosition;
}
- await OnTheFlyFormatter.Format (editor, ext.DocumentContext, declarationBegin, declarationBegin + sb.Length);
- return ka;
+ OnTheFlyFormatter.Format (editor, ext.DocumentContext, declarationBegin, declarationBegin + sb.Length);
}
public override bool IsOverload (CompletionData other)
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreatePartialCompletionData.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreatePartialCompletionData.cs
index 743521944b..ea516a9ae7 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreatePartialCompletionData.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/CreatePartialCompletionData.cs
@@ -32,8 +32,7 @@ using MonoDevelop.CSharp.Refactoring;
using MonoDevelop.Ide.TypeSystem;
using MonoDevelop.Ide.Editor.Extension;
using System;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.CSharp.Completion
{
class CreatePartialCompletionData : RoslynSymbolCompletionData
@@ -90,7 +89,7 @@ namespace MonoDevelop.CSharp.Completion
this.GenerateBody = true;
}
- public override async Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
var editor = ext.Editor;
bool isExplicit = false;
@@ -132,9 +131,8 @@ namespace MonoDevelop.CSharp.Completion
editor.CaretOffset = targetCaretPosition;
}
- await OnTheFlyFormatter.Format (editor, ext.DocumentContext, declarationBegin, declarationBegin + sb.Length);
- editor.CaretLine--;
- return ka;
+ OnTheFlyFormatter.Format (editor, ext.DocumentContext, declarationBegin, declarationBegin + sb.Length);
+ editor.CaretLine--;
}
public override bool IsOverload (CompletionData other)
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/EventCreationCompletionData.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/EventCreationCompletionData.cs
index 280a35dc34..47384b7952 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/EventCreationCompletionData.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/EventCreationCompletionData.cs
@@ -68,7 +68,7 @@ namespace MonoDevelop.CSharp.Completion
this.Icon = "md-newmethod";
}
- public override async Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
// insert add/remove event handler code after +=/-=
var editor = factory.Ext.Editor;
@@ -80,7 +80,7 @@ namespace MonoDevelop.CSharp.Completion
var document = IdeApp.Workbench.ActiveDocument;
- var parsedDocument = await document.UpdateParseDocument ();
+ var parsedDocument = document.UpdateParseDocument ().Result;
var semanticModel = parsedDocument.GetAst<SemanticModel> ();
var declaringType = semanticModel.GetEnclosingSymbol<INamedTypeSymbol> (position, default(CancellationToken));
@@ -140,7 +140,7 @@ namespace MonoDevelop.CSharp.Completion
);
editor.StartInsertionMode (options);
- return ka;
+
}
public override bool IsOverload (CompletionData other)
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ImportSymbolCompletionData.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ImportSymbolCompletionData.cs
index bed03c78a0..885eceb1af 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ImportSymbolCompletionData.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ImportSymbolCompletionData.cs
@@ -35,8 +35,7 @@ using MonoDevelop.Components.PropertyGrid.PropertyEditors;
using MonoDevelop.Ide.Editor;
using System.Text;
using ICSharpCode.NRefactory.MonoCSharp;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.CSharp.Completion
{
class ImportSymbolCompletionData : RoslynSymbolCompletionData
@@ -88,7 +87,7 @@ namespace MonoDevelop.CSharp.Completion
if (displayDescription == null) {
Initialize ();
if (generateUsing || insertNamespace) {
- displayDescription = string.Format (GettextCatalog.GetString ("(from '{0}')"), type.ContainingNamespace.Name);
+ displayDescription = string.Format (GettextCatalog.GetString ("(from '{0}')"), type.ContainingNamespace.GetFullName ());
} else {
displayDescription = "";
}
@@ -98,19 +97,19 @@ namespace MonoDevelop.CSharp.Completion
#region IActionCompletionData implementation
- public override async Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor)
{
Initialize ();
- var doc = completionExt.DocumentContext;
-
- ka = await base.InsertCompletionText (window, ka, descriptor);
- using (var undo = completionExt.Editor.OpenUndoGroup ()) {
- if (!window.WasShiftPressed && generateUsing) {
- AddGlobalNamespaceImport (completionExt.Editor, doc, type.ContainingNamespace.ToDisplayString (SymbolDisplayFormat.CSharpErrorMessageFormat));
- }
- }
- ka |= KeyActions.Ignore;
- return ka;
+ var doc = completionExt.DocumentContext;
+
+ base.InsertCompletionText (window, ref ka, descriptor);
+
+ using (var undo = completionExt.Editor.OpenUndoGroup ()) {
+ if (!window.WasShiftPressed && generateUsing) {
+ AddGlobalNamespaceImport (completionExt.Editor, doc, type.ContainingNamespace.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat));
+ }
+ }
+ ka |= KeyActions.Ignore;
}
static void AddGlobalNamespaceImport (MonoDevelop.Ide.Editor.TextEditor editor, DocumentContext context, string nsName)
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ProtocolCompletionData.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ProtocolCompletionData.cs
index d7b4fc55b3..2fa3acb6b4 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ProtocolCompletionData.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/ProtocolCompletionData.cs
@@ -33,8 +33,7 @@ using Microsoft.CodeAnalysis;
using MonoDevelop.CSharp.Refactoring;
using System.Linq;
using MonoDevelop.CSharp.Formatting;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.CSharp.Completion
{
class ProtocolCompletionData : RoslynSymbolCompletionData
@@ -131,7 +130,7 @@ namespace MonoDevelop.CSharp.Completion
this.GenerateBody = true;
}
- public override async Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
var editor = ext.Editor;
bool isExplicit = false;
@@ -180,8 +179,7 @@ namespace MonoDevelop.CSharp.Completion
editor.CaretOffset = targetCaretPosition;
}
- await OnTheFlyFormatter.Format (editor, ext.DocumentContext, declarationBegin, declarationBegin + sb.Length);
- return ka;
+ OnTheFlyFormatter.Format (editor, ext.DocumentContext, declarationBegin, declarationBegin + sb.Length);
}
}
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynCodeCompletionFactory.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynCodeCompletionFactory.cs
index 97da9f54f7..2a6095366f 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynCodeCompletionFactory.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynCodeCompletionFactory.cs
@@ -194,7 +194,7 @@ namespace MonoDevelop.CSharp.Completion
// return sig.GetKeywordTooltip (title, null);
// }
- public override Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor)
{
var currentWord = GetCurrentWord (window, descriptor);
var text = CompletionText;
@@ -204,7 +204,6 @@ namespace MonoDevelop.CSharp.Completion
text = text.Substring (1);
window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, currentWord, text);
- return Task.FromResult (ka);
}
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs
index 9e1c7aec40..6b0520948c 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs
@@ -175,7 +175,7 @@ namespace MonoDevelop.CSharp.Completion
});
}
- public override Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, MonoDevelop.Ide.Editor.Extension.KeyDescriptor descriptor)
{
string partialWord = GetCurrentWord (window, descriptor);
int skipChars = 0;
@@ -311,7 +311,6 @@ namespace MonoDevelop.CSharp.Completion
ext.RunCompletionCommand ();
});
}
- return Task.FromResult (ka);
}
static bool IsBracketAlreadyInserted (CSharpCompletionTextEditorExtension ext, IMethodSymbol method)
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionPanelWidget.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionPanelWidget.cs
index a5e8616ce9..0053f925b9 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionPanelWidget.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionPanelWidget.cs
@@ -55,19 +55,13 @@ namespace MonoDevelop.CSharp.Diagnostics.InconsistentNaming
var ct1 = new CellRendererText ();
var col1 = treeviewConventions.AppendColumn (GettextCatalog.GetString ("Rule"), ct1);
col1.Expand = true;
- col1.SetCellDataFunc (ct1, delegate (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) {
- var rule = (NameConventionRule)model.GetValue (iter, 0);
- ct1.Text = rule.Name;
- });
+ col1.SetCellDataFunc (ct1, NameConventionRuleNameDataFunc);
var ct2 = new CellRendererText ();
var col2 = treeviewConventions.AppendColumn (GettextCatalog.GetString ("Example"), ct2);
col2.Expand = true;
- col2.SetCellDataFunc (ct2, delegate (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) {
- var rule = (NameConventionRule)model.GetValue (iter, 0);
- ct2.Text = rule.GetPreview ();
- });
+ col2.SetCellDataFunc (ct2, NameConventionRulePreviewDataFunc);
treeviewConventions.Model = treeStore;
treeviewConventions.Selection.Changed += HandleSelectionChanged;
@@ -79,6 +73,18 @@ namespace MonoDevelop.CSharp.Diagnostics.InconsistentNaming
HandleSelectionChanged (null, null);
}
+ static void NameConventionRuleNameDataFunc (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
+ {
+ var rule = (NameConventionRule)model.GetValue (iter, 0);
+ ((CellRendererText)cell).Text = rule.Name;
+ }
+
+ static void NameConventionRulePreviewDataFunc (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
+ {
+ var rule = (NameConventionRule)model.GetValue (iter, 0);
+ ((CellRendererText)cell).Text = rule.GetPreview ();
+ }
+
void HandleSelectionChanged (object sender, EventArgs e)
{
TreeIter iter;
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/Completion/ContextHandler/DelegateCreationContextHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/Completion/ContextHandler/DelegateCreationContextHandler.cs
index 51587c77da..74edda34ae 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/Completion/ContextHandler/DelegateCreationContextHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Features/Completion/ContextHandler/DelegateCreationContextHandler.cs
@@ -86,14 +86,12 @@ namespace ICSharpCode.NRefactory6.CSharp.Completion
var enclosingType = model.GetEnclosingNamedType (position, cancellationToken);
if (enclosingType == null)
return Task.FromResult (Enumerable.Empty<CompletionData> ());
- var memberMethods = enclosingType.GetMembers ().OfType<IMethodSymbol> ().Where (m => m.MethodKind == MethodKind.Ordinary).ToArray ();
var list = new List<CompletionData> ();
foreach (var type in ctx.InferredTypes) {
if (type.TypeKind != TypeKind.Delegate)
continue;
- AddCompatibleMethods (engine, list, type, memberMethods, cancellationToken);
string delegateName = null;
@@ -109,16 +107,6 @@ namespace ICSharpCode.NRefactory6.CSharp.Completion
return Task.FromResult ((IEnumerable<CompletionData>)list);
}
- void AddCompatibleMethods (CompletionEngine engine, List<CompletionData> list, ITypeSymbol delegateType, IMethodSymbol [] memberMethods, CancellationToken cancellationToken)
- {
- var delegateMethod = delegateType.GetDelegateInvokeMethod ();
- foreach (var method in memberMethods) {
- if (method.ReturnType.Equals (delegateMethod.ReturnType) && SignatureComparer.HaveSameSignature (delegateMethod.Parameters, method.Parameters, false, false)) {
- list.Add (engine.Factory.CreateExistingMethodDelegate (this, method));
- }
- }
- }
-
static string GuessEventHandlerBaseName (SyntaxNode node, TypeDeclarationSyntax containingTypeDeclaration)
{
var addAssign = node as AssignmentExpressionSyntax;
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs
index df1c115eae..cbf4c1584d 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs
@@ -696,7 +696,7 @@ namespace MonoDevelop.CSharp.Formatting
return info.GetValue (profile, null);
}
- static void RenderIcon (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
+ static void RenderIcon (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
{
var pixbufCellRenderer = (CellRendererImage)cell;
if (model.IterHasChild (iter)) {
@@ -706,7 +706,7 @@ namespace MonoDevelop.CSharp.Formatting
}
}
- void ComboboxDataFunc (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
+ static void ComboboxDataFunc (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
{
var cellRenderer = (CellRendererCombo)cell;
var info = GetProperty (model, iter);
@@ -714,17 +714,21 @@ namespace MonoDevelop.CSharp.Formatting
cellRenderer.Text = "<invalid>";
return;
}
+
+ var profile = ((CSharpFormattingProfileDialog)col.TreeView.Toplevel).profile;
object value = info.GetValue (profile, null);
cellRenderer.Text = value is Enum ? TranslateValue (value) : value.ToString ();
}
- void ToggleDataFunc (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
+ static void ToggleDataFunc (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
{
var cellRenderer = (CellRendererToggle)cell;
var info = GetProperty (model, iter);
if (info == null || info.PropertyType != typeof(bool))
return;
+
+ var profile = ((CSharpFormattingProfileDialog)col.TreeView.Toplevel).profile;
bool value = (bool)info.GetValue (profile, null);
cellRenderer.Active = value;
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextEditorIndentation.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextEditorIndentation.cs
index 61b59d9dd9..83290e9f36 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextEditorIndentation.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpTextEditorIndentation.cs
@@ -45,7 +45,6 @@ using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Options;
using MonoDevelop.Refactoring;
-using System.Threading.Tasks;
namespace MonoDevelop.CSharp.Formatting
{
@@ -367,7 +366,7 @@ namespace MonoDevelop.CSharp.Formatting
}
}
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
completionWindowWasVisible = CompletionWindowManager.IsVisible;
cursorPositionBeforeKeyPress = Editor.CaretOffset;
@@ -383,7 +382,7 @@ namespace MonoDevelop.CSharp.Formatting
"SmartSemicolonPlacement",
false
) && !(stateTracker.IsInsideComment || stateTracker.IsInsideString)) {
- var retval = await base.KeyPress (descriptor);
+ bool retval = base.KeyPress (descriptor);
var curLine = Editor.GetLine (Editor.CaretLine);
string text = Editor.GetTextAt (curLine);
if (!(text.EndsWith (";", StringComparison.Ordinal) || text.Trim ().StartsWith ("for", StringComparison.Ordinal))) {
@@ -394,13 +393,13 @@ namespace MonoDevelop.CSharp.Formatting
Editor.RemoveText (Editor.CaretOffset - 1, 1);
Editor.CaretOffset = guessedOffset;
lastInsertedSemicolon = Editor.CaretOffset + 1;
- retval = await base.KeyPress (descriptor);
+ retval = base.KeyPress (descriptor);
}
}
}
using (var undo = Editor.OpenUndoGroup ()) {
if (OnTheFlyFormatting && Editor != null && Editor.EditMode == EditMode.Edit) {
- await OnTheFlyFormatter.FormatStatmentAt (Editor, DocumentContext, Editor.CaretLocation, optionSet: optionSet);
+ OnTheFlyFormatter.FormatStatmentAt (Editor, DocumentContext, Editor.CaretLocation, optionSet: optionSet);
}
}
return retval;
@@ -428,7 +427,7 @@ namespace MonoDevelop.CSharp.Formatting
SafeUpdateIndentEngine (Editor.CaretOffset);
if (!stateTracker.IsInsideOrdinaryCommentOrString) {
if (descriptor.KeyChar == '@') {
- var retval = await base.KeyPress (descriptor);
+ var retval = base.KeyPress (descriptor);
int cursor = Editor.CaretOffset;
if (cursor < Editor.Length && Editor.GetCharAt (cursor) == '"')
ConvertNormalToVerbatimString (Editor, cursor + 1);
@@ -462,7 +461,7 @@ namespace MonoDevelop.CSharp.Formatting
bool automaticReindent;
// need to be outside of an undo group - otherwise it interferes with other text editor extension
// esp. the documentation insertion undo steps.
- retval = await base.KeyPress (descriptor);
+ retval = base.KeyPress (descriptor);
//handle inserted characters
@@ -516,7 +515,7 @@ namespace MonoDevelop.CSharp.Formatting
}
}
- await HandleOnTheFlyFormatting (descriptor);
+ HandleOnTheFlyFormatting (descriptor);
SafeUpdateIndentEngine (Editor.CaretOffset);
lastCharInserted = '\0';
CheckXmlCommentCloseTag (descriptor.KeyChar);
@@ -524,7 +523,7 @@ namespace MonoDevelop.CSharp.Formatting
}
if (Editor.Options.IndentStyle == IndentStyle.Auto && DefaultSourceEditorOptions.Instance.TabIsReindent && descriptor.SpecialKey == SpecialKey.Tab) {
- bool retval = await base.KeyPress (descriptor);
+ bool retval = base.KeyPress (descriptor);
DoReSmartIndent ();
CheckXmlCommentCloseTag (descriptor.KeyChar);
return retval;
@@ -532,7 +531,7 @@ namespace MonoDevelop.CSharp.Formatting
//pass through to the base class, which actually inserts the character
//and calls HandleCodeCompletion etc to handles completion
- var result = await base.KeyPress (descriptor);
+ var result = base.KeyPress (descriptor);
if (!indentationDisabled && (descriptor.SpecialKey == SpecialKey.Return)) {
DoReSmartIndent ();
@@ -540,12 +539,12 @@ namespace MonoDevelop.CSharp.Formatting
CheckXmlCommentCloseTag (descriptor.KeyChar);
- await HandleOnTheFlyFormatting (descriptor);
+ HandleOnTheFlyFormatting (descriptor);
return result;
}
- async Task HandleOnTheFlyFormatting (KeyDescriptor descriptor)
+ void HandleOnTheFlyFormatting (KeyDescriptor descriptor)
{
if (descriptor.KeyChar == '{')
return;
@@ -566,7 +565,7 @@ namespace MonoDevelop.CSharp.Formatting
return;
using (var undo = Editor.OpenUndoGroup ()) {
if (OnTheFlyFormatting && Editor != null && Editor.EditMode == EditMode.Edit) {
- await OnTheFlyFormatter.FormatStatmentAt (Editor, DocumentContext, Editor.CaretLocation, optionSet: optionSet);
+ OnTheFlyFormatter.FormatStatmentAt (Editor, DocumentContext, Editor.CaretLocation, optionSet: optionSet);
}
}
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs
index 218be22afa..049c9906fd 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs
@@ -39,33 +39,32 @@ using Microsoft.CodeAnalysis.Text;
using MonoDevelop.Ide.Gui.Content;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.Options;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.CSharp.Formatting
{
static class OnTheFlyFormatter
{
- public static Task Format (TextEditor editor, DocumentContext context)
+ public static void Format (TextEditor editor, DocumentContext context)
{
- return Format (editor, context, 0, editor.Length);
+ Format (editor, context, 0, editor.Length);
}
- public static Task Format (TextEditor editor, DocumentContext context, int startOffset, int endOffset, bool exact = true, OptionSet optionSet = null)
+ public static void Format (TextEditor editor, DocumentContext context, int startOffset, int endOffset, bool exact = true, OptionSet optionSet = null)
{
var policyParent = context.Project != null ? context.Project.Policies : PolicyService.DefaultPolicies;
var mimeTypeChain = DesktopService.GetMimeTypeInheritanceChain (CSharpFormatter.MimeType);
- return Format (policyParent, mimeTypeChain, editor, context, startOffset, endOffset, exact, optionSet: optionSet);
+ Format (policyParent, mimeTypeChain, editor, context, startOffset, endOffset, exact, optionSet: optionSet);
}
- public static Task FormatStatmentAt (TextEditor editor, DocumentContext context, MonoDevelop.Ide.Editor.DocumentLocation location, OptionSet optionSet = null)
+ public static void FormatStatmentAt (TextEditor editor, DocumentContext context, MonoDevelop.Ide.Editor.DocumentLocation location, OptionSet optionSet = null)
{
var offset = editor.LocationToOffset (location);
var policyParent = context.Project != null ? context.Project.Policies : PolicyService.DefaultPolicies;
var mimeTypeChain = DesktopService.GetMimeTypeInheritanceChain (CSharpFormatter.MimeType);
- return Format (policyParent, mimeTypeChain, editor, context, offset, offset, false, true, optionSet: optionSet);
+ Format (policyParent, mimeTypeChain, editor, context, offset, offset, false, true, optionSet: optionSet);
}
- static async Task Format (PolicyContainer policyParent, IEnumerable<string> mimeTypeChain, TextEditor editor, DocumentContext context, int startOffset, int endOffset, bool exact, bool formatLastStatementOnly = false, OptionSet optionSet = null)
+ static void Format (PolicyContainer policyParent, IEnumerable<string> mimeTypeChain, TextEditor editor, DocumentContext context, int startOffset, int endOffset, bool exact, bool formatLastStatementOnly = false, OptionSet optionSet = null)
{
TextSpan span;
if (exact) {
@@ -100,8 +99,8 @@ namespace MonoDevelop.CSharp.Formatting
optionSet = policy.CreateOptions (textPolicy);
}
- var doc = await Formatter.FormatAsync (analysisDocument, span, optionSet);
- var newTree = await doc.GetSyntaxTreeAsync ();
+ var doc = Formatter.FormatAsync (analysisDocument, span, optionSet).Result;
+ var newTree = doc.GetSyntaxTreeAsync ().Result;
var caretOffset = editor.CaretOffset;
int delta = 0;
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindBaseSymbolsHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindBaseSymbolsHandler.cs
index 8024897ab8..e7b2bde6aa 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindBaseSymbolsHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindBaseSymbolsHandler.cs
@@ -48,8 +48,15 @@ namespace MonoDevelop.CSharp.Navigation
using (var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true)) {
var foundSymbol = sym.OverriddenMember ();
while (foundSymbol != null) {
- foreach (var loc in foundSymbol.Locations)
+ foreach (var loc in foundSymbol.Locations) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
+
+ if (loc.SourceTree == null)
+ continue;
+
monitor.ReportResult (new MemberReference (foundSymbol, loc.SourceTree.FilePath, loc.SourceSpan.Start, loc.SourceSpan.Length));
+ }
foundSymbol = foundSymbol.OverriddenMember ();
}
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindDerivedSymbolsHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindDerivedSymbolsHandler.cs
index 44e0cded3a..e6ca8cef4c 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindDerivedSymbolsHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindDerivedSymbolsHandler.cs
@@ -69,24 +69,29 @@ namespace MonoDevelop.CSharp.Refactoring
Task.Run (async delegate {
using (var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true)) {
IEnumerable<ISymbol> result;
- if (symbol.ContainingType != null && symbol.ContainingType.TypeKind == TypeKind.Interface) {
- result = await SymbolFinder.FindImplementationsAsync (symbol, TypeSystemService.Workspace.CurrentSolution).ConfigureAwait (false);
- } else if (symbol.Kind == SymbolKind.NamedType) {
- var type = (INamedTypeSymbol)symbol;
- if (type.TypeKind == TypeKind.Interface) {
-
- result = (await SymbolFinder.FindImplementationsAsync (type, TypeSystemService.Workspace.CurrentSolution).ConfigureAwait (false)).Cast<ISymbol> ().Concat (
- await FindInterfaceImplementaitonsAsync (type, TypeSystemService.Workspace.CurrentSolution).ConfigureAwait (false)
- );
+ try {
+ if (symbol.ContainingType != null && symbol.ContainingType.TypeKind == TypeKind.Interface) {
+ result = await SymbolFinder.FindImplementationsAsync (symbol, TypeSystemService.Workspace.CurrentSolution, cancellationToken: monitor.CancellationToken).ConfigureAwait (false);
+ } else if (symbol.Kind == SymbolKind.NamedType) {
+ var type = (INamedTypeSymbol)symbol;
+ if (type.TypeKind == TypeKind.Interface) {
+
+ result = (await SymbolFinder.FindImplementationsAsync (type, TypeSystemService.Workspace.CurrentSolution, cancellationToken: monitor.CancellationToken).ConfigureAwait (false)).Cast<ISymbol> ().Concat (
+ await FindInterfaceImplementaitonsAsync (type, TypeSystemService.Workspace.CurrentSolution, monitor.CancellationToken).ConfigureAwait (false)
+ );
+ } else {
+ result = (await SymbolFinder.FindDerivedClassesAsync (type, TypeSystemService.Workspace.CurrentSolution, cancellationToken: monitor.CancellationToken).ConfigureAwait (false)).Cast<ISymbol> ();
+ }
} else {
- result = (await SymbolFinder.FindDerivedClassesAsync (type, TypeSystemService.Workspace.CurrentSolution).ConfigureAwait (false)).Cast<ISymbol> ();
+ result = await SymbolFinder.FindOverridesAsync (symbol, TypeSystemService.Workspace.CurrentSolution, cancellationToken: monitor.CancellationToken).ConfigureAwait (false);
}
- } else {
- result = await SymbolFinder.FindOverridesAsync (symbol, TypeSystemService.Workspace.CurrentSolution).ConfigureAwait (false);
- }
- foreach (var foundSymbol in result) {
- foreach (var loc in foundSymbol.Locations)
- monitor.ReportResult (new MemberReference (foundSymbol, loc.SourceTree.FilePath, loc.SourceSpan.Start, loc.SourceSpan.Length));
+ foreach (var foundSymbol in result) {
+ foreach (var loc in foundSymbol.Locations) {
+ monitor.CancellationToken.ThrowIfCancellationRequested ();
+ monitor.ReportResult (new MemberReference (foundSymbol, loc.SourceTree.FilePath, loc.SourceSpan.Start, loc.SourceSpan.Length));
+ }
+ }
+ } catch (OperationCanceledException) {
}
}
});
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindExtensionMethodsHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindExtensionMethodsHandler.cs
index e759081e67..4091082d63 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindExtensionMethodsHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindExtensionMethodsHandler.cs
@@ -72,11 +72,14 @@ namespace MonoDevelop.CSharp.Navigation
if (symType == null)
return;
using (var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true)) {
- foreach (var type in compilation.Assembly.GlobalNamespace.GetAllTypes ()) {
+ foreach (var type in compilation.Assembly.GlobalNamespace.GetAllTypes (monitor.CancellationToken)) {
if (!type.MightContainExtensionMethods)
continue;
foreach (var extMethod in type.GetMembers ().OfType<IMethodSymbol> ().Where (method => method.IsExtensionMethod)) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ break;
+
var reducedMethod = extMethod.ReduceExtensionMethod (symType);
if (reducedMethod != null) {
var loc = extMethod.Locations.First ();
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindImplementingMembersHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindImplementingMembersHandler.cs
index d8830eed5f..c37c5a4362 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindImplementingMembersHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindImplementingMembersHandler.cs
@@ -80,6 +80,8 @@ namespace MonoDevelop.CSharp.Navigation
if (implementingType == null)
return;
foreach (var interfaceMember in interfaceType.GetMembers ()) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
var impl = implementingType.FindImplementationForInterfaceMember (interfaceMember);
if (impl == null)
continue;
@@ -89,6 +91,9 @@ namespace MonoDevelop.CSharp.Navigation
foreach (var iFace in interfaceType.AllInterfaces) {
foreach (var interfaceMember in iFace.GetMembers ()) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
+
var impl = implementingType.FindImplementationForInterfaceMember (interfaceMember);
if (impl == null)
continue;
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindMemberOverloadsHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindMemberOverloadsHandler.cs
index 3b4dd9fbae..40790bf58c 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindMemberOverloadsHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Navigation/FindMemberOverloadsHandler.cs
@@ -58,14 +58,22 @@ namespace MonoDevelop.CSharp.Navigation
switch (symbol.Kind) {
case SymbolKind.Method:
foreach (var method in symbol.ContainingType.GetMembers (symbol.Name).OfType<IMethodSymbol> ()) {
- foreach (var loc in method.Locations)
+ foreach (var loc in method.Locations) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
+
monitor.ReportResult (new MemberReference (method, loc.SourceTree.FilePath, loc.SourceSpan.Start, loc.SourceSpan.Length));
+ }
}
break;
case SymbolKind.Property:
foreach (var property in symbol.ContainingType.GetMembers ().OfType<IPropertySymbol> () .Where (p => p.IsIndexer)) {
- foreach (var loc in property.Locations)
+ foreach (var loc in property.Locations) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
+
monitor.ReportResult (new MemberReference (property, loc.SourceTree.FilePath, loc.SourceSpan.Start, loc.SourceSpan.Length));
+ }
}
break;
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpCodeGenerator.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpCodeGenerator.cs
index 82d6abfd9c..c1bff90270 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpCodeGenerator.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpCodeGenerator.cs
@@ -35,10 +35,12 @@ using System.Collections.Generic;
using MonoDevelop.CSharp.Formatting;
using Microsoft.CodeAnalysis.Options;
using MonoDevelop.CSharp.Completion;
+using System.Threading;
+using ICSharpCode.NRefactory;
namespace MonoDevelop.CSharp.Refactoring
{
- class CSharpCodeGenerator // : CodeGenerator
+ class CSharpCodeGenerator : CodeGenerator
{
// static CSharpAmbience ambience = new CSharpAmbience ();
//
@@ -121,19 +123,19 @@ namespace MonoDevelop.CSharp.Refactoring
sb.AppendLine();
}
- // public override string WrapInRegions (string regionName, string text)
- // {
- // StringBuilder result = new StringBuilder ();
- // AppendIndent (result);
- // result.Append ("#region ");
- // result.Append (regionName);
- // AppendLine (result);
- // result.Append (text);
- // AppendLine (result);
- // AppendIndent (result);
- // result.Append ("#endregion");
- // return result.ToString ();
- // }
+ public override string WrapInRegions (string regionName, string text)
+ {
+ StringBuilder result = new StringBuilder ();
+ AppendIndent (result);
+ result.Append ("#region ");
+ result.Append (regionName);
+ AppendLine (result);
+ result.Append (text);
+ AppendLine (result);
+ AppendIndent (result);
+ result.Append ("#endregion");
+ return result.ToString ();
+ }
static void AppendObsoleteAttribute(StringBuilder result, CodeGenerationOptions options, ISymbol entity)
{
@@ -328,8 +330,8 @@ namespace MonoDevelop.CSharp.Refactoring
{
if (type == null)
throw new ArgumentNullException("type");
- result.Append(RoslynCompletionData.SafeMinimalDisplayString (type, options.SemanticModel, options.Part.SourceSpan.Start, Ambience.LabelFormat));
-
+ result.Append(RoslynCompletionData.SafeMinimalDisplayString (type, options.SemanticModel, options.Part.SourceSpan.Start, Ambience.LabelFormat));
+
// var implementingType = options.Part;
// var loc = implementingType.Region.End;
//
@@ -783,7 +785,7 @@ namespace MonoDevelop.CSharp.Refactoring
result.Append (GetModifiers (options.ImplementingType, options.Part, member));
//bool isFromInterface = false;
if (member.ContainingType != null && member.ContainingType.TypeKind == TypeKind.Interface) {
- //isFromInterface = true;
+ //isFromInterface = true;
// TODO: Type system conversion.
// if (options.ImplementingType != null) {
// foreach (var type in options.ImplementingType.BaseTypes) {
@@ -1000,19 +1002,16 @@ namespace MonoDevelop.CSharp.Refactoring
// var builder = new ICSharpCode.NRefactory.CSharp.Refactoring.TypeSystemAstBuilder (csResolver);
// return builder.ConvertType (fullType);
// }
- //
- // public override void CompleteStatement (MonoDevelop.Ide.Gui.Document doc)
- // {
- // // TODO: BROKEN DUE ROSLYN PORT - needs to be ported to NR6
- //// var fixer = new ConstructFixer (doc.GetFormattingOptions (), doc.Editor.CreateNRefactoryTextEditorOptions ());
- //// int newOffset;
- //// if (fixer.TryFix (new DocumentWrapper (doc.Editor), doc.Editor.CaretOffset, out newOffset)) {
- //// doc.Editor.CaretOffset = newOffset;
- //// }
- // }
-
-
+ //
+ public override async void CompleteStatement (MonoDevelop.Ide.Gui.Document doc)
+ {
+ var fixer = new ConstructFixer (doc.GetFormattingOptions ());
+ int newOffset = await fixer.TryFix (doc, doc.Editor.CaretOffset, default(CancellationToken));
+ if (newOffset != -1) {
+ doc.Editor.CaretOffset = newOffset;
+ }
+ }
static CodeGeneratorMemberResult GenerateProtocolCode(IMethodSymbol method, CodeGenerationOptions options)
{
@@ -1061,5 +1060,14 @@ namespace MonoDevelop.CSharp.Refactoring
return new CodeGeneratorMemberResult(result.ToString (), bodyStartOffset, bodyEndOffset);
}
+ public override void AddGlobalNamespaceImport (TextEditor editor, DocumentContext context, string nsName)
+ {
+ // not used anymore
+ }
+
+ public override void AddLocalNamespaceImport (TextEditor editor, DocumentContext context, string nsName, TextLocation caretLocation)
+ {
+ // not used anymore
+ }
}
-}
+} \ No newline at end of file
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFeaturesTextEditorExtension.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFeaturesTextEditorExtension.cs
index 59df3df062..70565d2232 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFeaturesTextEditorExtension.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFeaturesTextEditorExtension.cs
@@ -70,8 +70,12 @@ namespace MonoDevelop.CSharp.Refactoring
GoToDefinitionService.DisplayMultiple = delegate (IEnumerable<Tuple<Solution, ISymbol, Location>> list) {
using (var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true)) {
- foreach (var part in list)
+ foreach (var part in list) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
+
monitor.ReportResult (GotoDeclarationHandler.GetJumpTypePartSearchResult (part.Item2, part.Item3));
+ }
}
};
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs
index 9ccbbe49af..f3a3c3c483 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs
@@ -206,6 +206,9 @@ namespace MonoDevelop.CSharp.Refactoring
}
foreach (var loc in lookup.Symbol.Locations) {
+ if (token.IsCancellationRequested)
+ break;
+
if (!loc.IsInSource)
continue;
var fileName = loc.SourceTree.FilePath;
@@ -223,6 +226,8 @@ namespace MonoDevelop.CSharp.Refactoring
foreach (var mref in await SymbolFinder.FindReferencesAsync (lookup.Symbol, lookup.Solution).ConfigureAwait (false)) {
foreach (var loc in mref.Locations) {
+ if (token.IsCancellationRequested)
+ break;
var fileName = loc.Document.FilePath;
var offset = loc.Location.SourceSpan.Start;
string projectedName;
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/ConstructFixer.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/ConstructFixer.cs
new file mode 100644
index 0000000000..334031cb2b
--- /dev/null
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/ConstructFixer.cs
@@ -0,0 +1,208 @@
+//
+// ConstructFixer.cs
+//
+// Author:
+// Mike Krüger <mkrueger@xamarin.com>
+//
+// Copyright (c) 2016 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.NRefactory.Editor;
+using System.Text;
+using System.Reflection;
+using System.Linq;
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Formatting;
+using Microsoft.CodeAnalysis.Options;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+
+namespace MonoDevelop.CSharp.Refactoring
+{
+ abstract class ConstructCompleter
+ {
+ public abstract bool TryFix (ConstructFixer fixer, SyntaxNode syntaxTree, MonoDevelop.Ide.Gui.Document document, int location, ref int newOffset);
+
+ }
+
+ class InvocationCompleter : ConstructCompleter
+ {
+ public override bool TryFix (ConstructFixer fixer, SyntaxNode syntaxTree, Ide.Gui.Document document, int location, ref int newOffset)
+ {
+ foreach (var invocationExpression in syntaxTree.FindToken (location).Parent.AncestorsAndSelf ().OfType<InvocationExpressionSyntax> ()) {
+ if (invocationExpression != null) {
+ if (!invocationExpression.ArgumentList.OpenParenToken.IsMissing && invocationExpression.ArgumentList.CloseParenToken.IsMissing) {
+
+ var insertionOffset = invocationExpression.Span.End - 1;
+
+ newOffset = insertionOffset;
+
+ var text = ")";
+ newOffset++;
+ var expressionStatement = invocationExpression.Parent as ExpressionStatementSyntax;
+ if (expressionStatement != null) {
+ if (expressionStatement.SemicolonToken.IsMissing)
+ text = ");";
+ newOffset++;
+ }
+ document.Editor.InsertText (insertionOffset, text);
+ return true;
+ }
+
+ }
+ }
+ return false;
+ }
+ }
+
+
+ class BreakStatementCompleter : ConstructCompleter
+ {
+ public override bool TryFix (ConstructFixer fixer, SyntaxNode syntaxTree, Ide.Gui.Document document, int location, ref int newOffset)
+ {
+ foreach (var breakStatementSyntax in syntaxTree.FindToken (location).Parent.AncestorsAndSelf ().OfType<BreakStatementSyntax> ()) {
+ if (breakStatementSyntax.SemicolonToken.IsMissing) {
+ var insertionOffset = breakStatementSyntax.Span.End - 1;
+ newOffset = insertionOffset;
+ newOffset++;
+ document.Editor.InsertText (insertionOffset, ";");
+ return true;
+ }
+ }
+ foreach (var breakStatementSyntax in syntaxTree.FindToken (location).Parent.AncestorsAndSelf ().OfType<ContinueStatementSyntax> ()) {
+ if (breakStatementSyntax.SemicolonToken.IsMissing) {
+ var insertionOffset = breakStatementSyntax.Span.End - 1;
+ newOffset = insertionOffset;
+ newOffset++;
+ document.Editor.InsertText (insertionOffset, ";");
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ class ExpressionStatementCompleter : ConstructCompleter
+ {
+ public override bool TryFix (ConstructFixer fixer, SyntaxNode syntaxTree, Ide.Gui.Document document, int location, ref int newOffset)
+ {
+ foreach (var expressionStatement in syntaxTree.FindToken (location).Parent.AncestorsAndSelf ().OfType<ExpressionStatementSyntax> ()) {
+ if (expressionStatement.SemicolonToken.IsMissing) {
+ var insertionOffset = expressionStatement.Span.End - 1;
+ newOffset = insertionOffset;
+ newOffset++;
+ document.Editor.InsertText (insertionOffset, ";");
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ class ReturnStatementCompleter : ConstructCompleter
+ {
+ public override bool TryFix (ConstructFixer fixer, SyntaxNode syntaxTree, Ide.Gui.Document document, int location, ref int newOffset)
+ {
+ foreach (var throwStatement in syntaxTree.FindToken (location).Parent.AncestorsAndSelf ().OfType<ReturnStatementSyntax> ()) {
+ if (throwStatement.SemicolonToken.IsMissing) {
+ var insertionOffset = throwStatement.Span.End - 1;
+ newOffset = insertionOffset;
+ newOffset++;
+ document.Editor.InsertText (insertionOffset, ";");
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ class YieldReturnStatementCompleter : ConstructCompleter
+ {
+ public override bool TryFix (ConstructFixer fixer, SyntaxNode syntaxTree, Ide.Gui.Document document, int location, ref int newOffset)
+ {
+ foreach (var yieldStatement in syntaxTree.FindToken (location).Parent.AncestorsAndSelf ().OfType<YieldStatementSyntax> ()) {
+ if (yieldStatement.SemicolonToken.IsMissing) {
+ var insertionOffset = yieldStatement.Span.End - 1;
+ newOffset = insertionOffset;
+ newOffset++;
+ document.Editor.InsertText (insertionOffset, ";");
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ class ThrowStatementCompleter : ConstructCompleter
+ {
+ public override bool TryFix (ConstructFixer fixer, SyntaxNode syntaxTree, Ide.Gui.Document document, int location, ref int newOffset)
+ {
+ foreach (var throwStatement in syntaxTree.FindToken (location).Parent.AncestorsAndSelf ().OfType<ThrowStatementSyntax> ()) {
+ if (throwStatement.SemicolonToken.IsMissing) {
+ var insertionOffset = throwStatement.Span.End - 1;
+ newOffset = insertionOffset;
+ newOffset++;
+ document.Editor.InsertText (insertionOffset, ";");
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+
+ public class ConstructFixer
+ {
+ static readonly ConstructCompleter [] completer = {
+ new BreakStatementCompleter (),
+ new ThrowStatementCompleter (),
+ new ReturnStatementCompleter (),
+ new YieldReturnStatementCompleter (),
+
+ new InvocationCompleter (),
+ new ExpressionStatementCompleter ()
+ };
+
+ // readonly OptionSet options;
+
+ public ConstructFixer (OptionSet options)
+ {
+ // this.options = options;
+ }
+
+ public async Task<int> TryFix (MonoDevelop.Ide.Gui.Document document, int offset, CancellationToken token)
+ {
+ int newOffset = offset;
+
+ var syntaxTree = await document.AnalysisDocument.GetSyntaxRootAsync (token);
+
+ foreach (var c in completer) {
+ if (c.TryFix (this, syntaxTree, document, offset, ref newOffset)) {
+ return newOffset;
+ }
+ }
+ return -1;
+ }
+ }
+}
+
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindProjectReferenceUsagesHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindProjectReferenceUsagesHandler.cs
index 1c3bcf9f18..53727a8f74 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindProjectReferenceUsagesHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindProjectReferenceUsagesHandler.cs
@@ -81,27 +81,39 @@ namespace MonoDevelop.CSharp.Refactoring
using (var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true)) {
monitor.BeginTask (GettextCatalog.GetString ("Analyzing project"), analysisProject.Documents.Count ());
Parallel.ForEach (analysisProject.Documents, async document => {
- var model = await document.GetSemanticModelAsync ().ConfigureAwait (false);
- var root = await model.SyntaxTree.GetRootAsync ().ConfigureAwait (false);
- root.DescendantNodes (node => {
- var expr = node as ExpressionSyntax;
- if (expr != null) {
- var info = model.GetSymbolInfo (expr);
- if (info.Symbol == null || info.Symbol.ContainingAssembly == null)
- return true;
- if (projectRef.Reference.IndexOf (',') >= 0) {
- if (!string.Equals (info.Symbol.ContainingAssembly.ToString (), projectRef.Reference, StringComparison.OrdinalIgnoreCase))
- return true;
- } else {
- if (!info.Symbol.ContainingAssembly.ToString ().StartsWith (projectRef.Reference, StringComparison.OrdinalIgnoreCase))
+ try {
+ var model = await document.GetSemanticModelAsync (monitor.CancellationToken).ConfigureAwait (false);
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
+
+ var root = await model.SyntaxTree.GetRootAsync (monitor.CancellationToken).ConfigureAwait (false);
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
+
+ root.DescendantNodes (node => {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return false;
+
+ var expr = node as ExpressionSyntax;
+ if (expr != null) {
+ var info = model.GetSymbolInfo (expr);
+ if (info.Symbol == null || info.Symbol.ContainingAssembly == null)
return true;
+ if (projectRef.Reference.IndexOf (',') >= 0) {
+ if (!string.Equals (info.Symbol.ContainingAssembly.ToString (), projectRef.Reference, StringComparison.OrdinalIgnoreCase))
+ return true;
+ } else {
+ if (!info.Symbol.ContainingAssembly.ToString ().StartsWith (projectRef.Reference, StringComparison.OrdinalIgnoreCase))
+ return true;
+ }
+ monitor.ReportResult (new MemberReference (info.Symbol, document.FilePath, node.Span.Start, node.Span.Length));
+ return false;
}
- monitor.ReportResult (new MemberReference (info.Symbol, document.FilePath, node.Span.Start, node.Span.Length));
- return false;
- }
- return true;
- }).Count ();
- monitor.Step ();
+ return true;
+ }).Count ();
+ } finally {
+ monitor.Step ();
+ }
});
monitor.EndTask ();
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindReferencesHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindReferencesHandler.cs
index bbd792a985..10a67bc9cf 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindReferencesHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindReferencesHandler.cs
@@ -55,6 +55,9 @@ namespace MonoDevelop.CSharp.Refactoring
try {
var antiDuplicatesSet = new HashSet<SearchResult> (new SearchResultComparer ());
foreach (var loc in symbol.Locations) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
+
if (!loc.IsInSource)
continue;
var fileName = loc.SourceTree.FilePath;
@@ -70,8 +73,10 @@ namespace MonoDevelop.CSharp.Refactoring
monitor.ReportResult (sr);
}
- foreach (var mref in await SymbolFinder.FindReferencesAsync (symbol, solution).ConfigureAwait (false)) {
+ foreach (var mref in await SymbolFinder.FindReferencesAsync (symbol, solution, monitor.CancellationToken).ConfigureAwait (false)) {
foreach (var loc in mref.Locations) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
var fileName = loc.Document.FilePath;
var offset = loc.Location.SourceSpan.Start;
string projectedName;
@@ -86,6 +91,7 @@ namespace MonoDevelop.CSharp.Refactoring
}
}
}
+ } catch (OperationCanceledException) {
} catch (Exception ex) {
if (monitor != null)
monitor.ReportError ("Error finding references", ex);
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoDeclarationHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoDeclarationHandler.cs
index 7ca54c08f6..40a1d0b158 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoDeclarationHandler.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoDeclarationHandler.cs
@@ -49,7 +49,7 @@ namespace MonoDevelop.CSharp.Refactoring
{
var provider = new MonoDevelop.Ide.FindInFiles.FileProvider (location.SourceTree.FilePath);
var doc = TextEditorFactory.CreateNewDocument ();
- doc.Text = provider.ReadString ();
+ doc.Text = provider.ReadString ().ReadToEnd ();
int position = location.SourceSpan.Start;
while (position + part.Name.Length < doc.Length) {
if (doc.GetTextAt (position, part.Name.Length) == part.Name)
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.UnitTests/UnitTestTextEditorExtension.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.UnitTests/UnitTestTextEditorExtension.cs
index 078ad4dc1b..ff091978dd 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.UnitTests/UnitTestTextEditorExtension.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.UnitTests/UnitTestTextEditorExtension.cs
@@ -38,6 +38,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax;
using ICSharpCode.NRefactory6.CSharp;
using MonoDevelop.Ide.Editor;
using MonoDevelop.Ide.TypeSystem;
+using ICSharpCode.NRefactory.CSharp.Refactoring;
namespace MonoDevelop.CSharp
{
@@ -155,6 +156,7 @@ namespace MonoDevelop.CSharp
test.UnitTestIdentifier = GetFullName (parentClass) + "." + method.Name;
foundTests.Add (test);
}
+ break;
}
}
if (test != null) {
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpNavigationTextEditorExtension.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpNavigationTextEditorExtension.cs
index 57bf692a05..901ac3677b 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpNavigationTextEditorExtension.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpNavigationTextEditorExtension.cs
@@ -47,17 +47,19 @@ namespace MonoDevelop.CSharp
{
var parsedDocument = DocumentContext.ParsedDocument;
if (parsedDocument == null)
- return emptyList;
+ return Enumerable.Empty<NavigationSegment> ();
var model = parsedDocument.GetAst<SemanticModel> ();
if (model == null)
- return emptyList;
- try {
- var visitor = new NavigationVisitor (DocumentContext, model, new TextSpan (offset, length), token);
- visitor.Visit (await model.SyntaxTree.GetRootAsync (token).ConfigureAwait (false));
- return visitor.result;
- } catch (OperationCanceledException) {
- return emptyList;
- }
+ return Enumerable.Empty<NavigationSegment> ();
+ return await Task.Run (async delegate {
+ try {
+ var visitor = new NavigationVisitor (DocumentContext, model, new TextSpan (offset, length), token);
+ visitor.Visit (await model.SyntaxTree.GetRootAsync (token).ConfigureAwait (false));
+ return (IEnumerable<NavigationSegment>)visitor.result;
+ } catch (OperationCanceledException) {
+ return (IEnumerable<NavigationSegment>)emptyList;
+ }
+ });
}
class NavigationVisitor : CSharpSyntaxWalker
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs
index 89cd40ade2..a89341c298 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs
@@ -78,8 +78,8 @@ namespace MonoDevelop.CSharp
{
this.offset = offset;
this.colorStyle = SyntaxModeService.GetColorStyle (Ide.IdeApp.Preferences.ColorScheme);
- if (!this.colorStyle.FitsIdeSkin (Ide.IdeApp.Preferences.UserInterfaceSkin))
- this.colorStyle = SyntaxModeService.GetDefaultColorStyle (Ide.IdeApp.Preferences.UserInterfaceSkin);
+ if (!this.colorStyle.FitsIdeTheme (Ide.IdeApp.Preferences.UserInterfaceTheme))
+ this.colorStyle = SyntaxModeService.GetDefaultColorStyle (Ide.IdeApp.Preferences.UserInterfaceTheme);
this.ctx = ctx;
if (ctx != null) {
this.options = ctx.GetOptionSet ();
@@ -459,7 +459,7 @@ namespace MonoDevelop.CSharp
if (t == null)
throw new ArgumentNullException ("t");
if (t.TypeKind == TypeKind.Error)
- return "Type can not be resolved.";
+ return GettextCatalog.GetString ("Type can not be resolved.");
if (t.TypeKind == TypeKind.Delegate)
return GetDelegateMarkup ((INamedTypeSymbol)t);
if (t.TypeKind == TypeKind.TypeParameter)
@@ -967,125 +967,104 @@ namespace MonoDevelop.CSharp
var color = AlphaBlend (colorStyle.PlainText.Foreground, colorStyle.PlainText.Background, optionalAlpha);
var colorString = MonoDevelop.Components.HelperMethods.GetColorString (color);
- var keywordSign = "<span foreground=\"" + colorString + "\">" + " (keyword)</span>";
+ var keywordSign = "<span foreground=\"" + colorString + "\"> " + GettextCatalog.GetString ("(keyword)") + "</span>";
switch (node.Kind ()) {
case SyntaxKind.AbstractKeyword:
result.SignatureMarkup = Highlight ("abstract", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("abstract", colorStyle.KeywordModifiers) + " modifier can be used with classes, methods, properties, indexers, and events.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} modifier can be used with classes, methods, properties, indexers, and events.", Highlight ("abstract", colorStyle.KeywordModifiers));
break;
case SyntaxKind.AddKeyword:
result.SignatureMarkup = Highlight ("add", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Form", "[modifiers] " + Highlight ("add", colorStyle.KeywordContext) + " { accessor-body }");
- result.SummaryMarkup = "The " + Highlight ("add", colorStyle.KeywordContext) + " keyword is used to define a custom accessor for when an event is subscribed to. If supplied, a remove accessor must also be supplied.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[modifiers] {0} {{ accessor-body }}", Highlight ("add", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to define a custom accessor for when an event is subscribed to. If supplied, a remove accessor must also be supplied.", Highlight ("add", colorStyle.KeywordContext));
break;
case SyntaxKind.AscendingKeyword:
result.SignatureMarkup = Highlight ("ascending", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Query Form", Highlight ("orderby", colorStyle.KeywordContext) + " ordering-statement " + Highlight ("ascending", colorStyle.KeywordContext));
- result.SummaryMarkup = "The " + Highlight ("ascending", colorStyle.KeywordContext) + " keyword is used to set the sorting order from smallest to largest in a query expression. This is the default behaviour.";
+ result.AddCategory (GettextCatalog.GetString ("Query Form"), GettextCatalog.GetString ("{0} ordering-statement {1}", Highlight ("orderby", colorStyle.KeywordContext), Highlight ("ascending", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to set the sorting order from smallest to largest in a query expression. This is the default behaviour.", Highlight ("ascending", colorStyle.KeywordContext));
break;
case SyntaxKind.AsyncKeyword:
result.SignatureMarkup = Highlight ("async", colorStyle.KeywordContext) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("async", colorStyle.KeywordContext) + " modifier is used to specify that a class method, anonymous method, or lambda expression is asynchronous.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} modifier is used to specify that a class method, anonymous method, or lambda expression is asynchronous.", Highlight ("async", colorStyle.KeywordContext));
break;
case SyntaxKind.AsKeyword:
result.SignatureMarkup = Highlight ("as", colorStyle.KeywordOperators) + keywordSign;
- result.AddCategory ("Form", "expression " + Highlight ("as", colorStyle.KeywordOperators) + " type");
- result.SummaryMarkup = "The " + Highlight ("as", colorStyle.KeywordOperators) + " operator is used to perform conversions between compatible types. ";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("expression {0} type", Highlight ("as", colorStyle.KeywordOperators)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} operator is used to perform conversions between compatible types.", Highlight ("as", colorStyle.KeywordOperators));
break;
case SyntaxKind.AwaitKeyword:
result.SignatureMarkup = Highlight ("await", colorStyle.KeywordContext) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("await", colorStyle.KeywordContext) + " operator is used to specify that an " + Highlight ("async", colorStyle.KeywordContext) + " method is to have its execution suspended until the " + Highlight ("await", colorStyle.KeywordContext) +
- " task has completed.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} operator is used to specify that an {1} method is to have its execution suspended until the {0} task has completed.", Highlight ("await", colorStyle.KeywordContext), Highlight ("async", colorStyle.KeywordContext));
break;
case SyntaxKind.BaseKeyword:
result.SignatureMarkup = Highlight ("base", colorStyle.KeywordAccessors) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("base", colorStyle.KeywordAccessors) + " keyword is used to access members of the base class from within a derived class.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to access members of the base class from within a derived class.", Highlight ("base", colorStyle.KeywordAccessors));
break;
case SyntaxKind.BreakKeyword:
result.SignatureMarkup = Highlight ("break", colorStyle.KeywordJump) + keywordSign;
- result.AddCategory ("Form", Highlight ("break", colorStyle.KeywordJump) + ";");
- result.SummaryMarkup = "The " + Highlight ("break", colorStyle.KeywordJump) + " statement terminates the closest enclosing loop or switch statement in which it appears.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), Highlight ("break", colorStyle.KeywordJump) + ";");
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement terminates the closest enclosing loop or switch statement in which it appears.", Highlight ("break", colorStyle.KeywordJump));
break;
case SyntaxKind.CaseKeyword:
result.SignatureMarkup = Highlight ("case", colorStyle.KeywordSelection) + keywordSign;
- result.AddCategory ("Form", Highlight ("case", colorStyle.KeywordSelection) + " constant-expression:" + Environment.NewLine +
- " statement" + Environment.NewLine +
- " jump-statement");
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} constant-expression:\n statement\n jump-statement", Highlight ("case", colorStyle.KeywordSelection)));
result.SummaryMarkup = "";
break;
case SyntaxKind.CatchKeyword:
result.SignatureMarkup = Highlight ("catch", colorStyle.KeywordException) + keywordSign;
- result.AddCategory ("Form", Highlight ("try", colorStyle.KeywordException) + " try-block" + Environment.NewLine +
- " " + Highlight ("catch", colorStyle.KeywordException) + " (exception-declaration-1) catch-block-1" + Environment.NewLine +
- " " + Highlight ("catch", colorStyle.KeywordException) + " (exception-declaration-2) catch-block-2" + Environment.NewLine +
- " ..." + Environment.NewLine +
- Highlight ("try", colorStyle.KeywordException) + " try-block " + Highlight ("catch", colorStyle.KeywordException) + " catch-block");
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} try-block\n {1} (exception-declaration-1) catch-block-1\n {1} (exception-declaration-2) catch-block-2\n ...\n{0} try-block {1} catch-block", Highlight ("try", colorStyle.KeywordException), Highlight ("catch", colorStyle.KeywordException)));
result.SummaryMarkup = "";
break;
case SyntaxKind.CheckedKeyword:
result.SignatureMarkup = Highlight ("checked", colorStyle.KeywordOther) + keywordSign;
- result.AddCategory ("Form", Highlight ("checked", colorStyle.KeywordOther) + " block" + Environment.NewLine +
- "or" + Environment.NewLine +
- Highlight ("checked", colorStyle.KeywordOther) + " (expression)");
- result.SummaryMarkup = "The " + Highlight ("checked", colorStyle.KeywordOther) + " keyword is used to control the overflow-checking context for integral-type arithmetic operations and conversions. It can be used as an operator or a statement.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} block\nor\n{0} (expression)", Highlight ("checked", colorStyle.KeywordOther)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to control the overflow-checking context for integral-type arithmetic operations and conversions. It can be used as an operator or a statement.", Highlight ("checked", colorStyle.KeywordOther));
break;
case SyntaxKind.ClassKeyword:
result.SignatureMarkup = Highlight ("class", colorStyle.KeywordDeclaration) + keywordSign;
if (node.Parent != null && node.Parent.IsKind (SyntaxKind.ConstructorConstraint)) {
- result.SummaryMarkup = "The " + Highlight ("class", colorStyle.KeywordDeclaration) + " constraint specifies that the type argument must be a reference type; this applies also to any class, interface, delegate, or array type.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} constraint specifies that the type argument must be a reference type; this applies also to any class, interface, delegate, or array type.", Highlight ("class", colorStyle.KeywordDeclaration));
} else {
- result.AddCategory ("Form", "[attributes] [modifiers] " + Highlight ("class", colorStyle.KeywordDeclaration) + " identifier [:base-list] { class-body }[;]");
- result.SummaryMarkup = "Classes are declared using the keyword " + Highlight ("class", colorStyle.KeywordDeclaration) + ".";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[attributes] [modifiers] {0} identifier [:base-list] {{ class-body }}[;]", Highlight ("class", colorStyle.KeywordDeclaration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("Classes are declared using the keyword {0}.", Highlight ("class", colorStyle.KeywordDeclaration));
}
break;
case SyntaxKind.ConstKeyword:
result.SignatureMarkup = Highlight ("const", colorStyle.KeywordModifiers) + keywordSign;
- result.AddCategory ("Form", "[attributes] [modifiers] " + Highlight ("const", colorStyle.KeywordModifiers) + " type declarators;");
- result.SummaryMarkup = "The " + Highlight ("const", colorStyle.KeywordModifiers) + " keyword is used to modify a declaration of a field or local variable. It specifies that the value of the field or the local variable cannot be modified. ";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[attributes] [modifiers] {0} type declarators;", Highlight ("const", colorStyle.KeywordModifiers)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to modify a declaration of a field or local variable. It specifies that the value of the field or the local variable cannot be modified.", Highlight ("const", colorStyle.KeywordModifiers));
break;
case SyntaxKind.ContinueKeyword:
result.SignatureMarkup = Highlight ("continue", colorStyle.KeywordJump) + keywordSign;
- result.AddCategory ("Form", Highlight ("continue", colorStyle.KeywordJump) + ";");
- result.SummaryMarkup = "The " + Highlight ("continue", colorStyle.KeywordJump) + " statement passes control to the next iteration of the enclosing iteration statement in which it appears.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), Highlight ("continue", colorStyle.KeywordJump) + ";");
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement passes control to the next iteration of the enclosing iteration statement in which it appears.", Highlight ("continue", colorStyle.KeywordJump));
break;
case SyntaxKind.DefaultKeyword:
result.SignatureMarkup = Highlight ("default", colorStyle.KeywordSelection) + keywordSign;
result.SummaryMarkup = "";
if (node.Parent != null) {
if (node.Parent is DefaultExpressionSyntax) {
- result.AddCategory ("Form",
- Highlight ("default", colorStyle.KeywordSelection) + " (Type)");
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} (Type)", Highlight ("default", colorStyle.KeywordSelection)));
break;
} else if (node.Parent is SwitchStatementSyntax) {
- result.AddCategory ("Form",
- Highlight ("switch", colorStyle.KeywordSelection) + " (expression) { " + Environment.NewLine +
- " " + Highlight ("case", colorStyle.KeywordSelection) + " constant-expression:" + Environment.NewLine +
- " statement" + Environment.NewLine +
- " jump-statement" + Environment.NewLine +
- " [" + Highlight ("default", colorStyle.KeywordSelection) + ":" + Environment.NewLine +
- " statement" + Environment.NewLine +
- " jump-statement]" + Environment.NewLine +
- "}");
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} (expression) { \n {1} constant-expression:\n statement\n jump-statement\n [{2}:\n statement\n jump-statement]\n}",
+ Highlight ("switch", colorStyle.KeywordSelection), Highlight ("case", colorStyle.KeywordSelection), Highlight ("default", colorStyle.KeywordSelection)));
break;
}
}
- result.AddCategory ("Form",
- Highlight ("default", colorStyle.KeywordSelection) + " (Type)" + Environment.NewLine + Environment.NewLine +
- "or" + Environment.NewLine + Environment.NewLine +
- Highlight ("switch", colorStyle.KeywordSelection) + " (expression) { " + Environment.NewLine +
- " " + Highlight ("case", colorStyle.KeywordSelection) + " constant-expression:" + Environment.NewLine +
- " statement" + Environment.NewLine +
- " jump-statement" + Environment.NewLine +
- " [" + Highlight ("default", colorStyle.KeywordSelection) + ":" + Environment.NewLine +
- " statement" + Environment.NewLine +
- " jump-statement]" + Environment.NewLine +
- "}");
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} (Type)\n\nor\n\n{1} (expression) { \n {2} constant-expression:\n statement\n jump-statement\n [{3}:\n statement\n jump-statement]\n}",
+ Highlight ("default", colorStyle.KeywordSelection), Highlight ("switch", colorStyle.KeywordSelection), Highlight ("case", colorStyle.KeywordSelection), Highlight ("default", colorStyle.KeywordSelection))
+ );
break;
case SyntaxKind.DelegateKeyword:
result.SignatureMarkup = Highlight ("delegate", colorStyle.KeywordDeclaration) + keywordSign;
- result.AddCategory ("Form", "[attributes] [modifiers] " + Highlight ("delegate", colorStyle.KeywordDeclaration) + " result-type identifier ([formal-parameters]);");
- result.SummaryMarkup = "A " + Highlight ("delegate", colorStyle.KeywordDeclaration) + " declaration defines a reference type that can be used to encapsulate a method with a specific signature.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[attributes] [modifiers] {0} result-type identifier ([formal-parameters]);", Highlight ("delegate", colorStyle.KeywordDeclaration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("A {0} declaration defines a reference type that can be used to encapsulate a method with a specific signature.", Highlight ("delegate", colorStyle.KeywordDeclaration));
break;
case SyntaxKind.IdentifierToken:
if (node.ToFullString () == "nameof" && node.Parent?.Parent?.Kind () == SyntaxKind.InvocationExpression)
@@ -1093,380 +1072,351 @@ namespace MonoDevelop.CSharp
if (node.ToFullString () == "dynamic") {
result.SignatureMarkup = Highlight ("dynamic", colorStyle.KeywordContext) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("dynamic", colorStyle.KeywordContext) + " type allows for an object to bypass compile-time type checking and resolve type checking during run-time.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} type allows for an object to bypass compile-time type checking and resolve type checking during run-time.", Highlight ("dynamic", colorStyle.KeywordContext));
} else {
return null;
}
break;
case SyntaxKind.DescendingKeyword:
result.SignatureMarkup = Highlight ("descending", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Query Form", Highlight ("orderby", colorStyle.KeywordContext) + " ordering-statement " + Highlight ("descending", colorStyle.KeywordContext));
- result.SummaryMarkup = "The " + Highlight ("descending", colorStyle.KeywordContext) + " keyword is used to set the sorting order from largest to smallest in a query expression.";
+ result.AddCategory (GettextCatalog.GetString ("Query Form"), GettextCatalog.GetString ("{0} ordering-statement {1}", Highlight ("orderby", colorStyle.KeywordContext), Highlight ("descending", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to set the sorting order from largest to smallest in a query expression.", Highlight ("descending", colorStyle.KeywordContext));
break;
case SyntaxKind.DoKeyword:
result.SignatureMarkup = Highlight ("do", colorStyle.KeywordIteration) + keywordSign;
- result.AddCategory ("Form", Highlight ("do", colorStyle.KeywordIteration) + " statement " + Highlight ("while", colorStyle.KeywordIteration) + " (expression);");
- result.SummaryMarkup = "The " + Highlight ("do", colorStyle.KeywordIteration) + " statement executes a statement or a block of statements repeatedly until a specified expression evaluates to false.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} statement {1} (expression);", Highlight ("do", colorStyle.KeywordIteration), Highlight ("while", colorStyle.KeywordIteration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement executes a statement or a block of statements repeatedly until a specified expression evaluates to false.", Highlight ("do", colorStyle.KeywordIteration));
break;
case SyntaxKind.ElseKeyword:
result.SignatureMarkup = Highlight ("else", colorStyle.KeywordSelection) + keywordSign;
- result.AddCategory ("Form", Highlight ("if", colorStyle.KeywordSelection) + " (expression)" + Environment.NewLine +
- " statement1" + Environment.NewLine +
- " [" + Highlight ("else", colorStyle.KeywordSelection) + Environment.NewLine +
- " statement2]");
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} (expression)\n statement1\n [{1}\n statement2]", Highlight ("if", colorStyle.KeywordSelection), Highlight ("else", colorStyle.KeywordSelection)));
result.SummaryMarkup = "";
break;
case SyntaxKind.EnumKeyword:
result.SignatureMarkup = Highlight ("enum", colorStyle.KeywordDeclaration) + keywordSign;
- result.AddCategory ("Form", "[attributes] [modifiers] " + Highlight ("enum", colorStyle.KeywordDeclaration) + " identifier [:base-type] {enumerator-list} [;]");
- result.SummaryMarkup = "The " + Highlight ("enum", colorStyle.KeywordDeclaration) + " keyword is used to declare an enumeration, a distinct type consisting of a set of named constants called the enumerator list.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[attributes] [modifiers] {0} identifier [:base-type] {{ enumerator-list }} [;]", Highlight ("enum", colorStyle.KeywordDeclaration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to declare an enumeration, a distinct type consisting of a set of named constants called the enumerator list.", Highlight ("enum", colorStyle.KeywordDeclaration));
break;
case SyntaxKind.EventKeyword:
result.SignatureMarkup = Highlight ("event", colorStyle.KeywordModifiers) + keywordSign;
- result.AddCategory ("Form", "[attributes] [modifiers] " + Highlight ("event", colorStyle.KeywordModifiers) + " type declarator;" + Environment.NewLine +
- "[attributes] [modifiers] " + Highlight ("event", colorStyle.KeywordModifiers) + " type member-name {accessor-declarations};");
- result.SummaryMarkup = "Specifies an event.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[attributes] [modifiers] {0} type declarator;\n[attributes] [modifiers] {0} type member-name {{ accessor-declarations }};", Highlight ("event", colorStyle.KeywordModifiers)));
+ result.SummaryMarkup = GettextCatalog.GetString ("Specifies an event.");
break;
case SyntaxKind.ExplicitKeyword:
result.SignatureMarkup = Highlight ("explicit", colorStyle.KeywordOperatorDeclaration) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("explicit", colorStyle.KeywordOperatorDeclaration) + " keyword is used to declare an explicit user-defined type conversion operator.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to declare an explicit user-defined type conversion operator.", Highlight ("explicit", colorStyle.KeywordOperatorDeclaration));
break;
case SyntaxKind.ExternKeyword:
result.SignatureMarkup = Highlight ("extern", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "Use the " + Highlight ("extern", colorStyle.KeywordModifiers) + " modifier in a method declaration to indicate that the method is implemented externally. A common use of the extern modifier is with the DllImport attribute.";
+ result.SummaryMarkup = GettextCatalog.GetString ("Use the {0} modifier in a method declaration to indicate that the method is implemented externally. A common use of the extern modifier is with the DllImport attribute.", Highlight ("extern", colorStyle.KeywordModifiers));
break;
case SyntaxKind.FinallyKeyword:
result.SignatureMarkup = Highlight ("finally", colorStyle.KeywordException) + keywordSign;
- result.AddCategory ("Form", Highlight ("try", colorStyle.KeywordException) + " try-block " + Highlight ("finally", colorStyle.KeywordException) + " finally-block");
- result.SummaryMarkup = "The " + Highlight ("finally", colorStyle.KeywordException) + " block is useful for cleaning up any resources allocated in the try block. Control is always passed to the finally block regardless of how the try block exits.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} try-block {1} finally-block",Highlight ("try", colorStyle.KeywordException), Highlight ("finally", colorStyle.KeywordException)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} block is useful for cleaning up any resources allocated in the try block. Control is always passed to the finally block regardless of how the try block exits.", Highlight ("finally", colorStyle.KeywordException));
break;
case SyntaxKind.FixedKeyword:
result.SignatureMarkup = Highlight ("fixed", colorStyle.KeywordOther) + keywordSign;
- result.AddCategory ("Form", Highlight ("fixed", colorStyle.KeywordOther) + " ( type* ptr = expr ) statement");
- result.SummaryMarkup = "Prevents relocation of a variable by the garbage collector.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} ( type* ptr = expr ) statement", Highlight ("fixed", colorStyle.KeywordOther)));
+ result.SummaryMarkup = GettextCatalog.GetString ("Prevents relocation of a variable by the garbage collector.");
break;
case SyntaxKind.ForKeyword:
result.SignatureMarkup = Highlight ("for", colorStyle.KeywordIteration) + keywordSign;
- result.AddCategory ("Form", Highlight ("for", colorStyle.KeywordIteration) + " ([initializers]; [expression]; [iterators]) statement");
- result.SummaryMarkup = "The " + Highlight ("for", colorStyle.KeywordIteration) + " loop executes a statement or a block of statements repeatedly until a specified expression evaluates to false.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} ([initializers]; [expression]; [iterators]) statement", Highlight ("for", colorStyle.KeywordIteration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} loop executes a statement or a block of statements repeatedly until a specified expression evaluates to false.", Highlight ("for", colorStyle.KeywordIteration));
break;
case SyntaxKind.ForEachKeyword:
result.SignatureMarkup = Highlight ("foreach", colorStyle.KeywordIteration) + keywordSign;
- result.AddCategory ("Form", Highlight ("foreach", colorStyle.KeywordIteration) + " (type identifier " + Highlight ("in", colorStyle.KeywordIteration) + " expression) statement");
- result.SummaryMarkup = "The " + Highlight ("foreach", colorStyle.KeywordIteration) + " statement repeats a group of embedded statements for each element in an array or an object collection. ";
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} (type identifier {1} expression) statement", Highlight ("foreach", colorStyle.KeywordIteration), Highlight ("in", colorStyle.KeywordIteration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement repeats a group of embedded statements for each element in an array or an object collection.", Highlight ("foreach", colorStyle.KeywordIteration));
break;
case SyntaxKind.FromKeyword:
result.SignatureMarkup = Highlight ("from", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Form", Highlight ("from", colorStyle.KeywordContext) + " range-variable " + Highlight ("in", colorStyle.KeywordIteration)
- + " data-source [query clauses] " + Highlight ("select", colorStyle.KeywordContext) + " product-expression");
- result.SummaryMarkup = "The " + Highlight ("from", colorStyle.KeywordContext) + " keyword marks the beginning of a query expression and defines the data source and local variable to represent the elements in the sequence.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} range-variable {1} data-source [query clauses] {2} product-expression", Highlight ("from", colorStyle.KeywordContext), Highlight ("in", colorStyle.KeywordIteration), Highlight ("select", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword marks the beginning of a query expression and defines the data source and local variable to represent the elements in the sequence.", Highlight ("from", colorStyle.KeywordContext));
break;
case SyntaxKind.GetKeyword:
result.SignatureMarkup = Highlight ("get", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Form", "[modifiers] " + Highlight ("get", colorStyle.KeywordContext) + " [ { accessor-body } ]");
- result.SummaryMarkup = "The " + Highlight ("get", colorStyle.KeywordContext) + " keyword is used to define an accessor method to retrieve the value of the property or indexer element.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[modifiers] {0} [ {{ accessor-body }} ]", Highlight ("get", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to define an accessor method to retrieve the value of the property or indexer element.", Highlight ("get", colorStyle.KeywordContext));
break;
case SyntaxKind.GlobalKeyword:
result.SignatureMarkup = Highlight ("global", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Form", Highlight ("global", colorStyle.KeywordContext) + " :: type");
- result.SummaryMarkup = "The " + Highlight ("global", colorStyle.KeywordContext) + " keyword is used to specify a type is within the global namespace.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} :: type", Highlight ("global", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to specify a type is within the global namespace.", Highlight ("global", colorStyle.KeywordContext));
break;
case SyntaxKind.GotoKeyword:
result.SignatureMarkup = Highlight ("goto", colorStyle.KeywordJump) + keywordSign;
- result.AddCategory ("Form", Highlight ("goto", colorStyle.KeywordJump) + " identifier;" + Environment.NewLine +
- Highlight ("goto", colorStyle.KeywordJump) + " " + Highlight ("case", colorStyle.KeywordSelection) + " constant-expression;" + Environment.NewLine +
- Highlight ("goto", colorStyle.KeywordJump) + " " + Highlight ("default", colorStyle.KeywordSelection) + ";");
- result.SummaryMarkup = "The " + Highlight ("goto", colorStyle.KeywordJump) + " statement transfers the program control directly to a labeled statement. ";
+ result.AddCategory (
+ GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} identifier;\n{0} {1} constant-expression;\n {0} {2};", Highlight ("goto", colorStyle.KeywordJump), Highlight ("case", colorStyle.KeywordSelection), Highlight ("default", colorStyle.KeywordSelection)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement transfers the program control directly to a labeled statement. ", Highlight ("goto", colorStyle.KeywordJump));
break;
case SyntaxKind.GroupKeyword:
result.SignatureMarkup = Highlight ("group", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Query Form", Highlight ("group", colorStyle.KeywordContext) + " range-variable " + Highlight ("by", colorStyle.KeywordContext) + "key-value"
- + Environment.NewLine + Environment.NewLine + "or" + Environment.NewLine + Environment.NewLine +
- Highlight ("group", colorStyle.KeywordContext) + " range-variable " + Highlight ("by", colorStyle.KeywordContext) + " key-value " + Highlight ("into", colorStyle.KeywordContext) + " group-name ");
- result.SummaryMarkup = "The " + Highlight ("group", colorStyle.KeywordContext) + " keyword groups elements together from a query which match the key value and stores the result in an "
- + Highlight ("IGrouping&lt;TKey, TElement&gt;", colorStyle.KeywordTypes) + ". It can also be stored in a group for further use in the query with 'into'.";
+ result.AddCategory (GettextCatalog.GetString ("Query Form"),
+ GettextCatalog.GetString ("{0} range-variable {1} key-value\n\nor\n\n{2} range-variable {1} key-value {3} group-name ", Highlight ("group", colorStyle.KeywordContext), Highlight ("by", colorStyle.KeywordContext), Highlight ("group", colorStyle.KeywordContext), Highlight ("into", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword groups elements together from a query which match the key value and stores the result in an {1}. It can also be stored in a group for further use in the query with 'into'.", Highlight ("group", colorStyle.KeywordContext), Highlight ("IGrouping&lt;TKey, TElement&gt;", colorStyle.KeywordTypes));
break;
case SyntaxKind.IfKeyword:
result.SignatureMarkup = Highlight ("if", colorStyle.KeywordSelection) + keywordSign;
- result.AddCategory ("Form", Highlight ("if", colorStyle.KeywordSelection) + " (expression)" + Environment.NewLine +
- " statement1" + Environment.NewLine +
- " [" + Highlight ("else", colorStyle.KeywordSelection) + Environment.NewLine +
- " statement2]");
- result.SummaryMarkup = "The " + Highlight ("if", colorStyle.KeywordSelection) + " statement selects a statement for execution based on the value of a Boolean expression. ";
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} (expression)\n statement1\n [{1}\n statement2]", Highlight ("if", colorStyle.KeywordSelection), Highlight ("else", colorStyle.KeywordSelection)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement selects a statement for execution based on the value of a Boolean expression.", Highlight ("if", colorStyle.KeywordSelection));
break;
case SyntaxKind.IntoKeyword:
result.SignatureMarkup = Highlight ("into", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Query Form", Highlight ("group", colorStyle.KeywordContext) + " range-variable " + Highlight ("by", colorStyle.KeywordContext) + " key-value " + Highlight ("into", colorStyle.KeywordContext) + " group-name ");
- result.SummaryMarkup = "The " + Highlight ("into", colorStyle.KeywordContext) + " keyword stores the result of a group statement for further use in the query.";
+ result.AddCategory (GettextCatalog.GetString ("Query Form"), GettextCatalog.GetString ("{0} range-variable {1} key-value {2} group-name ", Highlight ("group", colorStyle.KeywordContext), Highlight ("by", colorStyle.KeywordContext), Highlight ("into", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword stores the result of a group statement for further use in the query.", Highlight ("into", colorStyle.KeywordContext));
break;
case SyntaxKind.ImplicitKeyword:
result.SignatureMarkup = Highlight ("implicit", colorStyle.KeywordOperatorDeclaration) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("implicit", colorStyle.KeywordOperatorDeclaration) + " keyword is used to declare an implicit user-defined type conversion operator.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to declare an implicit user-defined type conversion operator.", Highlight ("implicit", colorStyle.KeywordOperatorDeclaration));
break;
case SyntaxKind.InKeyword:
result.SignatureMarkup = Highlight ("in", colorStyle.KeywordIteration) + keywordSign;
if (node.Parent != null) {
if (node.Parent is ForEachStatementSyntax) {
- result.AddCategory ("Form",
- Highlight ("foreach", colorStyle.KeywordIteration) + " (type identifier " + Highlight ("in", colorStyle.KeywordIteration) + " expression) statement");
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} (type identifier {1} expression) statement", Highlight ("foreach", colorStyle.KeywordIteration), Highlight ("in", colorStyle.KeywordIteration)));
break;
}
if (node.Parent is FromClauseSyntax) {
- result.AddCategory ("Form",
- Highlight ("from", colorStyle.KeywordContext) + " range-variable " + Highlight ("in", colorStyle.KeywordIteration) + " data-source [query clauses] " + Highlight ("select", colorStyle.KeywordContext) + " product-expression");
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} range-variable {1} data-source [query clauses] {2} product-expression", Highlight ("from", colorStyle.KeywordContext), Highlight ("in", colorStyle.KeywordIteration), Highlight ("select", colorStyle.KeywordContext)));
break;
}
if (node.Parent is TypeParameterConstraintClauseSyntax) {
- result.AddCategory ("Form",
- Highlight ("interface", colorStyle.KeywordDeclaration) + " IMyInterface&lt;" + Highlight ("in", colorStyle.KeywordIteration) + " T&gt; {}");
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} IMyInterface&lt; {1} T&gt; {}", Highlight ("interface", colorStyle.KeywordDeclaration), Highlight ("in", colorStyle.KeywordIteration)));
break;
}
}
- result.AddCategory ("Form", Highlight ("foreach", colorStyle.KeywordIteration) + " (type identifier " + Highlight ("in", colorStyle.KeywordIteration) + " expression) statement" + Environment.NewLine + Environment.NewLine +
- "or" + Environment.NewLine + Environment.NewLine +
- Highlight ("from", colorStyle.KeywordContext) + " range-variable " + Highlight ("in", colorStyle.KeywordIteration) + " data-source [query clauses] " + Highlight ("select", colorStyle.KeywordContext) + " product-expression" + Environment.NewLine + Environment.NewLine +
- "or" + Environment.NewLine + Environment.NewLine +
- Highlight ("interface", colorStyle.KeywordDeclaration) + " IMyInterface&lt;" + Highlight ("in", colorStyle.KeywordIteration) + " T&gt; {}"
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} (type identifier {1} expression) statement\n\nor\n\n{0} range-variable {1} data-source [query clauses] {2} product-expression\n\nor\n\n{3} IMyInterface&lt;{1} T&gt; {{}}",
+ Highlight ("foreach", colorStyle.KeywordIteration), Highlight ("in", colorStyle.KeywordIteration), Highlight ("select", colorStyle.KeywordContext), Highlight ("interface", colorStyle.KeywordDeclaration))
);
break;
case SyntaxKind.InterfaceKeyword:
result.SignatureMarkup = Highlight ("interface", colorStyle.KeywordDeclaration) + keywordSign;
- result.AddCategory ("Form", "[attributes] [modifiers] " + Highlight ("interface", colorStyle.KeywordDeclaration) + " identifier [:base-list] {interface-body}[;]");
- result.SummaryMarkup = "An interface defines a contract. A class or struct that implements an interface must adhere to its contract.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[attributes] [modifiers] {0} identifier [:base-list] {{interface-body}}[;]", Highlight ("interface", colorStyle.KeywordDeclaration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("An interface defines a contract. A class or struct that implements an interface must adhere to its contract.");
break;
case SyntaxKind.InternalKeyword:
result.SignatureMarkup = Highlight ("internal", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("internal", colorStyle.KeywordModifiers) + " keyword is an access modifier for types and type members. Internal members are accessible only within files in the same assembly.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is an access modifier for types and type members. Internal members are accessible only within files in the same assembly.", Highlight ("internal", colorStyle.KeywordModifiers));
break;
case SyntaxKind.IsKeyword:
result.SignatureMarkup = Highlight ("is", colorStyle.KeywordOperators) + keywordSign;
- result.AddCategory ("Form", "expression " + Highlight ("is", colorStyle.KeywordOperators) + " type");
- result.SummaryMarkup = "The " + Highlight ("is", colorStyle.KeywordOperators) + " operator is used to check whether the run-time type of an object is compatible with a given type.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("expression {0} type", Highlight ("is", colorStyle.KeywordOperators)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} operator is used to check whether the run-time type of an object is compatible with a given type.", Highlight ("is", colorStyle.KeywordOperators));
break;
case SyntaxKind.JoinKeyword:
result.SignatureMarkup = Highlight ("join", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Query Form", Highlight ("join", colorStyle.KeywordContext) + " range-variable2 " + Highlight ("in", colorStyle.KeywordContext) + " range2 " + Highlight ("on", colorStyle.KeywordContext)
- + " statement1 " + Highlight ("equals", colorStyle.KeywordContext) + " statement2 [ " + Highlight ("into", colorStyle.KeywordContext) + " group-name ]");
- result.SummaryMarkup = "The " + Highlight ("join", colorStyle.KeywordContext) + " clause produces a new sequence of elements from two source sequences on a given equality condition.";
+ result.AddCategory (GettextCatalog.GetString ("Query Form"), GettextCatalog.GetString ("{0} range-variable2 {1} range2 {2} statement1 {3} statement2 [ {4} group-name ]",
+ Highlight ("join", colorStyle.KeywordContext), Highlight ("in", colorStyle.KeywordContext), Highlight ("on", colorStyle.KeywordContext), Highlight ("equals", colorStyle.KeywordContext), Highlight ("into", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} clause produces a new sequence of elements from two source sequences on a given equality condition.", Highlight ("join", colorStyle.KeywordContext));
break;
case SyntaxKind.LetKeyword:
result.SignatureMarkup = Highlight ("let", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Query Form", Highlight ("let", colorStyle.KeywordContext) + " range-variable = expression");
- result.SummaryMarkup = "The " + Highlight ("let", colorStyle.KeywordContext) + " clause allows for a sub-expression to have its value stored in a new range variable for use later in the query.";
+ result.AddCategory (GettextCatalog.GetString ("Query Form"), GettextCatalog.GetString ("{0} range-variable = expression", Highlight ("let", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} clause allows for a sub-expression to have its value stored in a new range variable for use later in the query.", Highlight ("let", colorStyle.KeywordContext));
break;
case SyntaxKind.LockKeyword:
result.SignatureMarkup = Highlight ("lock", colorStyle.KeywordOther) + keywordSign;
- result.AddCategory ("Form", Highlight ("lock", colorStyle.KeywordOther) + " (expression) statement_block");
- result.SummaryMarkup = "The " + Highlight ("lock", colorStyle.KeywordOther) + " keyword marks a statement block as a critical section by obtaining the mutual-exclusion lock for a given object, executing a statement, and then releasing the lock. ";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} (expression) statement_block", Highlight ("lock", colorStyle.KeywordOther)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword marks a statement block as a critical section by obtaining the mutual-exclusion lock for a given object, executing a statement, and then releasing the lock.", Highlight ("lock", colorStyle.KeywordOther));
break;
case SyntaxKind.NamespaceKeyword:
result.SignatureMarkup = Highlight ("namespace", colorStyle.KeywordNamespace) + keywordSign;
- result.AddCategory ("Form", Highlight ("namespace", colorStyle.KeywordNamespace) + " name[.name1] ...] {" + Environment.NewLine +
- "type-declarations" + Environment.NewLine +
- " }");
- result.SummaryMarkup = "The " + Highlight ("namespace", colorStyle.KeywordNamespace) + " keyword is used to declare a scope. ";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} name[.name1] ...] {{\ntype-declarations\n }}", Highlight ("namespace", colorStyle.KeywordNamespace)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to declare a scope.", Highlight ("namespace", colorStyle.KeywordNamespace));
break;
case SyntaxKind.NewKeyword:
result.SignatureMarkup = Highlight ("new", colorStyle.KeywordOperators) + keywordSign;
if (node.Parent != null && node.Parent.IsKind (SyntaxKind.ConstructorConstraint)) {
- result.SummaryMarkup = "The " + Highlight ("new", colorStyle.KeywordOperators) + " constraint specifies that any type argument in a generic class declaration must have a public parameterless constructor. To use the new constraint, the type cannot be abstract.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} constraint specifies that any type argument in a generic class declaration must have a public parameterless constructor. To use the new constraint, the type cannot be abstract.", Highlight ("new", colorStyle.KeywordOperators));
} else {
- result.SummaryMarkup = "The " + Highlight ("new", colorStyle.KeywordOperators) + " keyword can be used as an operator or as a modifier. The operator is used to create objects on the heap and invoke constructors. The modifier is used to hide an inherited member from a base class member.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword can be used as an operator or as a modifier. The operator is used to create objects on the heap and invoke constructors. The modifier is used to hide an inherited member from a base class member.", Highlight ("new", colorStyle.KeywordOperators));
}
break;
case SyntaxKind.NullKeyword:
result.SignatureMarkup = Highlight ("null", colorStyle.KeywordConstants) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("null", colorStyle.KeywordConstants) + " keyword is a literal that represents a null reference, one that does not refer to any object. " + Highlight ("null", colorStyle.KeywordConstants) + " is the default value of reference-type variables.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is a literal that represents a null reference, one that does not refer to any object. {0} is the default value of reference-type variables.", Highlight ("null", colorStyle.KeywordConstants));
break;
case SyntaxKind.OperatorKeyword:
result.SignatureMarkup = Highlight ("operator", colorStyle.KeywordOperatorDeclaration) + keywordSign;
- result.AddCategory ("Form", Highlight ("public static ", colorStyle.KeywordModifiers) + "result-type " + Highlight ("operator", colorStyle.KeywordOperatorDeclaration) + " unary-operator ( op-type operand )" + Environment.NewLine +
- Highlight ("public static ", colorStyle.KeywordModifiers) + "result-type " + Highlight ("operator", colorStyle.KeywordOperatorDeclaration) + " binary-operator (" + Environment.NewLine +
- "op-type operand," + Environment.NewLine +
- "op-type2 operand2" + Environment.NewLine +
- " )" + Environment.NewLine +
- Highlight ("public static ", colorStyle.KeywordModifiers) + Highlight ("implicit operator", colorStyle.KeywordOperatorDeclaration) + " conv-type-out ( conv-type-in operand )" + Environment.NewLine +
- Highlight ("public static ", colorStyle.KeywordModifiers) + Highlight ("explicit operator", colorStyle.KeywordOperatorDeclaration) + " conv-type-out ( conv-type-in operand )"
- );
- result.SummaryMarkup = "The " + Highlight ("operator", colorStyle.KeywordOperatorDeclaration) + " keyword is used to declare an operator in a class or struct declaration.";
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} result-type {1} unary-operator ( op-type operand )\n{0} result-type {1} binary-operator (\nop-type operand,\nop-type2 operand2\n )\n{0} {2} {1} conv-type-out ( conv-type-in operand )\n{0} {3} {1} conv-type-out ( conv-type-in operand )",
+ Highlight ("public static", colorStyle.KeywordModifiers), Highlight ("operator", colorStyle.KeywordOperatorDeclaration), Highlight ("implicit", colorStyle.KeywordOperatorDeclaration), Highlight ("explicit", colorStyle.KeywordOperatorDeclaration))
+ );
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to declare an operator in a class or struct declaration.", Highlight ("operator", colorStyle.KeywordOperatorDeclaration));
break;
case SyntaxKind.OrderByKeyword:
result.SignatureMarkup = Highlight ("orderby", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Query Form", Highlight ("orderby", colorStyle.KeywordContext) + " order-key1 [ " + Highlight ("ascending", colorStyle.KeywordContext) + "|" + Highlight ("descending", colorStyle.KeywordContext) + " , [order-key2, ...]");
- result.SummaryMarkup = "The " + Highlight ("orderby", colorStyle.KeywordContext) + " clause specifies for the returned sequence to be sorted on a given element in either ascending or descending order.";
+ result.AddCategory (GettextCatalog.GetString ("Query Form"),
+ GettextCatalog.GetString ("{0} order-key1 [ {1}|{2}, [order-key2, ...]", Highlight ("orderby", colorStyle.KeywordContext), Highlight ("ascending", colorStyle.KeywordContext), Highlight ("descending", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} clause specifies for the returned sequence to be sorted on a given element in either ascending or descending order.", Highlight ("orderby", colorStyle.KeywordContext));
break;
case SyntaxKind.OutKeyword:
result.SignatureMarkup = Highlight ("out", colorStyle.KeywordParameter) + keywordSign;
if (node.Parent != null) {
if (node.Parent is TypeParameterSyntax) {
- result.AddCategory ("Form",
- Highlight ("interface", colorStyle.KeywordDeclaration) + " IMyInterface&lt;" + Highlight ("out", colorStyle.KeywordParameter) + " T&gt; {}");
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} IMyInterface&lt;{1} T&gt; {}", Highlight ("interface", colorStyle.KeywordDeclaration), Highlight ("out", colorStyle.KeywordParameter)));
break;
}
if (node.Parent is ParameterSyntax) {
- result.AddCategory ("Form",
- Highlight ("out", colorStyle.KeywordParameter) + " parameter-name");
- result.SummaryMarkup = "The " + Highlight ("out", colorStyle.KeywordParameter) + " method parameter keyword on a method parameter causes a method to refer to the same variable that was passed into the method.";
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} parameter-name", Highlight ("out", colorStyle.KeywordParameter)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} method parameter keyword on a method parameter causes a method to refer to the same variable that was passed into the method.", Highlight ("out", colorStyle.KeywordParameter));
break;
}
}
- result.AddCategory ("Form",
- Highlight ("out", colorStyle.KeywordParameter) + " parameter-name" + Environment.NewLine + Environment.NewLine +
- "or" + Environment.NewLine + Environment.NewLine +
- Highlight ("interface", colorStyle.KeywordDeclaration) + " IMyInterface&lt;" + Highlight ("out", colorStyle.KeywordParameter) + " T&gt; {}"
- );
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} parameter-name\n\nor\n\n{1} IMyInterface&lt;{0} T&gt; {{}}",
+ Highlight ("out", colorStyle.KeywordParameter), Highlight ("interface", colorStyle.KeywordDeclaration)));
break;
case SyntaxKind.OverrideKeyword:
result.SignatureMarkup = Highlight ("override", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("override", colorStyle.KeywordModifiers) + " modifier is used to override a method, a property, an indexer, or an event.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} modifier is used to override a method, a property, an indexer, or an event.", Highlight ("override", colorStyle.KeywordModifiers));
break;
case SyntaxKind.ParamKeyword:
result.SignatureMarkup = Highlight ("params", colorStyle.KeywordParameter) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("params", colorStyle.KeywordParameter) + " keyword lets you specify a method parameter that takes an argument where the number of arguments is variable.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword lets you specify a method parameter that takes an argument where the number of arguments is variable.", Highlight ("params", colorStyle.KeywordParameter));
break;
case SyntaxKind.PartialKeyword:
result.SignatureMarkup = Highlight ("partial", colorStyle.KeywordContext) + keywordSign;
if (node.Parent != null) {
if (node.Parent is TypeDeclarationSyntax) {
- result.AddCategory ("Form", "[modifiers] " + Highlight ("partial", colorStyle.KeywordContext) + " type-declaration");
- result.SummaryMarkup = "The " + Highlight ("partial", colorStyle.KeywordContext) + " keyword on a type declaration allows for the definition to be split into multiple files.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[modifiers] {0} type-declaration", Highlight ("partial", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword on a type declaration allows for the definition to be split into multiple files.", Highlight ("partial", colorStyle.KeywordContext));
break;
} else if (node.Parent is MethodDeclarationSyntax) {
- result.AddCategory ("Form", Highlight ("partial", colorStyle.KeywordContext) + " method-declaration");
- result.SummaryMarkup = "The " + Highlight ("partial", colorStyle.KeywordContext) + " keyword on a method declaration allows for the implementation of a method to be defined in another part of the partial class.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} method-declaration", Highlight ("partial", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword on a method declaration allows for the implementation of a method to be defined in another part of the partial class.", Highlight ("partial", colorStyle.KeywordContext));
}
} else
- result.AddCategory ("Form", "[modifiers] " + Highlight ("partial", colorStyle.KeywordContext) + " type-declaration" + Environment.NewLine + Environment.NewLine + "or" + Environment.NewLine + Environment.NewLine +
- Highlight ("partial", colorStyle.KeywordContext) + " method-declaration");
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("[modifiers] {0} type-declaration\n\nor\n\n{0} method-declaration", Highlight ("partial", colorStyle.KeywordContext)));
break;
case SyntaxKind.PrivateKeyword:
result.SignatureMarkup = Highlight ("private", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("private", colorStyle.KeywordModifiers) + " keyword is a member access modifier. Private access is the least permissive access level. Private members are accessible only within the body of the class or the struct in which they are declared.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is a member access modifier. Private access is the least permissive access level. Private members are accessible only within the body of the class or the struct in which they are declared.", Highlight ("private", colorStyle.KeywordModifiers));
break;
case SyntaxKind.ProtectedKeyword:
result.SignatureMarkup = Highlight ("protected", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("protected", colorStyle.KeywordModifiers) + " keyword is a member access modifier. A protected member is accessible from within the class in which it is declared, and from within any class derived from the class that declared this member.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is a member access modifier. A protected member is accessible from within the class in which it is declared, and from within any class derived from the class that declared this member.", Highlight ("protected", colorStyle.KeywordModifiers));
break;
case SyntaxKind.PublicKeyword:
result.SignatureMarkup = Highlight ("public", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("public", colorStyle.KeywordModifiers) + " keyword is an access modifier for types and type members. Public access is the most permissive access level. There are no restrictions on accessing public members.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is an access modifier for types and type members. Public access is the most permissive access level. There are no restrictions on accessing public members.", Highlight ("public", colorStyle.KeywordModifiers));
break;
case SyntaxKind.ReadOnlyKeyword:
result.SignatureMarkup = Highlight ("readonly", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("readonly", colorStyle.KeywordModifiers) + " keyword is a modifier that you can use on fields. When a field declaration includes a " + Highlight ("readonly", colorStyle.KeywordModifiers) + " modifier, assignments to the fields introduced by the declaration can only occur as part of the declaration or in a constructor in the same class.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is a modifier that you can use on fields. When a field declaration includes a {0} modifier, assignments to the fields introduced by the declaration can only occur as part of the declaration or in a constructor in the same class.", Highlight ("readonly", colorStyle.KeywordModifiers));
break;
case SyntaxKind.RefKeyword:
result.SignatureMarkup = Highlight ("ref", colorStyle.KeywordParameter) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("ref", colorStyle.KeywordParameter) + " method parameter keyword on a method parameter causes a method to refer to the same variable that was passed into the method.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} method parameter keyword on a method parameter causes a method to refer to the same variable that was passed into the method.", Highlight ("ref ", colorStyle.KeywordParameter));
break;
case SyntaxKind.RemoveKeyword:
result.SignatureMarkup = Highlight ("remove", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Form", "[modifiers] " + Highlight ("remove", colorStyle.KeywordContext) + " { accessor-body }");
- result.SummaryMarkup = "The " + Highlight ("remove", colorStyle.KeywordContext) + " keyword is used to define a custom accessor for when an event is unsubscribed from. If supplied, an add accessor must also be supplied.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[modifiers] {0} {{ accessor-body }}", Highlight ("remove", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to define a custom accessor for when an event is unsubscribed from. If supplied, an add accessor must also be supplied.", Highlight ("remove", colorStyle.KeywordContext));
break;
case SyntaxKind.ReturnKeyword:
result.SignatureMarkup = Highlight ("return", colorStyle.KeywordJump) + keywordSign;
- result.AddCategory ("Form", Highlight ("return", colorStyle.KeywordJump) + " [expression];");
- result.SummaryMarkup = "The " + Highlight ("return", colorStyle.KeywordJump) + " statement terminates execution of the method in which it appears and returns control to the calling method.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} [expression];", Highlight ("return", colorStyle.KeywordJump)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement terminates execution of the method in which it appears and returns control to the calling method.", Highlight ("return ", colorStyle.KeywordJump));
break;
case SyntaxKind.SelectKeyword:
result.SignatureMarkup = Highlight ("select", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Query Form", Highlight ("select", colorStyle.KeywordContext) + " return-type");
- result.SummaryMarkup = "The " + Highlight ("select", colorStyle.KeywordContext) + " clause specifies the type of value to return from the query.";
+ result.AddCategory (GettextCatalog.GetString ("Query Form"), GettextCatalog.GetString ("{0} return-type", Highlight ("select", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} clause specifies the type of value to return from the query.", Highlight ("select", colorStyle.KeywordContext));
break;
case SyntaxKind.SealedKeyword:
result.SignatureMarkup = Highlight ("sealed", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "A sealed class cannot be inherited.";
+ result.SummaryMarkup = GettextCatalog.GetString ("A sealed class cannot be inherited.");
break;
case SyntaxKind.SetKeyword:
result.SignatureMarkup = Highlight ("set", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Form", "[modifiers] " + Highlight ("set", colorStyle.KeywordContext) + " [ { accessor-body } ]");
- result.SummaryMarkup = "The " + Highlight ("set", colorStyle.KeywordContext) + " keyword is used to define an accessor method to assign to the value of the property or indexer element.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[modifiers] {0} [ {{ accessor-body }} ]", Highlight ("set", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to define an accessor method to assign to the value of the property or indexer element.", Highlight ("set", colorStyle.KeywordContext));
break;
case SyntaxKind.SizeOfKeyword:
result.SignatureMarkup = Highlight ("sizeof", colorStyle.KeywordOperators) + keywordSign;
- result.AddCategory ("Form", Highlight ("sizeof", colorStyle.KeywordOperators) + " (type)");
- result.SummaryMarkup = "The " + Highlight ("sizeof", colorStyle.KeywordOperators) + " operator is used to obtain the size in bytes for a value type.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} (type)", Highlight ("sizeof", colorStyle.KeywordOperators)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} operator is used to obtain the size in bytes for a value type.", Highlight ("sizeof", colorStyle.KeywordOperators));
break;
case SyntaxKind.StackAllocKeyword:
result.SignatureMarkup = Highlight ("stackalloc", colorStyle.KeywordOperators) + keywordSign;
- result.AddCategory ("Form", "type * ptr = " + Highlight ("stackalloc", colorStyle.KeywordOperators) + " type [ expr ];");
- result.SummaryMarkup = "Allocates a block of memory on the stack.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("type * ptr = {0} type [ expr ];", Highlight ("stackalloc", colorStyle.KeywordOperators)));
+ result.SummaryMarkup = GettextCatalog.GetString ("Allocates a block of memory on the stack.");
break;
case SyntaxKind.StaticKeyword:
result.SignatureMarkup = Highlight ("static", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "Use the " + Highlight ("static", colorStyle.KeywordModifiers) + " modifier to declare a static member, which belongs to the type itself rather than to a specific object.";
+ result.SummaryMarkup = GettextCatalog.GetString ("Use the {0} modifier to declare a static member, which belongs to the type itself rather than to a specific object.", Highlight ("static", colorStyle.KeywordModifiers));
break;
case SyntaxKind.StructKeyword:
result.SignatureMarkup = Highlight ("struct", colorStyle.KeywordDeclaration) + keywordSign;
if (node.Parent != null && node.Parent.IsKind (SyntaxKind.ConstructorConstraint)) {
- result.SummaryMarkup = "The " + Highlight ("struct", colorStyle.KeywordDeclaration) + " constraint specifies that the type argument must be a value type. Any value type except Nullable can be specified.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} constraint specifies that the type argument must be a value type. Any value type except Nullable can be specified.", Highlight ("struct", colorStyle.KeywordDeclaration));
} else {
- result.AddCategory ("Form", "[attributes] [modifiers] " + Highlight ("struct", colorStyle.KeywordDeclaration) + " identifier [:interfaces] body [;]");
- result.SummaryMarkup = "A " + Highlight ("struct", colorStyle.KeywordDeclaration) + " type is a value type that can contain constructors, constants, fields, methods, properties, indexers, operators, events, and nested types. ";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("[attributes] [modifiers] {0} identifier [:interfaces] body [;]", Highlight ("struct", colorStyle.KeywordDeclaration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("A {0} type is a value type that can contain constructors, constants, fields, methods, properties, indexers, operators, events, and nested types.", Highlight ("struct", colorStyle.KeywordDeclaration));
}
break;
case SyntaxKind.SwitchKeyword:
result.SignatureMarkup = Highlight ("switch", colorStyle.KeywordSelection) + keywordSign;
- result.AddCategory ("Form", Highlight ("switch", colorStyle.KeywordSelection) + " (expression)" + Environment.NewLine +
- " {" + Environment.NewLine +
- " " + Highlight ("case", colorStyle.KeywordSelection) + " constant-expression:" + Environment.NewLine +
- " statement" + Environment.NewLine +
- " jump-statement" + Environment.NewLine +
- " [" + Highlight ("default", colorStyle.KeywordSelection) + ":" + Environment.NewLine +
- " statement" + Environment.NewLine +
- " jump-statement]" + Environment.NewLine +
- " }");
- result.SummaryMarkup = "The " + Highlight ("switch", colorStyle.KeywordSelection) + " statement is a control statement that handles multiple selections by passing control to one of the " + Highlight ("case", colorStyle.KeywordSelection) + " statements within its body.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} (expression)\n {{\n {1} constant-expression:\n statement\n jump-statement\n [{2}:\n statement\n jump-statement]\n }}", Highlight ("switch", colorStyle.KeywordSelection), Highlight ("case ", colorStyle.KeywordSelection), Highlight ("default", colorStyle.KeywordSelection)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement is a control statement that handles multiple selections by passing control to one of the {1} statements within its body.", Highlight ("switch", colorStyle.KeywordSelection), Highlight ("case", colorStyle.KeywordSelection));
break;
case SyntaxKind.ThisKeyword:
result.SignatureMarkup = Highlight ("this", colorStyle.KeywordAccessors) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("this", colorStyle.KeywordAccessors) + " keyword refers to the current instance of the class.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword refers to the current instance of the class.", Highlight ("this", colorStyle.KeywordAccessors));
break;
case SyntaxKind.ThrowKeyword:
result.SignatureMarkup = Highlight ("throw", colorStyle.KeywordException) + keywordSign;
- result.AddCategory ("Form", Highlight ("throw", colorStyle.KeywordException) + " [expression];");
- result.SummaryMarkup = "The " + Highlight ("throw", colorStyle.KeywordException) + " statement is used to signal the occurrence of an anomalous situation (exception) during the program execution.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} [expression];", Highlight ("throw", colorStyle.KeywordException)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement is used to signal the occurrence of an anomalous situation (exception) during the program execution.", Highlight ("throw ", colorStyle.KeywordException));
break;
case SyntaxKind.TryKeyword:
result.SignatureMarkup = Highlight ("try", colorStyle.KeywordException) + keywordSign;
- result.AddCategory ("Form", Highlight ("try", colorStyle.KeywordException) + " try-block" + Environment.NewLine +
- " " + Highlight ("catch", colorStyle.KeywordException) + " (exception-declaration-1) catch-block-1 " + Environment.NewLine +
- " " + Highlight ("catch", colorStyle.KeywordException) + " (exception-declaration-2) catch-block-2 " + Environment.NewLine +
- "..." + Environment.NewLine +
- Highlight ("try", colorStyle.KeywordException) + " try-block " + Highlight ("catch", colorStyle.KeywordException) + " catch-block");
- result.SummaryMarkup = "The try-catch statement consists of a " + Highlight ("try", colorStyle.KeywordException) + " block followed by one or more " + Highlight ("catch", colorStyle.KeywordException) + " clauses, which specify handlers for different exceptions.";
+ result.AddCategory (GettextCatalog.GetString ("Form"),
+ GettextCatalog.GetString ("{0} try-block\n {1} (exception-declaration-1) catch-block-1 \n {1} (exception-declaration-2) catch-block-2 \n...\n{0} try-block {1} catch-block",
+ Highlight ("try", colorStyle.KeywordException), Highlight ("catch", colorStyle.KeywordException)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The try-catch statement consists of a {0} block followed by one or more {1} clauses, which specify handlers for different exceptions.", Highlight ("try", colorStyle.KeywordException), Highlight ("catch", colorStyle.KeywordException));
break;
case SyntaxKind.TypeOfKeyword:
result.SignatureMarkup = Highlight ("typeof", colorStyle.KeywordOperators) + keywordSign;
- result.AddCategory ("Form", Highlight ("typeof", colorStyle.KeywordOperators) + "(type)");
- result.SummaryMarkup = "The " + Highlight ("typeof", colorStyle.KeywordOperators) + " operator is used to obtain the System.Type object for a type.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} (type)", Highlight ("typeof", colorStyle.KeywordOperators)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} operator is used to obtain the System.Type object for a type.", Highlight ("typeof", colorStyle.KeywordOperators));
break;
case SyntaxKind.UncheckedKeyword:
result.SignatureMarkup = Highlight ("unchecked", colorStyle.KeywordOther) + keywordSign;
- result.AddCategory ("Form", Highlight ("unchecked", colorStyle.KeywordOther) + " block" + Environment.NewLine +
- Highlight ("unchecked", colorStyle.KeywordOther) + " (expression)");
- result.SummaryMarkup = "The " + Highlight ("unchecked", colorStyle.KeywordOther) + " keyword is used to control the overflow-checking context for integral-type arithmetic operations and conversions.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} block\n{0} (expression)", Highlight ("unchecked", colorStyle.KeywordOther)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to control the overflow-checking context for integral-type arithmetic operations and conversions.", Highlight ("unchecked", colorStyle.KeywordOther));
break;
case SyntaxKind.UnsafeKeyword:
result.SignatureMarkup = Highlight ("unsafe", colorStyle.KeywordOther) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("unsafe", colorStyle.KeywordOther) + " keyword denotes an unsafe context, which is required for any operation involving pointers.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword denotes an unsafe context, which is required for any operation involving pointers.", Highlight ("unsafe", colorStyle.KeywordOther));
break;
case SyntaxKind.UsingKeyword:
result.SignatureMarkup = Highlight ("using", colorStyle.KeywordNamespace) + keywordSign;
- result.AddCategory ("Form", Highlight ("using", colorStyle.KeywordNamespace) + " (expression | type identifier = initializer) statement" + Environment.NewLine +
- Highlight ("using", colorStyle.KeywordNamespace) + " [alias = ]class_or_namespace;");
- result.SummaryMarkup = "The " + Highlight ("using", colorStyle.KeywordNamespace) + " directive creates an alias for a namespace or imports types defined in other namespaces. The " + Highlight ("using", colorStyle.KeywordNamespace) + " statement defines a scope at the end of which an object will be disposed.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} (expression | type identifier = initializer) statement\n{0} [alias = ]class_or_namespace;", Highlight ("using", colorStyle.KeywordNamespace)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} directive creates an alias for a namespace or imports types defined in other namespaces. The {0} statement defines a scope at the end of which an object will be disposed.", Highlight ("using", colorStyle.KeywordNamespace));
break;
case SyntaxKind.VirtualKeyword:
result.SignatureMarkup = Highlight ("virtual", colorStyle.KeywordModifiers) + keywordSign;
- result.SummaryMarkup = "The " + Highlight ("virtual", colorStyle.KeywordModifiers) + " keyword is used to modify a method, property, indexer, or event declaration and allow for it to be overridden in a derived class.";
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to modify a method, property, indexer, or event declaration and allow for it to be overridden in a derived class.", Highlight ("virtual", colorStyle.KeywordModifiers));
break;
case SyntaxKind.VolatileKeyword:
result.SignatureMarkup = Highlight ("volatile", colorStyle.KeywordModifiers) + keywordSign;
- result.AddCategory ("Form", Highlight ("volatile", colorStyle.KeywordModifiers) + " declaration");
- result.SummaryMarkup = "The " + Highlight ("volatile", colorStyle.KeywordModifiers) + " keyword indicates that a field can be modified in the program by something such as the operating system, the hardware, or a concurrently executing thread.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} declaration", Highlight ("volatile", colorStyle.KeywordModifiers)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword indicates that a field can be modified in the program by something such as the operating system, the hardware, or a concurrently executing thread.", Highlight ("volatile", colorStyle.KeywordModifiers));
break;
case SyntaxKind.VoidKeyword:
result.SignatureMarkup = Highlight ("void", colorStyle.KeywordTypes) + keywordSign;
@@ -1475,37 +1425,33 @@ namespace MonoDevelop.CSharp
result.SignatureMarkup = Highlight ("where", colorStyle.KeywordContext) + keywordSign;
if (node.Parent != null) {
if (node.Parent is WhereClauseSyntax) {
- result.AddCategory ("Query Form", Highlight ("where", colorStyle.KeywordContext) + " condition");
- result.SummaryMarkup = "The " + Highlight ("where", colorStyle.KeywordContext) + " clause specifies which elements from the data source to be returned according to a given condition.";
+ result.AddCategory (GettextCatalog.GetString ("Query Form"), GettextCatalog.GetString ("{0} condition", Highlight ("where", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} clause specifies which elements from the data source to be returned according to a given condition.", Highlight ("where", colorStyle.KeywordContext));
break;
}
if (node.Parent is TypeConstraintSyntax) {
- result.AddCategory ("Form", "generic-class-declaration " + Highlight ("where", colorStyle.KeywordContext) + " type-parameter : type-constraint");
- result.SummaryMarkup = "The " + Highlight ("where", colorStyle.KeywordContext) + " clause constrains which types can be used as the type parameter in a generic declaration.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("generic-class-declaration {0} type-parameter : type-constraint", Highlight ("where", colorStyle.KeywordContext)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} clause constrains which types can be used as the type parameter in a generic declaration.", Highlight ("where", colorStyle.KeywordContext));
break;
}
} else {
- result.AddCategory ("Form", "generic-class-declaration " + Highlight ("where", colorStyle.KeywordContext) + " type-parameter : type-constraint"
- + Environment.NewLine + Environment.NewLine + "or" + Environment.NewLine + Environment.NewLine + "query-clauses " + Highlight ("where", colorStyle.KeywordContext) +
- " condition" + " [query-clauses]");
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("generic-class-declaration {0} type-parameter : type-constraint\n\nor\n\nquery-clauses {0} condition [query-clauses]", Highlight ("where", colorStyle.KeywordContext)));
}
break;
case SyntaxKind.YieldKeyword:
result.SignatureMarkup = Highlight ("yield", colorStyle.KeywordContext) + keywordSign;
- result.AddCategory ("Form", Highlight ("yield", colorStyle.KeywordContext) + Highlight ("break", colorStyle.KeywordJump) + Environment.NewLine
- + Environment.NewLine + "or" + Environment.NewLine + Environment.NewLine
- + Highlight ("yield", colorStyle.KeywordContext) + Highlight ("return", colorStyle.KeywordJump) + " expression");
- result.SummaryMarkup = "The " + Highlight ("yield", colorStyle.KeywordContext) + " keyword is used to indicate that a method, get accessor, or operator is an iterator.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} {1}\n\nor\n\n{0} {2} expression", Highlight ("yield", colorStyle.KeywordContext), Highlight ("break", colorStyle.KeywordJump), Highlight ("return", colorStyle.KeywordJump)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} keyword is used to indicate that a method, get accessor, or operator is an iterator.", Highlight ("yield", colorStyle.KeywordContext));
break;
case SyntaxKind.WhileKeyword:
result.SignatureMarkup = Highlight ("while", colorStyle.KeywordIteration) + keywordSign;
- result.AddCategory ("Form", Highlight ("while", colorStyle.KeywordIteration) + " (expression) statement");
- result.SummaryMarkup = "The " + Highlight ("while", colorStyle.KeywordIteration) + " statement executes a statement or a block of statements until a specified expression evaluates to false. ";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0} (expression) statement", Highlight ("while", colorStyle.KeywordIteration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("The {0} statement executes a statement or a block of statements until a specified expression evaluates to false.", Highlight ("while", colorStyle.KeywordIteration));
break;
case SyntaxKind.NameOfKeyword:
result.SignatureMarkup = Highlight ("nameof", colorStyle.KeywordDeclaration) + keywordSign;
- result.AddCategory ("Form", Highlight ("nameof", colorStyle.KeywordDeclaration) + "(identifier)");
- result.SummaryMarkup = "Used to obtain the simple (unqualified) string name of a variable, type, or member.";
+ result.AddCategory (GettextCatalog.GetString ("Form"), GettextCatalog.GetString ("{0}(identifier)", Highlight ("nameof", colorStyle.KeywordDeclaration)));
+ result.SummaryMarkup = GettextCatalog.GetString ("Used to obtain the simple (unqualified) string name of a variable, type, or member.");
break;
default:
return null;
@@ -1520,19 +1466,19 @@ namespace MonoDevelop.CSharp
var color = AlphaBlend (colorStyle.PlainText.Foreground, colorStyle.PlainText.Background, optionalAlpha);
var colorString = MonoDevelop.Components.HelperMethods.GetColorString (color);
- var keywordSign = "<span foreground=\"" + colorString + "\">" + " (keyword)</span>";
+ var keywordSign = "<span foreground=\"" + colorString + "\"> " + GettextCatalog.GetString ("(keyword)") + "</span>";
result.SignatureMarkup = Highlight (keyword.ToFullString (), colorStyle.KeywordTypes) + keywordSign;
switch (keyword.Parent.Kind ()) {
case SyntaxKind.ClassConstraint:
- result.AddCategory ("Constraint", "The type argument must be a reference type; this applies also to any class, interface, delegate, or array type.");
+ result.AddCategory (GettextCatalog.GetString ("Constraint"), GettextCatalog.GetString ("The type argument must be a reference type; this applies also to any class, interface, delegate, or array type."));
break;
case SyntaxKind.ConstructorConstraint:
- result.AddCategory ("Constraint", "The type argument must have a public parameterless constructor. When used together with other constraints, the new() constraint must be specified last.");
+ result.AddCategory (GettextCatalog.GetString ("Constraint"), GettextCatalog.GetString ("The type argument must have a public parameterless constructor. When used together with other constraints, the new() constraint must be specified last."));
break;
case SyntaxKind.StructConstraint:
- result.AddCategory ("Constraint", "The type argument must be a value type. Any value type except Nullable can be specified. See Using Nullable Types (C# Programming Guide) for more information.");
+ result.AddCategory (GettextCatalog.GetString ("Constraint"), GettextCatalog.GetString ("The type argument must be a value type. Any value type except Nullable can be specified. See Using Nullable Types (C# Programming Guide) for more information."));
break;
}
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonIndentEngine.cs b/main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonIndentEngine.cs
index baedfa03c4..33564448cb 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonIndentEngine.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonIndentEngine.cs
@@ -166,13 +166,20 @@ namespace MonoDevelop.JSon
#endregion
#region IDocumentIndentEngine implementation
-
+ Indent savedStringIndent;
public void Push (char ch)
{
var isNewLine = NewLine.IsNewLine (ch);
if (!isNewLine) {
- if (ch == '"')
+ if (ch == '"') {
isInString = !IsInsideString;
+ if (isInString) {
+ savedStringIndent = nextLineIndent;
+ nextLineIndent = new Indent (ctx.GetOptionSet ());
+ } else {
+ nextLineIndent = savedStringIndent;
+ }
+ }
if (ch == '{' || ch == '[') {
nextLineIndent.Push (IndentType.Block);
} else if (ch == '}' || ch == ']') {
diff --git a/main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonTextEditorExtension.cs b/main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonTextEditorExtension.cs
index 9e81108f34..1121e293ad 100644
--- a/main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonTextEditorExtension.cs
+++ b/main/src/addins/CSharpBinding/MonoDevelop.JSon/JSonTextEditorExtension.cs
@@ -30,8 +30,7 @@ using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Editor.Extension;
using ICSharpCode.NRefactory6.CSharp;
using MonoDevelop.Ide.Editor;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.JSon
{
class JSonTextEditorExtension : TextEditorExtension
@@ -47,9 +46,9 @@ namespace MonoDevelop.JSon
stateTracker = new CacheIndentEngine (indentEngine);
Editor.SetIndentationTracker (new JSonIndentationTracker (Editor, stateTracker));
}
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
- var result = await base.KeyPress (descriptor);
+ var result = base.KeyPress (descriptor);
if (descriptor.SpecialKey == SpecialKey.Return) {
if (Editor.Options.IndentStyle == MonoDevelop.Ide.Editor.IndentStyle.Virtual) {
diff --git a/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.cs b/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.cs
index 4b6aefb313..951ce5cc55 100644
--- a/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.cs
+++ b/main/src/addins/ChangeLogAddIn/ChangeLogAddIn.cs
@@ -161,7 +161,7 @@ namespace MonoDevelop.ChangeLogAddIn
return null;
if (File.Exists (clog))
- return await IdeApp.Workbench.OpenDocument (clog, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer);
+ return await IdeApp.Workbench.OpenDocument (clog, (Project) null, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer);
Document document = IdeApp.Workbench.NewDocument (clog, "text/plain", "");
document.Save();
diff --git a/main/src/addins/ChangeLogAddIn/CommitDialogExtensionWidget.cs b/main/src/addins/ChangeLogAddIn/CommitDialogExtensionWidget.cs
index c2831dfbfe..db187df352 100644
--- a/main/src/addins/ChangeLogAddIn/CommitDialogExtensionWidget.cs
+++ b/main/src/addins/ChangeLogAddIn/CommitDialogExtensionWidget.cs
@@ -99,7 +99,7 @@ namespace MonoDevelop.ChangeLogAddIn
AllowCommit = !requireComment;
if (!AuthorInformation.Default.IsValid) {
- msgLabel.Markup = "<b><span foreground='red'>" + GettextCatalog.GetString ("ChangeLog entries can't be generated.") + "</span></b>";
+ msgLabel.Markup = "<b><span foreground='" + Ide.Gui.Styles.ErrorForegroundColor.ToHexString (false) + "'>" + GettextCatalog.GetString ("ChangeLog entries can't be generated.") + "</span></b>";
pathLabel.Text = GettextCatalog.GetString ("The name or e-mail of the user has not been configured.");
logButton.Label = GettextCatalog.GetString ("Configure user data");
optionsButton.Visible = false;
@@ -114,11 +114,11 @@ namespace MonoDevelop.ChangeLogAddIn
string fc = GettextCatalog.GetString ("There are {0} files without a comment.\nThe ChangeLog entry for those files will not be generated.", uncommentedCount);
if (requireComment)
fc += "\n" + GettextCatalog.GetString ("Some of the projects require that files have comments when they are committed.");
- warning = "<b><span foreground='red'>" + fc + "</span></b>\n";
+ warning = "<b><span foreground='" + Ide.Gui.Styles.ErrorForegroundColor.ToHexString (false) + "'>" + fc + "</span></b>\n";
}
if (unknownFileCount > 0) {
string fc = GettextCatalog.GetPluralString ("{0} ChangeLog file not found. Some changes will not be logged.","{0} ChangeLog files not found. Some changes will not be logged.", unknownFileCount, unknownFileCount);
- msgLabel.Markup = warning + "<b><span foreground='red'>" + fc + "</span></b>";
+ msgLabel.Markup = warning + "<b><span foreground='" + Ide.Gui.Styles.ErrorForegroundColor.ToHexString (false) + "'>" + fc + "</span></b>";
pathLabel.Text = GettextCatalog.GetString ("Click on the 'Details' button for more info.");
} else if (entries.Count == 1) {
msgLabel.Markup = warning + "<b>" + GettextCatalog.GetString ("The following ChangeLog file will be updated:") + "</b>";
diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Targets/SourcesZipPackageBuilder.cs b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Targets/SourcesZipPackageBuilder.cs
index 5cf009cc19..1fa649f2ee 100644
--- a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Targets/SourcesZipPackageBuilder.cs
+++ b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Targets/SourcesZipPackageBuilder.cs
@@ -69,7 +69,7 @@ namespace MonoDevelop.Deployment.Targets
sourceFile = ((SolutionItem)entry).FileName;
AggregatedProgressMonitor mon = new AggregatedProgressMonitor ();
- mon.AddSlaveMonitor (monitor, MonitorAction.WriteLog|MonitorAction.ReportError|MonitorAction.ReportWarning|MonitorAction.ReportSuccess);
+ mon.AddFollowerMonitor (monitor, MonitorAction.WriteLog|MonitorAction.ReportError|MonitorAction.ReportWarning|MonitorAction.ReportSuccess);
string tmpFolder = FileService.CreateTempDirectory ();
diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml
index 29ec2ffc16..7fcdefd213 100644
--- a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml
+++ b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml
@@ -117,7 +117,7 @@
</Extension>
<Extension path = "/MonoDevelop/Ide/ProjectTemplates">
- <ProjectTemplate id = "PackagingProject" resource = "PackagingProject.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.PackagingProject" resource = "PackagingProject.xpt.xml"/>
</Extension>
<Extension path = "/MonoDevelop/Ide/Pads/ProjectPad">
diff --git a/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml b/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml
index 50a119a9cb..f40c5d46d7 100644
--- a/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml
+++ b/main/src/addins/ILAsmBinding/ILAsmBinding.addin.xml
@@ -1,7 +1,7 @@
<ExtensionModel>
<Extension path = "/MonoDevelop/Ide/ProjectTemplates">
- <ProjectTemplate id = "ILAsmConsoleProject" resource = "ILAsmConsoleProject.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.IL.ConsoleProject" resource = "ILAsmConsoleProject.xpt.xml"/>
</Extension>
<Extension path = "/MonoDevelop/Ide/FileFilters">
<FileFilter id = "ILAsm Files" _label = "ILAsm Files" extensions = "*.il"/>
diff --git a/main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs
index 51cbec79bf..2c5466ce0a 100644
--- a/main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs
+++ b/main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs
@@ -65,7 +65,7 @@ namespace MonoDevelop.MacIntegration
// HACK: VK The icon is not rendered in dark style correctly
// Use light variant and reder it here
// as long as NSAppearance.NameVibrantDark is broken
- if (IdeTheme.UserInterfaceSkin == Skin.Dark)
+ if (IdeTheme.UserInterfaceTheme == Theme.Dark)
alert.Icon = img.WithStyles ("-dark").ToBitmap (GtkWorkarounds.GetScaleFactor ()).ToNSImage ();
else
alert.Icon = img.ToNSImage ();
diff --git a/main/src/addins/MacPlatform/Dialogs/MacExceptionDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacExceptionDialogHandler.cs
deleted file mode 100644
index 11f655b918..0000000000
--- a/main/src/addins/MacPlatform/Dialogs/MacExceptionDialogHandler.cs
+++ /dev/null
@@ -1,262 +0,0 @@
-//
-// MacErrorDialogHandler.cs
-//
-// Author:
-// Alan McGovern <alan@xamarin.com>
-//
-// Copyright 2011 Xamarin, Inc.
-//
-// 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.Linq;
-using System.Collections.Generic;
-
-using Foundation;
-using CoreGraphics;
-using AppKit;
-
-using MonoDevelop.Core;
-using MonoDevelop.Ide;
-using MonoDevelop.Components.Extensions;
-using MonoDevelop.MacInterop;
-using MonoDevelop.Components;
-
-namespace MonoDevelop.MacIntegration
-{
- class MacExceptionDialogHandler : IExceptionDialogHandler
- {
- class MyTextView : NSTextView
- {
- public MyTextView (CGRect frame)
- : base (frame)
- {
-
- }
-
- public override void KeyDown (NSEvent theEvent)
- {
- if (theEvent.ModifierFlags.HasFlag (NSEventModifierMask.CommandKeyMask)) {
- switch (theEvent.Characters) {
- case "x":
- Cut (this);
- break;
- case "c":
- NSRange range = SelectedRange;
- if (range.Length == 0)
- SelectAll (this);
- Copy (this);
- break;
- case "a":
- SelectAll (this);
- break;
- }
- }
-
- base.KeyDown (theEvent);
- }
- }
-
- public bool Run (ExceptionDialogData data)
- {
- using (var alert = new NSAlert { AlertStyle = NSAlertStyle.Critical }) {
- IdeTheme.ApplyTheme (alert.Window);
- alert.Icon = NSApplication.SharedApplication.ApplicationIconImage;
-
- alert.MessageText = data.Title ?? GettextCatalog.GetString ("Error");
-
- if (!string.IsNullOrEmpty (data.Message)) {
- alert.InformativeText = data.Message;
- }
-
- List<AlertButton> buttons = null;
- if (data.Buttons != null && data.Buttons.Length > 0)
- buttons = data.Buttons.Reverse ().ToList ();
-
- if (buttons != null) {
- foreach (var button in buttons) {
- var label = button.Label;
- if (button.IsStockButton)
- label = Gtk.Stock.Lookup (label).Label;
- label = label.Replace ("_", "");
-
- //this message seems to be a standard Mac message since alert handles it specially
- if (button == AlertButton.CloseWithoutSave)
- label = GettextCatalog.GetString ("Don't Save");
-
- alert.AddButton (label);
- }
- }
-
- if (data.Exception != null) {
- var scrollSize = new CGSize (400, 130);
- const float spacing = 4;
-
- string title = GettextCatalog.GetString ("View details");
- string altTitle = GettextCatalog.GetString ("Hide details");
-
- var buttonFrame = new CGRect (0, 0, 0, 0);
- var button = new NSButton (buttonFrame) {
- BezelStyle = NSBezelStyle.Disclosure,
- Title = "",
- AlternateTitle = "",
- };
- button.SetButtonType (NSButtonType.OnOff);
- button.SizeToFit ();
-
- var label = new MDClickableLabel (title) {
- Alignment = NSTextAlignment.Left,
- };
- label.SizeToFit ();
-
- button.SetFrameSize (new CGSize (button.Frame.Width, NMath.Max (button.Frame.Height, label.Frame.Height)));
- label.SetFrameOrigin (new CGPoint (button.Frame.Width + 5, button.Frame.Y));
-
- var text = new MyTextView (new CGRect (0, 0, float.MaxValue, float.MaxValue)) {
- HorizontallyResizable = true,
- };
- text.TextContainer.ContainerSize = new CGSize (float.MaxValue, float.MaxValue);
- text.TextContainer.WidthTracksTextView = true;
- text.InsertText (new NSString (data.Exception.ToString ()));
- text.Editable = false;
-
- var scrollView = new NSScrollView (new CGRect (CGPoint.Empty, CGSize.Empty)) {
- HasHorizontalScroller = true,
- HasVerticalScroller = true,
- };
-
- var accessory = new NSView (new CGRect (0, 0, scrollSize.Width, button.Frame.Height));
- accessory.AddSubview (scrollView);
- accessory.AddSubview (button);
- accessory.AddSubview (label);
-
- alert.AccessoryView = accessory;
-
- button.Activated += delegate {
- nfloat change;
- if (button.State == NSCellStateValue.On) {
- change = scrollSize.Height + spacing;
- label.StringValue = altTitle;
- scrollView.Hidden = false;
- scrollView.Frame = new CGRect (CGPoint.Empty, scrollSize);
- scrollView.DocumentView = text;
- } else {
- change = -(scrollSize.Height + spacing);
- label.StringValue = title;
- scrollView.Hidden = true;
- scrollView.Frame = new CGRect (CGPoint.Empty, CGSize.Empty);
- }
- var f = accessory.Frame;
- f.Height += change;
- accessory.Frame = f;
- var lf = label.Frame;
- lf.Y += change;
- label.Frame = lf;
- var bf = button.Frame;
- bf.Y += change;
- button.Frame = bf;
- label.SizeToFit ();
- var panel = alert.Window;
- var pf = panel.Frame;
- pf.Height += change;
- pf.Y -= change;
- panel.SetFrame (pf, true, true);
- //unless we assign the icon again, it starts nesting old icon into the warning icon
- alert.Icon = NSApplication.SharedApplication.ApplicationIconImage;
- alert.Layout ();
- };
- label.OnMouseUp += (sender, e) => button.PerformClick (e.Event);
- }
-
- var result = (int)(nint)alert.RunModal () - (int)(long)NSAlertButtonReturn.First;
- data.ResultButton = buttons != null ? buttons [result] : null;
- GtkQuartz.FocusWindow (data.TransientFor ?? MessageService.RootWindow);
- }
-
- return true;
- }
-
- class MDClickableLabel: MDLabel
- {
- public MDClickableLabel (string text) : base (text)
- {
- }
-
- public override void MouseDown (NSEvent theEvent)
- {
- if (OnMouseDown != null)
- OnMouseDown (this, new NSEventArgs (theEvent));
- else
- base.MouseDown (theEvent);
- }
-
- public event EventHandler<NSEventArgs> OnMouseDown;
-
- public override void MouseUp (NSEvent theEvent)
- {
- if (OnMouseUp != null)
- OnMouseUp (this, new NSEventArgs (theEvent));
- else
- base.MouseUp (theEvent);
- }
-
- public event EventHandler<NSEventArgs> OnMouseUp;
-
- public override void MouseEntered (NSEvent theEvent)
- {
- if (OnMouseEntered != null)
- OnMouseEntered (this, new NSEventArgs (theEvent));
- else
- base.MouseEntered (theEvent);
- }
-
- public event EventHandler<NSEventArgs> OnMouseEntered;
-
- public override void MouseExited (NSEvent theEvent)
- {
- if (OnMouseExited != null)
- OnMouseExited (this, new NSEventArgs (theEvent));
- else
- base.MouseExited (theEvent);
- }
-
- public event EventHandler<NSEventArgs> OnMouseExited;
-
- public override void MouseMoved (NSEvent theEvent)
- {
- if (OnMouseMoved != null)
- OnMouseMoved (this, new NSEventArgs (theEvent));
- else
- base.MouseMoved (theEvent);
- }
-
- public event EventHandler<NSEventArgs> OnMouseMoved;
- }
-
- class NSEventArgs : EventArgs
- {
- public NSEventArgs (NSEvent evt)
- {
- this.Event = evt;
- }
-
- public NSEvent Event { get; private set; }
- }
- }
-}
diff --git a/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs
index 4f01020f21..3b94b87407 100644
--- a/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs
+++ b/main/src/addins/MacPlatform/Dialogs/MacOpenFileDialogHandler.cs
@@ -34,7 +34,6 @@ using AppKit;
using MonoDevelop.Components;
using MonoDevelop.Core;
using MonoDevelop.Ide;
-using MonoDevelop.Components;
using MonoDevelop.Ide.Extensions;
using MonoDevelop.Ide.Gui;
using MonoDevelop.MacInterop;
diff --git a/main/src/addins/MacPlatform/Dialogs/SelectEncodingPopUpButton.cs b/main/src/addins/MacPlatform/Dialogs/SelectEncodingPopUpButton.cs
index 5483cbbd78..c8787d809f 100644
--- a/main/src/addins/MacPlatform/Dialogs/SelectEncodingPopUpButton.cs
+++ b/main/src/addins/MacPlatform/Dialogs/SelectEncodingPopUpButton.cs
@@ -32,7 +32,6 @@ using AppKit;
using MonoDevelop.Core;
using MonoDevelop.Ide;
using MonoDevelop.Projects.Text;
-using System.Linq;
namespace MonoDevelop.MacIntegration
{
diff --git a/main/src/addins/MacPlatform/MacPlatform.addin.xml b/main/src/addins/MacPlatform/MacPlatform.addin.xml
index b30596b41a..2d1fcbd506 100644
--- a/main/src/addins/MacPlatform/MacPlatform.addin.xml
+++ b/main/src/addins/MacPlatform/MacPlatform.addin.xml
@@ -70,7 +70,6 @@
<Class class="MonoDevelop.MacIntegration.MacAddFileDialogHandler" />
<Class class="MonoDevelop.MacIntegration.MacOpenFileDialogHandler" />
<Class class="MonoDevelop.MacIntegration.MacAlertDialogHandler" />
- <Class class="MonoDevelop.MacIntegration.MacExceptionDialogHandler" />
</Condition>
</Extension>
diff --git a/main/src/addins/MacPlatform/MacPlatform.cs b/main/src/addins/MacPlatform/MacPlatform.cs
index 500fb59a5f..4906339251 100644
--- a/main/src/addins/MacPlatform/MacPlatform.cs
+++ b/main/src/addins/MacPlatform/MacPlatform.cs
@@ -50,6 +50,8 @@ using MonoDevelop.Components;
using MonoDevelop.Components.MainToolbar;
using MonoDevelop.MacIntegration.MacMenu;
using MonoDevelop.Components.Extensions;
+using System.Runtime.InteropServices;
+using ObjCRuntime;
namespace MonoDevelop.MacIntegration
{
@@ -72,7 +74,10 @@ namespace MonoDevelop.MacIntegration
return applicationMenuName ?? BrandingService.ApplicationName;
}
set {
- applicationMenuName = value;
+ if (applicationMenuName != value) {
+ applicationMenuName = value;
+ OnApplicationMenuNameChanged ();
+ }
}
}
@@ -271,7 +276,6 @@ namespace MonoDevelop.MacIntegration
initedApp = true;
IdeApp.Workbench.RootWindow.DeleteEvent += HandleDeleteEvent;
- BrandingService.ApplicationNameChanged += ApplicationNameChanged;
if (MacSystemInformation.OsVersion >= MacSystemInformation.Lion) {
IdeApp.Workbench.RootWindow.Realized += (sender, args) => {
@@ -281,7 +285,7 @@ namespace MonoDevelop.MacIntegration
}
PatchGtkTheme ();
- NSNotificationCenter.DefaultCenter.AddObserver (NSCell.ControlTintChangedNotification, notif => Runtime.RunInMainThread (
+ NSNotificationCenter.DefaultCenter.AddObserver (NSCell.ControlTintChangedNotification, notif => Core.Runtime.RunInMainThread (
delegate {
Styles.LoadStyle();
PatchGtkTheme();
@@ -301,7 +305,7 @@ namespace MonoDevelop.MacIntegration
return GettextCatalog.GetString ("Hide {0}", ApplicationMenuName);
}
- static void ApplicationNameChanged (object sender, EventArgs e)
+ static void OnApplicationMenuNameChanged ()
{
Command aboutCommand = IdeApp.CommandService.GetCommand (HelpCommands.About);
if (aboutCommand != null)
@@ -396,7 +400,7 @@ namespace MonoDevelop.MacIntegration
//OpenFiles may pump the mainloop, but can't do that from an AppleEvent, so use a brief timeout
GLib.Timeout.Add (10, delegate {
IdeApp.OpenFiles (e.Documents.Select (
- doc => new FileOpenInformation (doc.Key, doc.Value, 1, OpenDocumentOptions.DefaultInternal))
+ doc => new FileOpenInformation (doc.Key, null, doc.Value, 1, OpenDocumentOptions.DefaultInternal))
);
return false;
});
@@ -422,7 +426,7 @@ namespace MonoDevelop.MacIntegration
if (!Int32.TryParse (qs ["column"], out column))
column = 1;
- return new FileOpenInformation (Uri.UnescapeDataString(fileUri.AbsolutePath),
+ return new FileOpenInformation (Uri.UnescapeDataString(fileUri.AbsolutePath), null,
line, column, OpenDocumentOptions.DefaultInternal);
} catch (Exception ex) {
LoggingService.LogError ("Invalid TextMate URI: " + url, ex);
@@ -445,48 +449,37 @@ namespace MonoDevelop.MacIntegration
}
}
+ [DllImport ("/usr/lib/libobjc.dylib", EntryPoint = "objc_msgSend")]
+ public extern static IntPtr IntPtr_objc_msgSend_IntPtr (IntPtr receiver, IntPtr selector, IntPtr arg1);
+
static void SetupDockIcon ()
{
- FilePath exePath = System.Reflection.Assembly.GetExecutingAssembly ().Location;
NSObject initialBundleIconFileValue;
- string iconFile = null;
-
- string appleTheme = NSUserDefaults.StandardUserDefaults.StringForKey ("AppleInterfaceStyle");
- // Try setting a dark variant of the application dock icon if one exists in the app bundle.
+ // Don't do anything if we're inside an app bundle.
if (NSBundle.MainBundle.InfoDictionary.TryGetValue (new NSString ("CFBundleIconFile"), out initialBundleIconFileValue)) {
- FilePath bundleIconRoot = GetAppBundleRoot (exePath).Combine ("Contents", "Resources");
- NSString initialBundleIconFile = (NSString)initialBundleIconFileValue;
+ return;
+ }
- if (appleTheme == "Dark") {
- iconFile = bundleIconRoot.Combine (Path.GetFileNameWithoutExtension (initialBundleIconFile) + "~dark" + Path.GetExtension (initialBundleIconFile));
- }
+ // Setup without bundle.
+ FilePath exePath = System.Reflection.Assembly.GetExecutingAssembly ().Location;
+ string iconName = BrandingService.GetString ("ApplicationIcon");
+ string iconFile = null;
- // There is no monodevelop~dark.icns, fallback to monodevelop.icns
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light || iconFile == null || !File.Exists (iconFile)) {
- iconFile = bundleIconRoot.Combine (initialBundleIconFile);
- }
+ if (iconName != null) {
+ iconFile = BrandingService.GetFile (iconName);
} else {
- // Setup without bundle.
- string iconName = BrandingService.GetString ("ApplicationIcon");
- if (iconName != null) {
- if (appleTheme == "Dark") {
- string darkIconName = Path.GetFileNameWithoutExtension (iconName) + "~dark" + Path.GetExtension (iconName);
- iconFile = BrandingService.GetFile (darkIconName);
- }
-
- if (appleTheme == "Light" || iconFile == null) {
- iconFile = BrandingService.GetFile (iconName);
- }
- } else {
- // assume running from build directory
- var mdSrcMain = exePath.ParentDirectory.ParentDirectory.ParentDirectory;
- iconFile = mdSrcMain.Combine ("theme-icons", "Mac", "monodevelop.icns");
- }
+ // assume running from build directory
+ var mdSrcMain = exePath.ParentDirectory.ParentDirectory.ParentDirectory;
+ iconFile = mdSrcMain.Combine ("theme-icons", "Mac", "monodevelop.icns");
}
if (File.Exists (iconFile)) {
- NSApplication.SharedApplication.ApplicationIconImage = new NSImage (iconFile);
+ var image = new NSImage ();
+ var imageFile = new NSString (iconFile);
+
+ IntPtr p = IntPtr_objc_msgSend_IntPtr (image.Handle, Selector.GetHandle ("initByReferencingFile:"), imageFile.Handle);
+ NSApplication.SharedApplication.ApplicationIconImage = ObjCRuntime.Runtime.GetNSObject<NSImage> (p);
}
}
diff --git a/main/src/addins/MacPlatform/MacPlatform.csproj b/main/src/addins/MacPlatform/MacPlatform.csproj
index d8eb27bc3b..cdee35e0c6 100644
--- a/main/src/addins/MacPlatform/MacPlatform.csproj
+++ b/main/src/addins/MacPlatform/MacPlatform.csproj
@@ -19,6 +19,7 @@
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<ConsolePause>False</ConsolePause>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<NoWarn>1591;1573</NoWarn>
@@ -119,7 +120,6 @@
<Compile Include="MacExternalConsoleProcess.cs" />
<Compile Include="MacInterop\Carbon.cs" />
<Compile Include="MacInterop\AppleEvents\Native.cs" />
- <Compile Include="Dialogs\MacExceptionDialogHandler.cs" />
<Compile Include="MacMenu\MDLinkMenuItem.cs" />
<Compile Include="MacMenu\MDMenu.cs" />
<Compile Include="MacMenu\MDMenuHeaderItem.cs" />
diff --git a/main/src/addins/MacPlatform/MainToolbar/AwesomeBar.cs b/main/src/addins/MacPlatform/MainToolbar/AwesomeBar.cs
index ec335ae567..bcea700164 100644
--- a/main/src/addins/MacPlatform/MainToolbar/AwesomeBar.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/AwesomeBar.cs
@@ -30,7 +30,7 @@ using CoreGraphics;
using Foundation;
using MonoDevelop.Core;
-using MonoDevelop.Core;
+using Xwt.Mac;
using MonoDevelop.Ide;
namespace MonoDevelop.MacIntegration.MainToolbar
@@ -77,6 +77,83 @@ namespace MonoDevelop.MacIntegration.MainToolbar
}
}
+ public override void ViewDidMoveToWindow ()
+ {
+ base.ViewDidMoveToWindow ();
+
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light) {
+ return;
+ }
+
+ // I'm sorry. I'm so so sorry.
+ // When the user has Graphite appearance set in System Preferences on El Capitan
+ // and they enter fullscreen mode, Cocoa doesn't respect the VibrantDark appearance
+ // making the toolbar background white instead of black, however the toolbar items do still respect
+ // the dark appearance, making them white on white.
+ //
+ // So, an absolute hack is to go through the toolbar hierarchy and make all the views background colours
+ // be the dark grey we wanted them to be in the first place.
+ //
+ // https://bugzilla.xamarin.com/show_bug.cgi?id=40160
+ //
+ if (Window == null || Window == MacInterop.GtkQuartz.GetWindow (IdeApp.Workbench.RootWindow)) {
+ if (Superview != null) {
+ Superview.WantsLayer = false;
+
+ if (Superview.Superview != null) {
+ Superview.Superview.WantsLayer = false;
+ }
+ }
+ return;
+ }
+
+ var bgColor = Styles.DarkToolbarBackgroundColor.ToNSColor ().CGColor;
+
+ // NSToolbarItemViewer
+ if (Superview != null) {
+ Superview.WantsLayer = true;
+ Superview.Layer.BackgroundColor = bgColor;
+
+ if (Superview.Superview != null) {
+ // _NSToolbarViewClipView
+ Superview.Superview.WantsLayer = true;
+ Superview.Superview.Layer.BackgroundColor = bgColor;
+
+ if (Superview.Superview.Superview != null && Superview.Superview.Superview.Superview != null) {
+ // NSTitlebarView
+ Superview.Superview.Superview.Superview.WantsLayer = true;
+ Superview.Superview.Superview.Superview.Layer.BackgroundColor = bgColor;
+ }
+ }
+ }
+ }
+
+ NSObject superviewFrameChangeObserver;
+ public override void ViewWillMoveToSuperview (NSView newSuperview)
+ {
+ if (Superview != null && superviewFrameChangeObserver != null) {
+ NSNotificationCenter.DefaultCenter.RemoveObserver (superviewFrameChangeObserver);
+ superviewFrameChangeObserver = null;
+
+ Superview.PostsFrameChangedNotifications = false;
+ }
+
+ base.ViewWillMoveToSuperview (newSuperview);
+ }
+
+ public override void ViewDidMoveToSuperview ()
+ {
+ base.ViewDidMoveToSuperview ();
+
+ if (Superview != null) {
+ Superview.PostsFrameChangedNotifications = true;
+ superviewFrameChangeObserver = NSNotificationCenter.DefaultCenter.AddObserver (NSView.FrameChangedNotification, (note) => {
+ // Centre vertically in superview frame
+ Frame = new CGRect (0, Superview.Frame.Y + (Superview.Frame.Height - ToolbarWidgetHeight) / 2, Superview.Frame.Width, ToolbarWidgetHeight);
+ }, Superview);
+ }
+ }
+
void UpdateLayout ()
{
RunButton.Frame = new CGRect (toolbarPadding, 0, runButtonWidth, ToolbarWidgetHeight);
@@ -92,8 +169,8 @@ namespace MonoDevelop.MacIntegration.MainToolbar
StatusBar.Frame = new CGRect (Math.Round((Frame.Width - statusbarWidth) / 2), 0, statusbarWidth - 2, ToolbarWidgetHeight);
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Dark) {
- SearchBar.Frame = new CGRect (Frame.Width - searchbarWidth - 10, 0, searchbarWidth, ToolbarWidgetHeight);
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark) {
+ SearchBar.Frame = new CGRect (Frame.Width - searchbarWidth, 0, searchbarWidth, ToolbarWidgetHeight);
} else {
nfloat elcapYOffset = 0;
nfloat elcapHOffset = 0;
@@ -107,7 +184,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
elcapYOffset = scaleFactor == 2 ? -0.5f : -1;
elcapHOffset = 1.0f;
}
- SearchBar.Frame = new CGRect (Frame.Width - searchbarWidth - 10, 0 + elcapYOffset, searchbarWidth, ToolbarWidgetHeight + elcapHOffset);
+ SearchBar.Frame = new CGRect (Frame.Width - searchbarWidth, 0 + elcapYOffset, searchbarWidth, ToolbarWidgetHeight + elcapHOffset);
}
var selectorSize = SelectorView.SizeThatFits (new CGSize (spaceLeft, ToolbarWidgetHeight));
diff --git a/main/src/addins/MacPlatform/MainToolbar/ButtonBar.cs b/main/src/addins/MacPlatform/MainToolbar/ButtonBar.cs
index 5c9766f166..badd37cc53 100644
--- a/main/src/addins/MacPlatform/MainToolbar/ButtonBar.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/ButtonBar.cs
@@ -41,11 +41,11 @@ namespace MonoDevelop.MacIntegration.MainToolbar
[Register]
class ButtonBar : NSSegmentedControl
{
- class DarkSkinSegmentedCell : NSSegmentedCell
+ class DarkThemeSegmentedCell : NSSegmentedCell
{
public override void DrawWithFrame (CGRect cellFrame, NSView inView)
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Dark) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark) {
var inset = cellFrame.Inset (0.25f, 0.25f);
inset = new CGRect (inset.X, inset.Y + 2, inset.Width, inset.Height - 2);
@@ -86,7 +86,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public ButtonBar (IEnumerable<IButtonBarButton> buttons)
{
- Cell = new DarkSkinSegmentedCell ();
+ Cell = new DarkThemeSegmentedCell ();
this.buttons = buttons.ToList ();
diff --git a/main/src/addins/MacPlatform/MainToolbar/ButtonBarContainer.cs b/main/src/addins/MacPlatform/MainToolbar/ButtonBarContainer.cs
index c26018205f..b46affe54d 100644
--- a/main/src/addins/MacPlatform/MainToolbar/ButtonBarContainer.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/ButtonBarContainer.cs
@@ -79,7 +79,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
nfloat y = 0;
nfloat height = AwesomeBar.ToolbarWidgetHeight;
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Dark) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark) {
y = 2;
height += 2;
} else {
diff --git a/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs b/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs
index 134c778477..c3a14432be 100644
--- a/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs
@@ -46,6 +46,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
internal NSToolbar widget;
internal Gtk.Window gtkWindow;
+ public static bool IsFullscreen { get; private set; }
AwesomeBar awesomeBar;
RunButton runButton {
@@ -140,15 +141,21 @@ namespace MonoDevelop.MacIntegration.MainToolbar
var item = widget.Items[0];
var abFrameInWindow = awesomeBar.ConvertRectToView (awesomeBar.Frame, null);
- var awesomebarHeight = AwesomeBar.ToolbarWidgetHeight;//MacSystemInformation.OsVersion >= MacSystemInformation.ElCapitan ? 24 : 22;
+ var awesomebarHeight = AwesomeBar.ToolbarWidgetHeight;
var size = new CGSize (win.Frame.Width - abFrameInWindow.X - 4, awesomebarHeight);
+
item.MinSize = size;
item.MaxSize = size;
});
+ // We can't use the events that Xamarin.Mac adds for delegate methods as they will overwrite
+ // the delegate that Gtk has added
NSWindow nswin = GtkMacInterop.GetNSWindow (window);
NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidResizeNotification, resizeAction, nswin);
NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidEndLiveResizeNotification, resizeAction, nswin);
+
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.WillEnterFullScreenNotification, (note) => IsFullscreen = true, nswin);
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.WillExitFullScreenNotification, (note) => IsFullscreen = false, nswin);
}
internal void Initialize ()
diff --git a/main/src/addins/MacPlatform/MainToolbar/MultiResImage.cs b/main/src/addins/MacPlatform/MainToolbar/MultiResImage.cs
index d4221451f7..0e0e2f5656 100644
--- a/main/src/addins/MacPlatform/MainToolbar/MultiResImage.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/MultiResImage.cs
@@ -56,7 +56,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
static string MakeResName (string filename, string style, bool retina = false)
{
- bool dark = IdeApp.Preferences.UserInterfaceSkin == Skin.Dark;
+ bool dark = IdeApp.Preferences.UserInterfaceTheme == Theme.Dark;
if (!string.IsNullOrEmpty (style)) {
style = "~" + style;
diff --git a/main/src/addins/MacPlatform/MainToolbar/RunButton.cs b/main/src/addins/MacPlatform/MainToolbar/RunButton.cs
index cc49a859e2..fc8cf20267 100644
--- a/main/src/addins/MacPlatform/MainToolbar/RunButton.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/RunButton.cs
@@ -63,13 +63,13 @@ namespace MonoDevelop.MacIntegration.MainToolbar
buildIcon = MultiResImage.CreateMultiResImage ("build", "");
// We can use Template images supported by NSButton, thus no reloading
- // on theme/skin change is required.
+ // on theme change is required.
stopIcon.Template = continueIcon.Template = buildIcon.Template = true;
}
void UpdateCell ()
{
- Appearance = NSAppearance.GetAppearance (IdeApp.Preferences.UserInterfaceSkin == Skin.Dark ? NSAppearance.NameVibrantDark : NSAppearance.NameAqua);
+ Appearance = NSAppearance.GetAppearance (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark ? NSAppearance.NameVibrantDark : NSAppearance.NameAqua);
NeedsDisplay = true;
}
@@ -118,7 +118,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
{
public override void DrawBezelWithFrame (CGRect frame, NSView controlView)
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Dark) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark) {
var inset = frame.Inset (0.25f, 0.25f);
var path = NSBezierPath.FromRoundedRect (inset, 3, 3);
@@ -131,10 +131,17 @@ namespace MonoDevelop.MacIntegration.MainToolbar
//
// However after switching theme this filter is removed and the colour set here is the actual colour
// displayed onscreen.
- Styles.DarkBorderBrokenColor.ToNSColor ().SetStroke ();
+
+ // This also seems to happen in fullscreen mode
+ if (MainToolbar.IsFullscreen) {
+ Styles.DarkBorderColor.ToNSColor ().SetStroke ();
+ } else {
+ Styles.DarkBorderBrokenColor.ToNSColor ().SetStroke ();
+ }
+
path.Stroke ();
} else {
- if (controlView.Window.Screen.BackingScaleFactor == 2) {
+ if (controlView.Window?.Screen?.BackingScaleFactor == 2) {
frame = new CGRect (frame.X, frame.Y + 0.5f, frame.Width, frame.Height);
}
base.DrawBezelWithFrame (frame, controlView);
@@ -144,7 +151,17 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public override void DrawInteriorWithFrame (CGRect cellFrame, NSView inView)
{
cellFrame = new CGRect (cellFrame.X, cellFrame.Y + 0.5f, cellFrame.Width, cellFrame.Height);
+
+ var old = Enabled;
+
+ // In fullscreen mode with dark theme on El Capitan, the disabled icon picked is for the
+ // normal appearance so it is too dark. Hack this so it comes up lighter.
+ // For further information see the comment in AwesomeBar.cs
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark && MainToolbar.IsFullscreen) {
+ Enabled = true;
+ }
base.DrawInteriorWithFrame (cellFrame, inView);
+ Enabled = old;
}
}
}
diff --git a/main/src/addins/MacPlatform/MainToolbar/SearchBar.cs b/main/src/addins/MacPlatform/MainToolbar/SearchBar.cs
index 11b73a8bd5..d820039ed9 100644
--- a/main/src/addins/MacPlatform/MainToolbar/SearchBar.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/SearchBar.cs
@@ -38,7 +38,6 @@ namespace MonoDevelop.MacIntegration.MainToolbar
[Register]
class SearchBar : NSSearchField
{
- bool debugSearchbar;
internal Widget gtkWidget;
internal event EventHandler<Xwt.KeyEventArgs> KeyPressed;
internal event EventHandler LostFocus;
@@ -48,17 +47,23 @@ namespace MonoDevelop.MacIntegration.MainToolbar
// To only draw the border, NSSearchFieldCell needs to be subclassed. Unfortunately this stops the
// animation on activation working. I suspect this is implemented inside the NSSearchField rather
// than the NSSearchFieldCell which can't do animation.
- class DarkSkinSearchFieldCell : NSSearchFieldCell
+ class DarkThemeSearchFieldCell : NSSearchFieldCell
{
public override void DrawWithFrame (CGRect cellFrame, NSView inView)
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Dark) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark) {
var inset = cellFrame.Inset (0.25f, 0.25f);
if (!ShowsFirstResponder) {
var path = NSBezierPath.FromRoundedRect (inset, 3, 3);
path.LineWidth = 0.5f;
- Styles.DarkBorderColor.ToNSColor ().SetStroke ();
+ // Hack to make the border be the correct colour in fullscreen mode
+ // See comment in AwesomeBar.cs for more details
+ if (MainToolbar.IsFullscreen) {
+ Styles.DarkBorderBrokenColor.ToNSColor ().SetStroke ();
+ } else {
+ Styles.DarkBorderColor.ToNSColor ().SetStroke ();
+ }
path.Stroke ();
}
@@ -79,7 +84,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
CancelButtonCell.DrawWithFrame (CancelButtonRectForBounds (inset), inView);
}
} else {
- if (inView.Window.Screen.BackingScaleFactor == 2) {
+ if (inView.Window?.Screen?.BackingScaleFactor == 2) {
nfloat yOffset = 0f;
nfloat hOffset = 0f;
@@ -145,7 +150,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public override void SelectWithFrame (CGRect aRect, NSView inView, NSText editor, NSObject delegateObject, nint selStart, nint selLength)
{
nfloat xOffset = 0;
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Dark) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark) {
xOffset = -1.5f;
}
// y does not appear to affect anything. Whatever value is set here for y will always be 1px below the
@@ -174,11 +179,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public SearchBar ()
{
- Cell = new DarkSkinSearchFieldCell ();
+ Cell = new DarkThemeSearchFieldCell ();
Initialize ();
- var debugFilePath = System.IO.Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.Personal), ".xs-searchbar-debug");
- debugSearchbar = System.IO.File.Exists (debugFilePath);
Ide.Gui.Styles.Changed += (o, e) => UpdateLayout ();
UpdateLayout ();
diff --git a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
index 85db735e52..009f6b3ac0 100644
--- a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
@@ -307,6 +307,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public override void MouseDown (NSEvent theEvent)
{
+ if (!Enabled)
+ return;
+
var locationInView = ConvertPointFromView (theEvent.LocationInWindow, null);
var cellIdx = IndexOfCellAtX (locationInView.X);
@@ -315,11 +318,10 @@ namespace MonoDevelop.MacIntegration.MainToolbar
}
var item = PathComponentCells [cellIdx];
- if (item == null)
+ if (item == null || !item.Enabled)
return;
var componentRect = ((NSPathCell)Cell).GetRect (item, Frame, this);
- int idx = -1;
int i = 0;
NSMenuItem selectedItem = null;
@@ -376,7 +378,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
if (menu.Count > 1) {
var offs = new CGPoint (componentRect.Left + 3, componentRect.Top + 3);
- if (Window.Screen.BackingScaleFactor == 2)
+ if (Window?.Screen?.BackingScaleFactor == 2)
offs.Y += 0.5f; // fine tune menu position on retinas
menu.PopUpMenu (selectedItem, offs, this);
@@ -449,7 +451,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
// for its icons. It may be related to the images being initially loaded through the Gtk backend and then converted to NSImage
// at a later date.
// For whatever reason, we custom load the images here through NSImage, providing both 1x and 2x image reps.
- PathComponentCells [ConfigurationIdx].Image = MultiResImage.CreateMultiResImage ("project", deviceStyle);
+ PathComponentCells [ConfigurationIdx].Image = MultiResImage.CreateMultiResImage ("project", projectStyle);
PathComponentCells [RuntimeIdx].Image = MultiResImage.CreateMultiResImage ("device", deviceStyle);
RealignTexts ();
}
diff --git a/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs b/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs
index 35c0fd229e..74a12e0393 100644
--- a/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/StatusBar.cs
@@ -219,6 +219,8 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public void BeginProgress ()
{
oldFraction = 0.0;
+ progressLayer.RemoveAllAnimations ();
+
progressLayer.Hidden = false;
progressLayer.Opacity = 1;
progressLayer.Frame = new CGRect (0, 0, 0, barHeight);
@@ -273,8 +275,13 @@ namespace MonoDevelop.MacIntegration.MainToolbar
void AttachFadeoutAnimation (CALayer progress, CAAnimation animation, Func<bool> fadeoutVerifier)
{
animation.AnimationStopped += (sender, e) => {
- if (!fadeoutVerifier ())
+ if (!fadeoutVerifier ()) {
return;
+ }
+
+ if (!e.Finished) {
+ return;
+ }
CABasicAnimation fadeout = CABasicAnimation.FromKeyPath ("opacity");
fadeout.From = NSNumber.FromDouble (1);
@@ -286,9 +293,17 @@ namespace MonoDevelop.MacIntegration.MainToolbar
if (!e2.Finished)
return;
+ // Reset all the properties.
inProgress = false;
- progress.Opacity = 0;
+
+ progress.Hidden = true;
+
+ progress.Opacity = 1;
+ progress.Frame = new CGRect (0, 0, 0, barHeight);
progress.RemoveAllAnimations ();
+ oldFraction = 0.0;
+
+ progress.Hidden = false;
};
progress.Name = ProgressLayerFadingId;
progress.AddAnimation (fadeout, "opacity");
@@ -337,8 +352,6 @@ namespace MonoDevelop.MacIntegration.MainToolbar
const string ProgressLayerFadingId = "ProgressLayerFading";
const string growthAnimationKey = "bounds";
StatusBarContextHandler ctxHandler;
- Stack<double> progressMarks = new Stack<double> ();
- bool currentTextIsMarkup;
string text;
MessageType messageType;
NSColor textColor;
@@ -449,7 +462,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
void UpdateApplicationNamePlaceholderText ()
{
- textField.Cell.PlaceholderAttributedString = GetStatusString (BrandingService.ApplicationName, ColorForType (MessageType.Ready));
+ textField.Cell.PlaceholderAttributedString = GetStatusString (BrandingService.ApplicationLongName, ColorForType (MessageType.Ready));
}
void ApplicationNameChanged (object sender, EventArgs e)
@@ -466,13 +479,13 @@ namespace MonoDevelop.MacIntegration.MainToolbar
void LoadStyles (object sender = null, EventArgs args = null)
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Dark) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark) {
Appearance = NSAppearance.GetAppearance (NSAppearance.NameVibrantDark);
} else {
Appearance = NSAppearance.GetAppearance (NSAppearance.NameAqua);
}
- textField.Cell.PlaceholderAttributedString = GetStatusString (BrandingService.ApplicationName, ColorForType (MessageType.Ready));
+ UpdateApplicationNamePlaceholderText ();
textColor = ColorForType (messageType);
ReconstructString ();
}
@@ -515,7 +528,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
{
if (string.IsNullOrEmpty (text)) {
textField.AttributedStringValue = new NSAttributedString ("");
- textField.Cell.PlaceholderAttributedString = GetStatusString (BrandingService.ApplicationName, ColorForType (MessageType.Ready));
+ UpdateApplicationNamePlaceholderText ();
imageView.Image = ImageService.GetIcon (Stock.StatusSteady).ToNSImage ();
} else {
textField.AttributedStringValue = GetStatusString (text, textColor);
@@ -611,6 +624,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public void ShowReady ()
{
ShowMessage (null, "", false, MessageType.Ready);
+ SetMessageSourcePad (null);
}
static Pad sourcePad;
@@ -669,7 +683,6 @@ namespace MonoDevelop.MacIntegration.MainToolbar
return false;
text = message;
- currentTextIsMarkup = isMarkup;
messageType = statusType;
textColor = ColorForType (statusType);
diff --git a/main/src/addins/MacPlatform/MainToolbar/Styles.cs b/main/src/addins/MacPlatform/MainToolbar/Styles.cs
index 0c4878aac4..a877a4a361 100644
--- a/main/src/addins/MacPlatform/MainToolbar/Styles.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/Styles.cs
@@ -41,6 +41,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
// Dark workaround colors
public static Color DarkBorderColor { get; private set; }
public static Color DarkBorderBrokenColor { get; private set; }
+ public static Color DarkToolbarBackgroundColor { get; private set; }
static Styles ()
{
@@ -50,7 +51,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public static void LoadStyles ()
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light) {
BaseBackgroundColor = Ide.Gui.Styles.BaseBackgroundColor;
BaseForegroundColor = Ide.Gui.Styles.BaseForegroundColor;
DisabledForegroundColor = Xwt.Mac.Util.ToXwtColor (AppKit.NSColor.DisabledControlText); //Ide.Gui.Styles.DimTextColor;
@@ -72,6 +73,8 @@ namespace MonoDevelop.MacIntegration.MainToolbar
// To get the DarkBorderColor we need to use a workaround.
// See comment in ColoredButtonCell.DrawBezelWithFrame (RunButton.cs)
DarkBorderBrokenColor = Color.FromName ("#3e3e3e");
+
+ DarkToolbarBackgroundColor = Color.FromName ("#4e4e4e");
}
}
}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs
index 8c24cc2b07..2e83c8e4b1 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs
@@ -165,10 +165,10 @@ namespace MonoDevelop.AssemblyBrowser
var netProject = project as DotNetProject;
if (netProject == null)
continue;
- foreach (string file in await netProject.GetReferencedAssemblies (ConfigurationSelector.Default, false)) {
- if (!System.IO.File.Exists (file))
+ foreach (var file in await netProject.GetReferencedAssemblies (ConfigurationSelector.Default, false)) {
+ if (!System.IO.File.Exists (file.FilePath))
continue;
- Widget.AddReferenceByFileName (file);
+ Widget.AddReferenceByFileName (file.FilePath);
}
}
}
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
index ebbdb39a3a..b7d85a10a7 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs
@@ -156,37 +156,7 @@ namespace MonoDevelop.AssemblyBrowser
return referencedSegment.Reference.ToString ();
}
- class FastNonInterningProvider : InterningProvider
- {
- Dictionary<string, string> stringDict = new Dictionary<string, string>();
-
- public override string Intern (string text)
- {
- if (text == null)
- return null;
-
- string output;
- if (stringDict.TryGetValue(text, out output))
- return output;
- stringDict [text] = text;
- return text;
- }
- public override ISupportsInterning Intern (ISupportsInterning obj)
- {
- return obj;
- }
-
- public override IList<T> InternList<T>(IList<T> list)
- {
- return list;
- }
-
- public override object InternValue (object obj)
- {
- return obj;
- }
- }
public AssemblyBrowserWidget ()
{
@@ -257,9 +227,6 @@ namespace MonoDevelop.AssemblyBrowser
languageCombobox.Active = Math.Min (2, Math.Max (0, PropertyService.Get ("AssemblyBrowser.Language", 0)));
languageCombobox.Changed += LanguageComboboxhandleChanged;
#pragma warning disable 618
- loader = new CecilLoader (true);
- loader.InterningProvider = new FastNonInterningProvider ();
- loader.IncludeInternalMembers = true;
TreeView = new AssemblyBrowserTreeView (new NodeBuilder[] {
new ErrorNodeBuilder (),
new ProjectNodeBuilder (this),
@@ -498,9 +465,7 @@ namespace MonoDevelop.AssemblyBrowser
if (p == null)
continue;
AppendTypeReference (result, p.Type);
- if (p.IsOut)
- result.Append ("&");
- if (p.IsRef) {
+ if (p.IsRef || p.IsOut) {
result.Append ("@");
}
}
@@ -1387,7 +1352,7 @@ namespace MonoDevelop.AssemblyBrowser
void OpenFromAssembly (string url, AssemblyLoader currentAssembly, bool expandNode = true)
{
- var cecilObject = loader.GetCecilObject (currentAssembly.UnresolvedAssembly);
+ var cecilObject = currentAssembly.CecilLoader.GetCecilObject (currentAssembly.UnresolvedAssembly);
if (cecilObject == null)
return;
@@ -1426,7 +1391,7 @@ namespace MonoDevelop.AssemblyBrowser
{
var tasks = new List<Task> ();
foreach (var definition in definitions.ToArray ()) {
- var cecilObject = loader.GetCecilObject (definition.UnresolvedAssembly);
+ var cecilObject = definition.CecilLoader.GetCecilObject (definition.UnresolvedAssembly);
if (cecilObject == null) {
LoggingService.LogWarning ("Assembly browser: Can't find assembly: " + definition.UnresolvedAssembly.FullAssemblyName + ".");
continue;
@@ -1474,7 +1439,7 @@ namespace MonoDevelop.AssemblyBrowser
AssemblyDefinition cu = null;
foreach (var unit in definitions) {
if (unit.UnresolvedAssembly.AssemblyName == fileName)
- cu = loader.GetCecilObject (unit.UnresolvedAssembly);
+ cu = unit.CecilLoader.GetCecilObject (unit.UnresolvedAssembly);
}
if (cu == null)
return;
@@ -1558,7 +1523,6 @@ namespace MonoDevelop.AssemblyBrowser
this.UIManager = null;
}
- this.loader = null;
this.languageCombobox.Changed -= LanguageComboboxhandleChanged;
// this.searchInCombobox.Changed -= SearchInComboboxhandleChanged;
// this.searchEntry.Changed -= SearchEntryhandleChanged;
@@ -1576,13 +1540,7 @@ namespace MonoDevelop.AssemblyBrowser
}
}
- CecilLoader loader;
- internal CecilLoader CecilLoader {
- get {
- return loader;
- }
- }
-
+
List<AssemblyLoader> definitions = new List<AssemblyLoader> ();
List<Project> projects = new List<Project> ();
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs
index ff807c4658..645a99490b 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyLoader.cs
@@ -30,6 +30,7 @@ using System.Threading.Tasks;
using MonoDevelop.Core;
using System.IO;
using System.Threading;
+using System.Collections.Generic;
namespace MonoDevelop.AssemblyBrowser
{
@@ -65,7 +66,15 @@ namespace MonoDevelop.AssemblyBrowser
return assemblyLoaderTask.Result.Item2;
}
}
-
+
+ CecilLoader loader;
+ internal CecilLoader CecilLoader {
+ get {
+ return loader;
+ }
+ }
+
+
public AssemblyLoader (AssemblyBrowserWidget widget, string fileName)
{
if (widget == null)
@@ -76,19 +85,57 @@ namespace MonoDevelop.AssemblyBrowser
FileName = fileName;
if (!File.Exists (fileName))
throw new ArgumentException ("File doesn't exist.", nameof (fileName));
- assemblyLoaderTask = Task.Run (() => {
+
+ loader = new CecilLoader (true);
+ loader.InterningProvider = new FastNonInterningProvider ();
+ loader.IncludeInternalMembers = true;
+
+ assemblyLoaderTask = Task.Run ( () => {
try {
var asm = AssemblyDefinition.ReadAssembly (FileName, new ReaderParameters {
AssemblyResolver = this
});
- return Tuple.Create (asm, widget.CecilLoader.LoadAssembly (asm));
+ var loadedAssembley = loader.LoadAssembly (asm);
+ return Tuple.Create (asm, loadedAssembley);
} catch (Exception e) {
LoggingService.LogError ("Error while reading assembly " + FileName, e);
return null;
}
}, src.Token);
}
-
+
+ class FastNonInterningProvider : InterningProvider
+ {
+ Dictionary<string, string> stringDict = new Dictionary<string, string> ();
+
+ public override string Intern (string text)
+ {
+ if (text == null)
+ return null;
+
+ string output;
+ if (stringDict.TryGetValue (text, out output))
+ return output;
+ stringDict [text] = text;
+ return text;
+ }
+
+ public override ISupportsInterning Intern (ISupportsInterning obj)
+ {
+ return obj;
+ }
+
+ public override IList<T> InternList<T> (IList<T> list)
+ {
+ return list;
+ }
+
+ public override object InternValue (object obj)
+ {
+ return obj;
+ }
+ }
+
#region IAssemblyResolver implementation
AssemblyDefinition IAssemblyResolver.Resolve (AssemblyNameReference name)
{
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs
index 683c8b04a1..c1c3f12c23 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyBrowserTypeNodeBuilder.cs
@@ -50,10 +50,9 @@ namespace MonoDevelop.AssemblyBrowser
}
}
- internal CecilLoader CecilLoader {
- get {
- return Widget.CecilLoader;
- }
+ internal CecilLoader GetCecilLoader (ITreeNavigator navigator)
+ {
+ return navigator.GetParentDataItem<AssemblyLoader> (false).CecilLoader;
}
public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs
index ed73ec940b..b502934da5 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs
@@ -148,8 +148,9 @@ namespace MonoDevelop.AssemblyBrowser
public List<ReferenceSegment> Disassemble (TextEditor data, ITreeNavigator navigator)
{
- var assembly = ((AssemblyLoader)navigator.DataItem).UnresolvedAssembly;
- var compilationUnit = Widget.CecilLoader.GetCecilObject (assembly);
+ var assemblyLoader = (AssemblyLoader)navigator.DataItem;
+ var assembly = assemblyLoader.UnresolvedAssembly;
+ var compilationUnit = assemblyLoader.CecilLoader.GetCecilObject (assembly);
if (compilationUnit == null) {
LoggingService.LogError ("Can't get cecil object for assembly:" + assembly);
return new List<ReferenceSegment> ();
@@ -160,8 +161,9 @@ namespace MonoDevelop.AssemblyBrowser
public List<ReferenceSegment> Decompile (TextEditor data, ITreeNavigator navigator, bool publicOnly)
{
- var assembly = ((AssemblyLoader)navigator.DataItem).UnresolvedAssembly;
- var compilationUnit = Widget.CecilLoader.GetCecilObject (assembly);
+ var assemblyLoader = (AssemblyLoader)navigator.DataItem;
+ var assembly = assemblyLoader.UnresolvedAssembly;
+ var compilationUnit = assemblyLoader.CecilLoader.GetCecilObject (assembly);
if (compilationUnit == null) {
LoggingService.LogError ("Can't get cecil object for assembly:" + assembly);
return new List<ReferenceSegment> ();
@@ -174,8 +176,9 @@ namespace MonoDevelop.AssemblyBrowser
List<ReferenceSegment> IAssemblyBrowserNodeBuilder.GetSummary (TextEditor data, ITreeNavigator navigator, bool publicOnly)
{
- var assembly = ((AssemblyLoader)navigator.DataItem).UnresolvedAssembly;
- var compilationUnit = Widget.CecilLoader.GetCecilObject (assembly);
+ var assemblyLoader = (AssemblyLoader)navigator.DataItem;
+ var assembly = assemblyLoader.UnresolvedAssembly;
+ var compilationUnit = assemblyLoader.CecilLoader.GetCecilObject (assembly);
if (compilationUnit == null) {
LoggingService.LogError ("Can't get cecil object for assembly:" + assembly);
return new List<ReferenceSegment> ();
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomEventNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomEventNodeBuilder.cs
index c03962bf13..bf485b6e7e 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomEventNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomEventNodeBuilder.cs
@@ -95,7 +95,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var evt = CecilLoader.GetCecilObject ((IUnresolvedEvent)navigator.DataItem);
+ var evt = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedEvent)navigator.DataItem);
return DomMethodNodeBuilder.Disassemble (data, rd => rd.DisassembleEvent (evt));
}
@@ -103,7 +103,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var evt = CecilLoader.GetCecilObject ((IUnresolvedEvent)navigator.DataItem);
+ var evt = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedEvent)navigator.DataItem);
if (evt == null)
return null;
return DomMethodNodeBuilder.Decompile (data, DomMethodNodeBuilder.GetModule (navigator), evt.DeclaringType, b => b.AddEvent (evt));
@@ -113,7 +113,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var evt = CecilLoader.GetCecilObject ((IUnresolvedEvent)navigator.DataItem);
+ var evt = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedEvent)navigator.DataItem);
if (evt == null)
return null;
return DomMethodNodeBuilder.GetSummary (data, DomMethodNodeBuilder.GetModule (navigator), evt.DeclaringType, b => b.AddEvent (evt));
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomFieldNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomFieldNodeBuilder.cs
index fcdd6b8672..6433e0cd8f 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomFieldNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomFieldNodeBuilder.cs
@@ -81,7 +81,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var field = CecilLoader.GetCecilObject ((IUnresolvedField)navigator.DataItem);
+ var field = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedField)navigator.DataItem);
if (field == null)
return null;
return DomMethodNodeBuilder.Disassemble (data, rd => rd.DisassembleField (field));
@@ -91,7 +91,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var field = CecilLoader.GetCecilObject ((IUnresolvedField)navigator.DataItem);
+ var field = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedField)navigator.DataItem);
if (field == null)
return null;
return DomMethodNodeBuilder.Decompile (data, DomMethodNodeBuilder.GetModule (navigator), field.DeclaringType, b => b.AddField (field));
@@ -101,7 +101,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var field = CecilLoader.GetCecilObject ((IUnresolvedField)navigator.DataItem);
+ var field = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedField)navigator.DataItem);
if (field == null)
return null;
return DomMethodNodeBuilder.GetSummary (data, DomMethodNodeBuilder.GetModule (navigator), field.DeclaringType, b => b.AddField (field));
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomMethodNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomMethodNodeBuilder.cs
index 841aafac55..5ffc9e0953 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomMethodNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomMethodNodeBuilder.cs
@@ -216,7 +216,7 @@ namespace MonoDevelop.AssemblyBrowser
var method = (IUnresolvedMethod)navigator.DataItem;
if (HandleSourceCodeEntity (navigator, data))
return null;
- var cecilMethod = CecilLoader.GetCecilObject (method);
+ var cecilMethod = GetCecilLoader (navigator).GetCecilObject (method);
if (cecilMethod == null)
return null;
return DomMethodNodeBuilder.Decompile (data, DomMethodNodeBuilder.GetModule (navigator), cecilMethod.DeclaringType, b => b.AddMethod (cecilMethod));
@@ -227,7 +227,7 @@ namespace MonoDevelop.AssemblyBrowser
var method = (IUnresolvedMethod)navigator.DataItem;
if (HandleSourceCodeEntity (navigator, data))
return null;
- var cecilMethod = CecilLoader.GetCecilObject (method);
+ var cecilMethod = GetCecilLoader (navigator).GetCecilObject (method);
if (cecilMethod == null)
return null;
return DomMethodNodeBuilder.GetSummary (data, DomMethodNodeBuilder.GetModule (navigator), cecilMethod.DeclaringType, b => b.AddMethod (cecilMethod));
@@ -269,7 +269,7 @@ namespace MonoDevelop.AssemblyBrowser
var method = (IUnresolvedMethod)navigator.DataItem;
if (HandleSourceCodeEntity (navigator, data))
return null;
- var cecilMethod = CecilLoader.GetCecilObject (method);
+ var cecilMethod = GetCecilLoader (navigator).GetCecilObject (method);
if (cecilMethod == null)
return null;
return Disassemble (data, rd => rd.DisassembleMethod (cecilMethod));
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomPropertyNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomPropertyNodeBuilder.cs
index 9c69994a8c..2d59f4894c 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomPropertyNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomPropertyNodeBuilder.cs
@@ -91,7 +91,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var property = CecilLoader.GetCecilObject ((IUnresolvedProperty)navigator.DataItem);
+ var property = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedProperty)navigator.DataItem);
return DomMethodNodeBuilder.Disassemble (data, rd => rd.DisassembleProperty (property));
}
@@ -111,7 +111,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var property = CecilLoader.GetCecilObject ((IUnresolvedProperty)navigator.DataItem);
+ var property = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedProperty)navigator.DataItem);
if (property == null)
return null;
return DomMethodNodeBuilder.Decompile (data, DomMethodNodeBuilder.GetModule (navigator), property.DeclaringType, b => b.AddProperty (property));
@@ -121,7 +121,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var property = CecilLoader.GetCecilObject ((IUnresolvedProperty)navigator.DataItem);
+ var property = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedProperty)navigator.DataItem);
if (property == null)
return null;
return DomMethodNodeBuilder.GetSummary (data, DomMethodNodeBuilder.GetModule (navigator), property.DeclaringType, b => b.AddProperty (property));
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomTypeNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomTypeNodeBuilder.cs
index 4bfa9b4ecc..c5c427b7fb 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomTypeNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomTypeNodeBuilder.cs
@@ -132,7 +132,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var type = CecilLoader.GetCecilObject ((IUnresolvedTypeDefinition)navigator.DataItem);
+ var type = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedTypeDefinition)navigator.DataItem);
if (type == null)
return null;
@@ -160,7 +160,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var type = CecilLoader.GetCecilObject ((IUnresolvedTypeDefinition)navigator.DataItem);
+ var type = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedTypeDefinition)navigator.DataItem);
if (type == null)
return null;
var types = DesktopService.GetMimeTypeInheritanceChain (data.MimeType);
@@ -175,7 +175,7 @@ namespace MonoDevelop.AssemblyBrowser
{
if (DomMethodNodeBuilder.HandleSourceCodeEntity (navigator, data))
return null;
- var type = CecilLoader.GetCecilObject ((IUnresolvedTypeDefinition)navigator.DataItem);
+ var type = GetCecilLoader (navigator).GetCecilObject ((IUnresolvedTypeDefinition)navigator.DataItem);
if (type == null)
return null;
var types = DesktopService.GetMimeTypeInheritanceChain (data.MimeType);
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.PreviewVisualizers/GenericPreviewVisualizer.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.PreviewVisualizers/GenericPreviewVisualizer.cs
index 00fa8d0e8b..dfd2462ca5 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.PreviewVisualizers/GenericPreviewVisualizer.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.PreviewVisualizers/GenericPreviewVisualizer.cs
@@ -66,9 +66,9 @@ namespace MonoDevelop.Debugger.PreviewVisualizers
if (label.Layout.GetLine (1) != null) {
label.Justify = Gtk.Justification.Left;
- var line15 = label.Layout.GetLine (15);
- if (line15 != null) {
- label.Text = value.Substring (0, line15.StartIndex).TrimEnd ('\r', '\n') + "\n…";
+ var trimmedLine = label.Layout.GetLine (50);
+ if (trimmedLine != null) {
+ label.Text = value.Substring (0, trimmedLine.StartIndex).TrimEnd ('\r', '\n') + "\n…";
}
}
@@ -88,7 +88,7 @@ namespace MonoDevelop.Debugger.PreviewVisualizers
var rawString = val.GetRawValue (ops) as RawValueString;
var length = rawString.Length;
if (length > 0) {
- return rawString.Substring (0, Math.Min (length, 4096));
+ return Mono.Debugging.Evaluation.ExpressionEvaluator.EscapeString (rawString.Substring (0, Math.Min (length, 4096)));
} else {
return "";
}
@@ -96,7 +96,7 @@ namespace MonoDevelop.Debugger.PreviewVisualizers
var rawArray = val.GetRawValue (ops) as RawValueArray;
var length = rawArray.Length;
if (length > 0) {
- return new string (rawArray.GetValues (0, Math.Min (length, 4096)) as char[]);
+ return Mono.Debugging.Evaluation.ExpressionEvaluator.EscapeString (new string (rawArray.GetValues (0, Math.Min (length, 4096)) as char []));
} else {
return "";
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs
index 5451a66b67..f3a3a4dc33 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.Tests/EvaluationTests.cs
@@ -1148,6 +1148,53 @@ namespace MonoDevelop.Debugger.Tests
val = Eval ("a as C");
Assert.AreEqual ("null", val.Value);
Assert.AreEqual ("C", val.TypeName);
+
+ val = Eval ("a as string");
+ Assert.AreEqual ("null", val.Value);
+ Assert.AreEqual ("System.String", val.TypeName);
+
+
+ // Is operator
+
+ val = Eval ("c is A");
+ Assert.AreEqual ("true", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
+
+ val = Eval ("c is B");
+ Assert.AreEqual ("true", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
+
+ val = Eval ("c is C");
+ Assert.AreEqual ("true", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
+
+ val = Eval ("b is A");
+ Assert.AreEqual ("true", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
+
+ val = Eval ("b is B");
+ Assert.AreEqual ("true", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
+
+ val = Eval ("b is C");
+ Assert.AreEqual ("false", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
+
+ val = Eval ("a is A");
+ Assert.AreEqual ("true", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
+
+ val = Eval ("a is B");
+ Assert.AreEqual ("false", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
+
+ val = Eval ("a is C");
+ Assert.AreEqual ("false", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
+
+ val = Eval ("a is string");
+ Assert.AreEqual ("false", val.Value);
+ Assert.AreEqual ("bool", val.TypeName);
// Enum cast
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/AttachToProcessDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/AttachToProcessDialog.cs
index 946fdec8b8..f63d1ed9ca 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/AttachToProcessDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/AttachToProcessDialog.cs
@@ -50,7 +50,7 @@ namespace MonoDevelop.Debugger
store = new Gtk.ListStore (typeof(ProcessInfo), typeof(string), typeof(string));
tree.Model = store;
tree.AppendColumn ("PID", new Gtk.CellRendererText (), "text", 1);
- tree.AppendColumn ("Process Name", new Gtk.CellRendererText (), "text", 2);
+ tree.AppendColumn (GettextCatalog.GetString ("Process Name"), new Gtk.CellRendererText (), "text", 2);
tree.RowActivated += OnRowActivated;
state = new TreeViewState (tree, 1);
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
index 9c395b5889..a225e29d0e 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
@@ -37,6 +37,8 @@ using Mono.Debugging.Client;
using MonoDevelop.Components.Docking;
using MonoDevelop.Ide.Gui.Components;
using MonoDevelop.Ide;
+using MonoDevelop.Components.AutoTest;
+using System.ComponentModel;
namespace MonoDevelop.Debugger
{
@@ -101,6 +103,9 @@ namespace MonoDevelop.Debugger
// The breakpoint list
store = new TreeStore (typeof(string), typeof (bool), typeof(string), typeof(object), typeof(string), typeof(string), typeof(string), typeof(string));
+ SemanticModelAttribute modelAttr = new SemanticModelAttribute ("store__Icon", "store__Selected","store_FileName",
+ "store_Breakpoint", "store_Condition", "store_TraceExp", "store_HitCount", "store_LastTrace");
+ TypeDescriptor.AddAttributes (store, modelAttr);
tree = new PadTreeView ();
tree.Model = store;
@@ -265,7 +270,7 @@ namespace MonoDevelop.Debugger
var bp = be as Breakpoint;
if (bp != null) {
if (!string.IsNullOrEmpty (bp.FileName))
- IdeApp.Workbench.OpenDocument (bp.FileName, bp.Line, 1);
+ IdeApp.Workbench.OpenDocument (bp.FileName, null, bp.Line, 1);
}
}
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
index 225366c8c1..735629c75f 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs
@@ -61,12 +61,12 @@ namespace MonoDevelop.Debugger
bool editing;
// Groupings for sensitivity
- HBox hboxFunction = new HBox (){ MarginLeft = 18 };
+ HBox hboxFunction = new HBox () { MarginLeft = 18 };
HBox hboxLocation = new HBox ();
HBox hboxException = new HBox ();
HBox hboxCondition = new HBox ();
- VBox vboxException = new VBox (){ MarginLeft = 18 };
- VBox vboxLocation = new VBox (){ MarginLeft = 18 };
+ VBox vboxException = new VBox () { MarginLeft = 18 };
+ VBox vboxLocation = new VBox () { MarginLeft = 18 };
// Breakpoint Action radios.
readonly RadioButton breakpointActionPause = new RadioButton (GettextCatalog.GetString ("Pause the program"));
readonly RadioButton breakpointActionPrint = new RadioButton (GettextCatalog.GetString ("Print a message and continue"));
@@ -77,10 +77,10 @@ namespace MonoDevelop.Debugger
readonly RadioButton stopOnException = new RadioButton (GettextCatalog.GetString ("When an exception is thrown"));
// Text entries
- readonly TextEntry entryFunctionName = new TextEntry (){ PlaceholderText = GettextCatalog.GetString ("e.g. System.Object.ToString") };
- readonly TextEntry entryLocationFile = new TextEntry (){ PlaceholderText = GettextCatalog.GetString ("e.g. Program.cs:15:5") };
- readonly TextEntryWithCodeCompletion entryExceptionType = new TextEntryWithCodeCompletion (){ PlaceholderText = GettextCatalog.GetString ("e.g. System.InvalidOperationException") };
- readonly TextEntry entryConditionalExpression = new TextEntry (){ PlaceholderText = GettextCatalog.GetString ("e.g. colorName == \"Red\"") };
+ readonly TextEntry entryFunctionName = new TextEntry () { PlaceholderText = GettextCatalog.GetString ("e.g. System.Object.ToString") };
+ readonly TextEntry entryLocationFile = new TextEntry () { PlaceholderText = GettextCatalog.GetString ("e.g. Program.cs:15:5") };
+ readonly TextEntryWithCodeCompletion entryExceptionType = new TextEntryWithCodeCompletion () { PlaceholderText = GettextCatalog.GetString ("e.g. System.InvalidOperationException") };
+ readonly TextEntry entryConditionalExpression = new TextEntry () { PlaceholderText = GettextCatalog.GetString ("e.g. colorName == \"Red\"") };
readonly TextEntry entryPrintExpression = new TextEntry () { PlaceholderText = GettextCatalog.GetString ("e.g. Value of 'name' is {name}") };
// Warning icon
@@ -133,7 +133,7 @@ namespace MonoDevelop.Debugger
tooltipWindow.Text = tip;
var rect = this.ScreenBounds;
tooltipWindow.ShowPopup ((Gtk.Widget)Xwt.Toolkit.CurrentEngine.GetNativeWidget (this),
- new Gdk.Rectangle ((int)(ParentWindow.X - rect.X), (int)(ParentWindow.Y - rect.Y), (int)rect.Width, (int)rect.Height),
+ new Gdk.Rectangle ((int)(ParentWindow.X - rect.X), (int)(ParentWindow.Y - rect.Y), (int)rect.Width, (int)rect.Height),
MonoDevelop.Components.PopupPosition.Bottom);
}
return false;
@@ -197,7 +197,7 @@ namespace MonoDevelop.Debugger
ParsedLocation breakpointLocation = new ParsedLocation ();
BreakEvent be;
- string[] parsedParamTypes;
+ string [] parsedParamTypes;
string parsedFunction;
readonly HashSet<string> classes = new HashSet<string> ();
@@ -228,9 +228,14 @@ namespace MonoDevelop.Debugger
void Initialize ()
{
- Title = GettextCatalog.GetString (be == null ? "Create a Breakpoint" : "Edit Breakpoint");
- var buttonLabel = GettextCatalog.GetString (be == null ? "Create" : "Apply");
-
+ string buttonLabel;
+ if (be == null) {
+ Title = GettextCatalog.GetString ("Create a Breakpoint");
+ buttonLabel = GettextCatalog.GetString ("Create");
+ } else {
+ Title = GettextCatalog.GetString ("Edit Breakpoint");
+ buttonLabel = GettextCatalog.GetString ("Apply");
+ }
var actionGroup = new RadioButtonGroup ();
breakpointActionPause.Group = actionGroup;
breakpointActionPrint.Group = actionGroup;
@@ -357,7 +362,7 @@ namespace MonoDevelop.Debugger
DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.ConditionalBreakpoints);
bool canTrace = DebuggingService.IsFeatureSupported (project, DebuggerFeatures.Tracepoints) ||
- DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
+ DebuggingService.IsFeatureSupported (startup, DebuggerFeatures.Tracepoints);
breakpointActionPause.Sensitive = canTrace;
entryPrintExpression.Sensitive = canTrace;
@@ -417,8 +422,8 @@ namespace MonoDevelop.Debugger
checkIncludeSubclass.Active = true;
if (IdeApp.Workbench.ActiveDocument != null &&
- IdeApp.Workbench.ActiveDocument.Editor != null &&
- IdeApp.Workbench.ActiveDocument.FileName != FilePath.Null) {
+ IdeApp.Workbench.ActiveDocument.Editor != null &&
+ IdeApp.Workbench.ActiveDocument.FileName != FilePath.Null) {
breakpointLocation.Update (IdeApp.Workbench.ActiveDocument.FileName,
IdeApp.Workbench.ActiveDocument.Editor.CaretLine,
IdeApp.Workbench.ActiveDocument.Editor.CaretColumn);
@@ -449,7 +454,7 @@ namespace MonoDevelop.Debugger
if (!File.Exists (splitted [0])) {
//Maybe it's C:\filepath.ext
if (splitted.Length > 1 && File.Exists (splitted [0] + ":" + splitted [1])) {
- var newSplitted = new string[splitted.Length - 1];
+ var newSplitted = new string [splitted.Length - 1];
newSplitted [0] = splitted [0] + ":" + splitted [1];
for (int i = 2; i < splitted.Length; i++) {
newSplitted [i - 1] = splitted [i];
@@ -661,7 +666,7 @@ namespace MonoDevelop.Debugger
return result;
}
- static bool TryParseFunction (string signature, out string function, out string[] paramTypes)
+ static bool TryParseFunction (string signature, out string function, out string [] paramTypes)
{
int paramListStart = signature.IndexOf ('(');
int paramListEnd = signature.IndexOf (')');
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerConsoleView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerConsoleView.cs
index c9dac745cd..8c4e058e05 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerConsoleView.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerConsoleView.cs
@@ -31,8 +31,7 @@ using MonoDevelop.Ide;
using MonoDevelop.Components;
using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Editor.Extension;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.Debugger
{
public class DebuggerConsoleView : ConsoleView, ICompletionWidget
@@ -269,18 +268,18 @@ namespace MonoDevelop.Debugger
Buffer.MoveMark (tokenBeginMark, iter);
}
- async void OnEditKeyRelease (object sender, Gtk.KeyReleaseEventArgs args)
+ void OnEditKeyRelease (object sender, Gtk.KeyReleaseEventArgs args)
{
UpdateTokenBeginMarker ();
if (keyHandled)
return;
- await CompletionWindowManager.PostProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
+ CompletionWindowManager.PostProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
PopupCompletion ();
}
- protected override async Task<bool> ProcessKeyPressEvent (Gtk.KeyPressEventArgs args)
+ protected override bool ProcessKeyPressEvent (Gtk.KeyPressEventArgs args)
{
keyHandled = false;
@@ -294,11 +293,11 @@ namespace MonoDevelop.Debugger
}
if (currentCompletionData != null) {
- if ((keyHandled = await CompletionWindowManager.PreProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier))))
+ if ((keyHandled = CompletionWindowManager.PreProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier))))
return true;
}
- return await base.ProcessKeyPressEvent (args);
+ return base.ProcessKeyPressEvent (args);
}
protected override void UpdateInputLineBegin ()
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs
index fbd0d511a3..80a03e8cf4 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs
@@ -102,7 +102,7 @@ namespace MonoDevelop.Debugger
var hbox = new HBox ();
hbox.Spacing = 8;
- var label = new Label (string.Format ("{0} not found. Find source file at alternative location.", Path.GetFileName (sf.SourceLocation.FileName)));
+ var label = new Label (GettextCatalog.GetString ("{0} not found. Find source file at alternative location.", Path.GetFileName (sf.SourceLocation.FileName)));
hbox.TooltipText = sf.SourceLocation.FileName;
var color = (HslColor)editor.Options.GetColorStyle ().NotificationText.Foreground;
@@ -138,13 +138,13 @@ namespace MonoDevelop.Debugger
this.WorkbenchWindow.CloseWindow (false);
}
} else {
- MessageService.ShowWarning ("File checksum doesn't match.");
+ MessageService.ShowWarning (GettextCatalog.GetString("File checksum doesn't match."));
}
} else {
- MessageService.ShowWarning ("File not found.");
+ MessageService.ShowWarning (GettextCatalog.GetString ("File not found."));
}
} catch (Exception) {
- MessageService.ShowWarning ("Error opening file");
+ MessageService.ShowWarning (GettextCatalog.GetString ("Error opening file."));
}
};
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs
index cbde327003..4a66b256fe 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs
@@ -40,8 +40,7 @@ using MonoDevelop.Ide.TextEditing;
using MonoDevelop.Ide.Gui.Content;
using MonoDevelop.Ide.Editor.Extension;
using MonoDevelop.Ide.Fonts;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.Debugger
{
class ExceptionCaughtDialog : Gtk.Dialog
@@ -330,7 +329,7 @@ namespace MonoDevelop.Debugger
if (OnlyShowMyCodeCheckbox.Active && !isUserCode) {
if (!external) {
- var str = GettextCatalog.GetString ("<b>[External Code]</b>");
+ var str = "<b>" + GettextCatalog.GetString ("[External Code]") + "</b>";
model.AppendValues (null, str, false);
external = true;
}
@@ -772,14 +771,14 @@ namespace MonoDevelop.Debugger
class ExceptionCaughtTextEditorExtension: TextEditorExtension
{
- public override Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
if (descriptor.SpecialKey == SpecialKey.Escape && DebuggingService.ExceptionCaughtMessage != null &&
!DebuggingService.ExceptionCaughtMessage.IsMinimized &&
DebuggingService.ExceptionCaughtMessage.File.CanonicalPath == new FilePath(DocumentContext.Name).CanonicalPath) {
DebuggingService.ExceptionCaughtMessage.ShowMiniButton ();
- return Task.FromResult (true);
+ return true;
}
return base.KeyPress (descriptor);
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExpressionEvaluatorDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExpressionEvaluatorDialog.cs
index 29b1a69936..f35088bf82 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExpressionEvaluatorDialog.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExpressionEvaluatorDialog.cs
@@ -108,17 +108,17 @@ namespace MonoDevelop.Debugger
}
}
- async void OnEditKeyRelease (object sender, EventArgs e)
+ void OnEditKeyRelease (object sender, EventArgs e)
{
if (keyHandled)
return;
- await CompletionWindowManager.PostProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
+ CompletionWindowManager.PostProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
PopupCompletion ((Entry) sender);
}
[GLib.ConnectBeforeAttribute]
- async void OnEditKeyPress (object sender, KeyPressEventArgs args)
+ void OnEditKeyPress (object sender, KeyPressEventArgs args)
{
keyHandled = false;
@@ -132,7 +132,7 @@ namespace MonoDevelop.Debugger
}
if (currentCompletionData != null)
- args.RetVal = keyHandled = await CompletionWindowManager.PreProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
+ args.RetVal = keyHandled = CompletionWindowManager.PreProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
}
void OnEditFocusOut (object sender, FocusOutEventArgs args)
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs
index 7cc909f4e7..d585400e73 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs
@@ -76,7 +76,7 @@ namespace MonoDevelop.Debugger
double typeColWidth;
readonly CellRendererTextWithIcon crtExp;
- readonly CellRendererText crtValue;
+ readonly ValueCellRenderer crtValue;
readonly CellRendererText crtType;
readonly CellRendererRoundedButton crpButton;
readonly CellRendererImage crpPin;
@@ -178,7 +178,10 @@ namespace MonoDevelop.Debugger
}
}
- class CellRendererTextUrl : CellRendererText{
+ class ValueCellRenderer : CellRendererText
+ {
+ public bool Compact;
+
[GLib.Property ("texturl")]
public string TextUrl {
get {
@@ -195,6 +198,15 @@ namespace MonoDevelop.Debugger
Text = value;
}
}
+
+ public override void GetSize (Widget widget, ref Gdk.Rectangle cell_area, out int x_offset, out int y_offset, out int width, out int height)
+ {
+ if (Compact)
+ this.Ellipsize = Pango.EllipsizeMode.None;
+ base.GetSize (widget, ref cell_area, out x_offset, out y_offset, out width, out height);
+ if (Compact)
+ this.Ellipsize = Pango.EllipsizeMode.End;
+ }
}
class CellRendererColorPreview : CellRenderer
@@ -329,26 +341,7 @@ namespace MonoDevelop.Debugger
valueCol.AddAttribute (evaluateStatusCell, "image", EvaluateStatusIconColumn);
var crColorPreview = new CellRendererColorPreview ();
valueCol.PackStart (crColorPreview, false);
- valueCol.SetCellDataFunc (crColorPreview, new TreeCellDataFunc ((tree_column, cell, model, iter) => {
- var val = (ObjectValue) model.GetValue (iter, ObjectColumn);
- Xwt.Drawing.Color? color;
-
- if (val != null && !val.IsNull && DebuggingService.HasGetConverter<Xwt.Drawing.Color> (val)) {
- try {
- color = DebuggingService.GetGetConverter<Xwt.Drawing.Color> (val).GetValue (val);
- } catch (Exception) {
- color = null;
- }
- } else {
- color = null;
- }
- if (color != null) {
- ((CellRendererColorPreview) cell).Color = (Xwt.Drawing.Color) color;
- cell.Visible = true;
- } else {
- cell.Visible = false;
- }
- }));
+ valueCol.SetCellDataFunc (crColorPreview, ValueDataFunc);
crpButton = new CellRendererRoundedButton ();
valueCol.PackStart (crpButton, false);
valueCol.AddAttribute (crpButton, "visible", ValueButtonVisibleColumn);
@@ -357,7 +350,8 @@ namespace MonoDevelop.Debugger
crpViewer.Image = ImageService.GetIcon (Stock.Edit, IconSize.Menu);
valueCol.PackStart (crpViewer, false);
valueCol.AddAttribute (crpViewer, "visible", ViewerButtonVisibleColumn);
- crtValue = new CellRendererTextUrl ();
+ crtValue = new ValueCellRenderer ();
+ crtValue.Ellipsize = Pango.EllipsizeMode.End;
valueCol.PackStart (crtValue, true);
valueCol.AddAttribute (crtValue, "texturl", ValueColumn);
valueCol.AddAttribute (crtValue, "editable", ValueEditableColumn);
@@ -403,9 +397,7 @@ namespace MonoDevelop.Debugger
crtValue.EditingStarted += OnValueEditing;
crtValue.Edited += OnValueEdited;
crtValue.EditingCanceled += OnEditingCancelled;
-
- this.EnableAutoTooltips ();
-
+
createMsg = GettextCatalog.GetString ("Click here to add a new watch");
CompletionWindowManager.WindowClosed += HandleCompletionWindowClosed;
PreviewWindowManager.WindowClosed += HandlePreviewWindowClosed;
@@ -418,6 +410,28 @@ namespace MonoDevelop.Debugger
focus_line_width = (int)this.StyleGetProperty ("focus-line-width") * 2;//we just use *2 version in GetMaxWidth
}
+ static void ValueDataFunc (Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ {
+ var val = (ObjectValue)model.GetValue (iter, ObjectColumn);
+ Xwt.Drawing.Color? color;
+
+ if (val != null && !val.IsNull && DebuggingService.HasGetConverter<Xwt.Drawing.Color> (val)) {
+ try {
+ color = DebuggingService.GetGetConverter<Xwt.Drawing.Color> (val).GetValue (val);
+ } catch (Exception) {
+ color = null;
+ }
+ } else {
+ color = null;
+ }
+ if (color != null) {
+ ((CellRendererColorPreview)cell).Color = (Xwt.Drawing.Color)color;
+ cell.Visible = true;
+ } else {
+ cell.Visible = false;
+ }
+ }
+
int expanderSize;
int horizontal_separator;
int grid_line_width;
@@ -748,6 +762,7 @@ namespace MonoDevelop.Debugger
newFont = FontService.SansFont.CopyModified (Ide.Gui.Styles.FontScale12);
valueCol.MaxWidth = int.MaxValue;
}
+ crtValue.Compact = compact;
typeCol.Visible = !compact;
crtExp.FontDesc = newFont;
crtValue.FontDesc = newFont;
@@ -1515,10 +1530,10 @@ namespace MonoDevelop.Debugger
EndEditing (this, EventArgs.Empty);
}
- async void OnEditKeyRelease (object sender, EventArgs e)
+ void OnEditKeyRelease (object sender, EventArgs e)
{
if (!wasHandled) {
- await CompletionWindowManager.PostProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifierState));
+ CompletionWindowManager.PostProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifierState));
PopupCompletion ((Entry) sender);
}
}
@@ -1531,7 +1546,7 @@ namespace MonoDevelop.Debugger
uint keyValue;
[GLib.ConnectBeforeAttribute]
- async void OnEditKeyPress (object s, KeyPressEventArgs args)
+ void OnEditKeyPress (object s, KeyPressEventArgs args)
{
wasHandled = false;
key = args.Event.Key;
@@ -1540,7 +1555,7 @@ namespace MonoDevelop.Debugger
keyValue = args.Event.KeyValue;
if (currentCompletionData != null) {
- wasHandled = await CompletionWindowManager.PreProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifierState));
+ wasHandled = CompletionWindowManager.PreProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifierState));
args.RetVal = wasHandled;
}
}
@@ -1591,13 +1606,8 @@ namespace MonoDevelop.Debugger
if (obj.IsNull)
return false;
if (obj.IsPrimitive) {
- if (obj.TypeName != "string") {
- return false;
- } else {
- if (obj.Value.Length < DebuggingService.DebuggerSession.EvaluationOptions.EllipsizedLength + 3) {//3=2x"(qoute) and 1x "…"
- return false;
- }
- }
+ //obj.DisplayValue.Contains ("|") is special case to detect enum with [Flags]
+ return obj.TypeName == "string" || obj.DisplayValue.Contains ("|");
}
if (string.IsNullOrEmpty (obj.TypeName))
return false;
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs
index 3e46fd0f6d..c371e943ae 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs
@@ -42,6 +42,8 @@ using MonoDevelop.Components.Commands;
using Stock = MonoDevelop.Ide.Gui.Stock;
using MonoDevelop.Components;
using System.Linq;
+using MonoDevelop.Components.AutoTest;
+using System.ComponentModel;
namespace MonoDevelop.Debugger
{
@@ -91,6 +93,9 @@ namespace MonoDevelop.Debugger
this.ShadowType = ShadowType.None;
store = new ListStore (typeof(bool), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(Pango.Style), typeof(object), typeof(int), typeof(bool));
+ SemanticModelAttribute modelAttr = new SemanticModelAttribute ("store__Icon", "store__Method","store_File",
+ "store_Lang", "store_Addr", "store_Foreground", "store_Style", "store_Frame", "store_FrameIndex");
+ TypeDescriptor.AddAttributes (store, modelAttr);
tree = new PadTreeView (store);
tree.RulesHint = true;
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/Styles.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/Styles.cs
index d4f4f51226..c1c386b493 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/Styles.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/Styles.cs
@@ -63,7 +63,7 @@ namespace MonoDevelop.Debugger
{
ExceptionCaughtDialog = new ExceptionCaughtDialogStyle ();
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light) {
ObjectValueTreeValuesButtonBackground = Color.FromName ("#e9f2fc");
ObjectValueTreeValuesButtonText = Color.FromName ("#5294eb");
ObjectValueTreeValuesButtonBorder = Color.FromName ("#5294eb");
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/TextEntryWithCodeCompletion.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/TextEntryWithCodeCompletion.cs
index f36d1000b8..108ea39c90 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/TextEntryWithCodeCompletion.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/TextEntryWithCodeCompletion.cs
@@ -66,7 +66,7 @@ namespace MonoDevelop.Debugger
}
[GLib.ConnectBeforeAttribute]
- async void HandleKeyPressEvent (object o, Gtk.KeyPressEventArgs args)
+ void HandleKeyPressEvent (object o, Gtk.KeyPressEventArgs args)
{
keyHandled = false;
@@ -80,17 +80,17 @@ namespace MonoDevelop.Debugger
}
if (list != null)
- args.RetVal = keyHandled = await CompletionWindowManager.PreProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
+ args.RetVal = keyHandled = CompletionWindowManager.PreProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
}
- async void HandleKeyReleaseEvent (object o, Gtk.KeyReleaseEventArgs args)
+ void HandleKeyReleaseEvent (object o, Gtk.KeyReleaseEventArgs args)
{
if (keyHandled)
return;
string text = ctx == null ? Text : Text.Substring (Math.Max (0, Math.Min (ctx.TriggerOffset, Text.Length)));
CompletionWindowManager.UpdateWordSelection (text);
- await CompletionWindowManager.PostProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
+ CompletionWindowManager.PostProcessKeyEvent (KeyDescriptor.FromGtk (key, keyChar, modifier));
PopupCompletion ();
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ThreadsPad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ThreadsPad.cs
index 9fa65e2afc..93e504e2a2 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ThreadsPad.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ThreadsPad.cs
@@ -37,7 +37,8 @@ using MonoDevelop.Components;
using Mono.Debugging.Client;
using MonoDevelop.Ide.Gui.Components;
using MonoDevelop.Ide;
-
+using MonoDevelop.Components.AutoTest;
+using System.ComponentModel;
namespace MonoDevelop.Debugger
{
@@ -81,6 +82,9 @@ namespace MonoDevelop.Debugger
this.ShadowType = ShadowType.None;
store = new TreeStore (typeof(string), typeof (string), typeof(string), typeof(object), typeof(int), typeof(string));
+ SemanticModelAttribute modelAttr = new SemanticModelAttribute ("store__Icon", "store__Id","store_Name",
+ "store_Object", "store_Weight", "store_Location");
+ TypeDescriptor.AddAttributes (store, modelAttr);
tree = new PadTreeView (store);
tree.RulesHint = true;
@@ -203,7 +207,7 @@ namespace MonoDevelop.Debugger
foreach (var thread in threads) {
ThreadInfo activeThread = DebuggingService.DebuggerSession.ActiveThread;
- var name = thread.Name == null && thread.Id == 1 ? "Main Thread" : thread.Name;
+ var name = thread.Name == null && thread.Id == 1 ? GettextCatalog.GetString("Main Thread") : thread.Name;
var weight = thread == activeThread ? Pango.Weight.Bold : Pango.Weight.Normal;
var icon = thread == activeThread ? Gtk.Stock.GoForward : null;
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 50cb4254fe..5ee640bc44 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs
@@ -1,249 +1,249 @@
-// ProjectFileDescriptor.cs
-//
-//Author:
-// Lluis Sanchez Gual
-//
-//Copyright (c) 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.ComponentModel;
-
-using MonoDevelop.Projects;
-using MonoDevelop.Core;
-using MonoDevelop.Ide;
-using System.Linq;
-
-namespace MonoDevelop.DesignerSupport
-{
- 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")]
- [LocalizedDisplayName ("Name")]
- [LocalizedDescription ("Name of the file.")]
- public string Name {
- get { return System.IO.Path.GetFileName (file.Name); }
- }
-
- [LocalizedCategory ("Misc")]
- [LocalizedDisplayName ("Path")]
- [LocalizedDescription ("Full path of the file.")]
- public string Path {
- get { return file.FilePath; }
- }
-
- [LocalizedCategory ("Misc")]
- [LocalizedDisplayName ("Type")]
- [LocalizedDescription ("Type of the file.")]
- public string FileType {
- get {
- string type = DesktopService.GetMimeTypeForUri (file.Name);
- return DesktopService.GetMimeTypeDescription (type);
- }
- }
-
- [LocalizedCategory ("Build")]
- [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; }
- }
-
- [LocalizedCategory ("Build")]
- [LocalizedDisplayName ("Resource ID")]
- [LocalizedDescription ("Identifier of the embedded resource.")]
- public string ResourceId {
- get { return file.ResourceId; }
- set { file.ResourceId = value; }
- }
-
- [LocalizedCategory ("Build")]
- [LocalizedDisplayName ("Copy to output directory")]
- [LocalizedDescription ("Whether to copy the file to the project's output directory when the project is built.")]
- public FileCopyMode CopyToOutputDirectory {
- get { return file.CopyToOutputDirectory; }
- set { file.CopyToOutputDirectory = value; }
- }
-
- [LocalizedCategory ("Build")]
- [LocalizedDisplayName ("Custom Tool")]
- [LocalizedDescription ("The ID of a custom code generator.")]
- public string Generator {
- get { return file.Generator; }
- set { file.Generator = value; }
- }
-
- [LocalizedCategory ("Build")]
- [LocalizedDisplayName ("Custom Tool Namespace")]
- [LocalizedDescription ("Overrides the namespace in which the custom code generator should generate code.")]
- public string CustomToolNamespace {
- get { return file.CustomToolNamespace; }
- set { file.CustomToolNamespace = value; }
- }
-
- protected override bool IsReadOnly (string propertyName)
- {
- return false;
- }
-
- [MonoDevelop.Components.PropertyGrid.PropertyEditors.StandardValuesSeparator ("--")]
- class BuildActionStringsConverter : StandardStringsConverter
- {
- public override System.Collections.ICollection GetStandardStrings (ITypeDescriptorContext context)
- {
- ProjectFileDescriptor descriptor = context != null?
- context.Instance as ProjectFileDescriptor : null;
-
- if (descriptor != null && descriptor.file != null && descriptor.file.Project != null) {
- return descriptor.file.Project.GetBuildActions ();
- } else {
- return new string[] {"Content", "None", "Compile"};
- }
- }
-
- public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
- {
- return destinationType == typeof (string);
- }
-
- public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
- {
- return (string)value;
- }
-
- public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+// ProjectFileDescriptor.cs
+//
+//Author:
+// Lluis Sanchez Gual
+//
+//Copyright (c) 2007 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+//
+
+using System;
+using System.ComponentModel;
+
+using MonoDevelop.Projects;
+using MonoDevelop.Core;
+using MonoDevelop.Ide;
+using System.Linq;
+
+namespace MonoDevelop.DesignerSupport
+{
+ 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.Populate (saveEditSession: false);
+ }
+
+ void IDisposable.Dispose ()
+ {
+ if (project != null) {
+ project.FilePropertyChangedInProject -= OnFilePropertyChangedInProject;
+ project = null;
+ }
+ }
+
+ [LocalizedCategory ("Misc")]
+ [LocalizedDisplayName ("Name")]
+ [LocalizedDescription ("Name of the file.")]
+ public string Name {
+ get { return System.IO.Path.GetFileName (file.Name); }
+ }
+
+ [LocalizedCategory ("Misc")]
+ [LocalizedDisplayName ("Path")]
+ [LocalizedDescription ("Full path of the file.")]
+ public string Path {
+ get { return file.FilePath; }
+ }
+
+ [LocalizedCategory ("Misc")]
+ [LocalizedDisplayName ("Type")]
+ [LocalizedDescription ("Type of the file.")]
+ public string FileType {
+ get {
+ string type = DesktopService.GetMimeTypeForUri (file.Name);
+ return DesktopService.GetMimeTypeDescription (type);
+ }
+ }
+
+ [LocalizedCategory ("Build")]
+ [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; }
+ }
+
+ [LocalizedCategory ("Build")]
+ [LocalizedDisplayName ("Resource ID")]
+ [LocalizedDescription ("Identifier of the embedded resource.")]
+ public string ResourceId {
+ get { return file.ResourceId; }
+ set { file.ResourceId = value; }
+ }
+
+ [LocalizedCategory ("Build")]
+ [LocalizedDisplayName ("Copy to output directory")]
+ [LocalizedDescription ("Whether to copy the file to the project's output directory when the project is built.")]
+ public FileCopyMode CopyToOutputDirectory {
+ get { return file.CopyToOutputDirectory; }
+ set { file.CopyToOutputDirectory = value; }
+ }
+
+ [LocalizedCategory ("Build")]
+ [LocalizedDisplayName ("Custom Tool")]
+ [LocalizedDescription ("The ID of a custom code generator.")]
+ public string Generator {
+ get { return file.Generator; }
+ set { file.Generator = value; }
+ }
+
+ [LocalizedCategory ("Build")]
+ [LocalizedDisplayName ("Custom Tool Namespace")]
+ [LocalizedDescription ("Overrides the namespace in which the custom code generator should generate code.")]
+ public string CustomToolNamespace {
+ get { return file.CustomToolNamespace; }
+ set { file.CustomToolNamespace = value; }
+ }
+
+ protected override bool IsReadOnly (string propertyName)
+ {
+ return false;
+ }
+
+ [MonoDevelop.Components.PropertyGrid.PropertyEditors.StandardValuesSeparator ("--")]
+ class BuildActionStringsConverter : StandardStringsConverter
+ {
+ public override System.Collections.ICollection GetStandardStrings (ITypeDescriptorContext context)
+ {
+ ProjectFileDescriptor descriptor = context != null?
+ context.Instance as ProjectFileDescriptor : null;
+
+ if (descriptor != null && descriptor.file != null && descriptor.file.Project != null) {
+ return descriptor.file.Project.GetBuildActions ();
+ } else {
+ return new string[] {"Content", "None", "Compile"};
+ }
+ }
+
+ public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+ {
+ return destinationType == typeof (string);
+ }
+
+ public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
+ {
+ return (string)value;
+ }
+
+ public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+ {
+ return sourceType == typeof (string);
+ }
+
+ public override object ConvertFrom (ITypeDescriptorContext context,
+ System.Globalization.CultureInfo culture, object value)
{
- return sourceType == typeof (string);
- }
-
- public override object ConvertFrom (ITypeDescriptorContext context,
- System.Globalization.CultureInfo culture, object value)
+ if (!IsValid (context, value))
+ throw new FormatException ("Invalid build target name");
+
+ return (string)value;
+ }
+
+ public override bool IsValid (ITypeDescriptorContext context, object value)
{
- if (!IsValid (context, value))
- throw new FormatException ("Invalid build target name");
+ if (!(value is string))
+ return false;
- return (string)value;
- }
-
- public override bool IsValid (ITypeDescriptorContext context, object value)
- {
- if (!(value is string))
- return false;
-
- string str = (string) value;
- if (string.IsNullOrEmpty (str) || !char.IsLetter (str[0]))
- return false;
-
- for (int i = 1; i < str.Length; i++) {
- char c = str[i];
- if (char.IsLetterOrDigit (c) || c == '_')
- continue;
- else
- return false;
- }
-
- return true;
- }
- public override bool GetStandardValuesExclusive (ITypeDescriptorContext context)
- {
- return false;
- }
- }
-
+ string str = (string) value;
+ if (string.IsNullOrEmpty (str) || !char.IsLetter (str[0]))
+ return false;
+
+ for (int i = 1; i < str.Length; i++) {
+ char c = str[i];
+ if (char.IsLetterOrDigit (c) || c == '_')
+ continue;
+ else
+ return false;
+ }
+
+ return true;
+ }
+ public override bool GetStandardValuesExclusive (ITypeDescriptorContext context)
+ {
+ return false;
+ }
+ }
+
abstract class StandardStringsConverter : TypeConverter
{
- public override bool GetStandardValuesSupported (ITypeDescriptorContext context)
+ public override bool GetStandardValuesSupported (ITypeDescriptorContext context)
{
- return true;
+ return true;
}
- public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
+ public override bool CanConvertFrom (ITypeDescriptorContext context, Type sourceType)
{
- return sourceType == typeof (string) || base.CanConvertFrom (context, sourceType);
+ return sourceType == typeof (string) || base.CanConvertFrom (context, sourceType);
}
- public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
- {
- return destinationType == typeof (string) || base.CanConvertTo (context, destinationType);
+ public override bool CanConvertTo (ITypeDescriptorContext context, Type destinationType)
+ {
+ return destinationType == typeof (string) || base.CanConvertTo (context, destinationType);
}
- public override object ConvertFrom (ITypeDescriptorContext context,
- System.Globalization.CultureInfo culture, object value)
+ public override object ConvertFrom (ITypeDescriptorContext context,
+ System.Globalization.CultureInfo culture, object value)
{
- if (value != null && value is string)
- return value;
- else
- return base.ConvertFrom (context, culture, value);
+ if (value != null && value is string)
+ return value;
+ else
+ return base.ConvertFrom (context, culture, value);
}
- public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture,
- object value, Type destinationType)
- {
- if (value != null && (destinationType == typeof (string)))
- return value;
- else
- return base.ConvertTo (context, culture, value, destinationType);
+ public override object ConvertTo (ITypeDescriptorContext context, System.Globalization.CultureInfo culture,
+ object value, Type destinationType)
+ {
+ if (value != null && (destinationType == typeof (string)))
+ return value;
+ else
+ return base.ConvertTo (context, culture, value, destinationType);
}
- public override StandardValuesCollection GetStandardValues (ITypeDescriptorContext context)
- {
- return new StandardValuesCollection (GetStandardStrings (context));
+ public override StandardValuesCollection GetStandardValues (ITypeDescriptorContext context)
+ {
+ return new StandardValuesCollection (GetStandardStrings (context));
}
public abstract System.Collections.ICollection GetStandardStrings (ITypeDescriptorContext context);
- }
- }
-}
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs
index b5181eed6b..b49a661802 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs
@@ -41,7 +41,19 @@ namespace MonoDevelop.DesignerSupport.Projects
{
this.pref = pref;
}
-
+
+ [LocalizedCategory ("Reference")]
+ [LocalizedDisplayName ("Aliases")]
+ [LocalizedDescription ("A comma delimited list of aliases applied to this reference.")]
+ public string Aliases {
+ get {
+ return pref.Aliases;
+ }
+ set {
+ pref.Aliases = value;
+ }
+ }
+
[LocalizedCategory ("Reference")]
[LocalizedDisplayName ("Type")]
[LocalizedDescription ("Type of the reference.")]
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/CodeTemplateToolboxProvider.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/CodeTemplateToolboxProvider.cs
index 5f2514e67b..5ed2482524 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/CodeTemplateToolboxProvider.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/CodeTemplateToolboxProvider.cs
@@ -31,6 +31,7 @@ using MonoDevelop.Ide.CodeTemplates;
using MonoDevelop.Ide;
using MonoDevelop.Ide.Gui.Content;
using MonoDevelop.Ide.Editor;
+using MonoDevelop.Ide.Gui;
namespace MonoDevelop.DesignerSupport.Toolbox
{
@@ -42,18 +43,20 @@ namespace MonoDevelop.DesignerSupport.Toolbox
public System.Collections.Generic.IEnumerable<ItemToolboxNode> GetDynamicItems (IToolboxConsumer consumer)
{
- var editor = consumer as IReadonlyTextDocument;
- if (editor != null) {
- foreach (CodeTemplate ct in CodeTemplateService.GetCodeTemplatesForFile (editor.FileName)) {
- if (ct.CodeTemplateContext != CodeTemplateContext.Standard)
- continue;
- yield return new TemplateToolboxNode (ct) {
- Category = category,
- Icon = ImageService.GetIcon ("md-template", Gtk.IconSize.Menu)
- };
- }
+ var content = consumer as ViewContent;
+ if (content == null || !content.IsFile)
+ yield break;
+ // Hack: Ensure that this category is only filled if the current page is a text editor.
+ if (!(content is ITextEditorResolver))
+ yield break;
+ foreach (CodeTemplate ct in CodeTemplateService.GetCodeTemplatesForFile (content.ContentName)) {
+ if (ct.CodeTemplateContext != CodeTemplateContext.Standard)
+ continue;
+ yield return new TemplateToolboxNode (ct) {
+ Category = category,
+ Icon = ImageService.GetIcon ("md-template", Gtk.IconSize.Menu)
+ };
}
- yield break;
}
public event EventHandler ItemsChanged {
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ComponentSelectorDialog.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ComponentSelectorDialog.cs
index 2d32c17973..53a79e703d 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ComponentSelectorDialog.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/ComponentSelectorDialog.cs
@@ -34,7 +34,8 @@ using MonoDevelop.Core;
using MonoDevelop.Ide.ProgressMonitoring;
using MonoDevelop.Components;
using MonoDevelop.Ide;
-
+using System.Threading.Tasks;
+
namespace MonoDevelop.DesignerSupport.Toolbox
{
internal partial class ComponentSelectorDialog : Gtk.Dialog
@@ -55,12 +56,8 @@ namespace MonoDevelop.DesignerSupport.Toolbox
bool showCategories;
Dictionary<ItemToolboxNode, ItemToolboxNode> currentItems = new Dictionary<ItemToolboxNode, ItemToolboxNode> ();
- public ComponentSelectorDialog (IToolboxConsumer currentConsumer)
+ public ComponentSelectorDialog ()
{
- using (ProgressMonitor monitor = new MessageDialogProgressMonitor (true, true, false, true)) {
- index = DesignerSupport.Service.ToolboxService.GetComponentIndex (monitor);
- }
-
this.ApplyTheme ();
this.Build();
@@ -106,28 +103,38 @@ namespace MonoDevelop.DesignerSupport.Toolbox
foreach (ItemToolboxNode it in DesignerSupport.Service.ToolboxService.UserItems)
currentItems [it] = it;
-
- List<string> list = new List<string> ();
- foreach (ComponentIndexFile ifile in index.Files) {
- foreach (ItemToolboxNode co in ifile.Components) {
- if (!list.Contains (co.ItemDomain))
- list.Add (co.ItemDomain);
- }
- }
-
- string defaultDomain = null;
- if (currentConsumer != null)
- defaultDomain = currentConsumer.DefaultItemDomain;
-
+
comboType.AppendText (GettextCatalog.GetString ("All"));
comboType.Active = 0;
+ }
- for (int n=0; n<list.Count; n++) {
- string s = list [n];
- comboType.AppendText (s);
- if (s == defaultDomain)
- comboType.Active = n+1;
- }
+ public async Task<bool> Initialize (IToolboxConsumer currentConsumer)
+ {
+ using (ProgressMonitor monitor = new MessageDialogProgressMonitor (true, true, false, true)) {
+ index = await DesignerSupport.Service.ToolboxService.GetComponentIndex (monitor);
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return false;
+ }
+
+ List<string> list = new List<string> ();
+ foreach (ComponentIndexFile ifile in index.Files) {
+ foreach (ItemToolboxNode co in ifile.Components) {
+ if (!list.Contains (co.ItemDomain))
+ list.Add (co.ItemDomain);
+ }
+ }
+
+ string defaultDomain = null;
+ if (currentConsumer != null)
+ defaultDomain = currentConsumer.DefaultItemDomain;
+
+ for (int n = 0; n < list.Count; n++) {
+ string s = list [n];
+ comboType.AppendText (s);
+ if (s == defaultDomain)
+ comboType.Active = n + 1;
+ }
+ return true;
}
public void Fill ()
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/Toolbox.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/Toolbox.cs
index bda69169b5..d0ef7aa78e 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/Toolbox.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/Toolbox.cs
@@ -167,9 +167,9 @@ namespace MonoDevelop.DesignerSupport.Toolbox
toolboxWidget.QueueResize ();
}
- void toolboxAddButton_Clicked (object sender, EventArgs e)
+ async void toolboxAddButton_Clicked (object sender, EventArgs e)
{
- toolboxService.AddUserItems ();
+ await toolboxService.AddUserItems ();
}
void ShowPopup (Gdk.EventButton evt)
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/Commands.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/Commands.cs
index 2895795fdb..137de5a6db 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/Commands.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/Commands.cs
@@ -42,9 +42,9 @@ namespace MonoDevelop.DesignerSupport
public class SelectItemsCommandHandler: CommandHandler
{
- protected override void Run ()
+ protected override async void Run ()
{
- MonoDevelop.DesignerSupport.DesignerSupport.Service.ToolboxService.AddUserItems ();
+ await MonoDevelop.DesignerSupport.DesignerSupport.Service.ToolboxService.AddUserItems ();
}
}
}
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/PropertyPad.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/PropertyPad.cs
index 9ce9320b34..fb18f70238 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/PropertyPad.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/PropertyPad.cs
@@ -87,6 +87,7 @@ namespace MonoDevelop.DesignerSupport
public override void Dispose()
{
DesignerSupport.Service.SetPad (null);
+ base.Dispose ();
}
#endregion
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/SwitchBetweenRelatedFilesCommand.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/SwitchBetweenRelatedFilesCommand.cs
index 18653c1b07..2430448a94 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/SwitchBetweenRelatedFilesCommand.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/SwitchBetweenRelatedFilesCommand.cs
@@ -58,7 +58,7 @@ namespace MonoDevelop.DesignerSupport
var files = GetFileGroup (projectFile).ToList ();
for (int i = 0; i < files.Count; i++) {
if (projectFile.Equals (files[i]))
- IdeApp.Workbench.OpenDocument (files[(i+1)%(files.Count)].FilePath, true);
+ IdeApp.Workbench.OpenDocument (files[(i+1)%(files.Count)].FilePath, null, true);
}
}
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/ToolboxService.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/ToolboxService.cs
index 68c6ddf7f8..502b4418fa 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/ToolboxService.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/ToolboxService.cs
@@ -45,7 +45,8 @@ using MonoDevelop.Projects;
using MonoDevelop.Core.Serialization;
using MonoDevelop.DesignerSupport.Toolbox;
using MonoDevelop.Ide;
-
+using System.Threading.Tasks;
+
namespace MonoDevelop.DesignerSupport
{
public class ToolboxService
@@ -123,9 +124,13 @@ namespace MonoDevelop.DesignerSupport
OnToolboxContentsChanged ();
}
- public void AddUserItems ()
+ public async Task AddUserItems ()
{
- using (ComponentSelectorDialog dlg = new ComponentSelectorDialog (currentConsumer)) {
+ using (ComponentSelectorDialog dlg = new ComponentSelectorDialog ()) {
+ bool initialized = await dlg.Initialize (currentConsumer);
+ if (!initialized)
+ return;
+
dlg.Fill ();
MessageService.ShowCustomDialog (dlg);
}
@@ -541,7 +546,7 @@ namespace MonoDevelop.DesignerSupport
throw new InvalidOperationException ("Unexpected ToolboxItemFilterType value.");
}
- internal ComponentIndex GetComponentIndex (ProgressMonitor monitor)
+ internal async Task<ComponentIndex> GetComponentIndex (ProgressMonitor monitor)
{
// Returns an index of all components that can be added to the toolbox.
@@ -583,13 +588,17 @@ namespace MonoDevelop.DesignerSupport
if (toupdate.Count > 0) {
monitor.BeginTask (GettextCatalog.GetString ("Looking for components..."), toupdate.Count);
LoaderContext ctx = new LoaderContext ();
- try {
- foreach (ComponentIndexFile ia in toupdate) {
- ia.Update (ctx);
- monitor.Step (1);
- if (monitor.CancellationToken.IsCancellationRequested)
- return index;
- }
+ try {
+ await Task.Run (() => {
+ foreach (ComponentIndexFile ia in toupdate) {
+ ia.Update (ctx);
+ monitor.Step (1);
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
+ }
+ });
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return index;
} finally {
ctx.Dispose ();
monitor.EndTask ();
@@ -600,8 +609,8 @@ namespace MonoDevelop.DesignerSupport
index.Save ();
return index;
- }
-
+ }
+
#endregion
}
diff --git a/main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood/DocFoodTextEditorExtension.cs b/main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood/DocFoodTextEditorExtension.cs
index b73b13086c..7ccb5b775d 100644
--- a/main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood/DocFoodTextEditorExtension.cs
+++ b/main/src/addins/MonoDevelop.DocFood/MonoDevelop.DocFood/DocFoodTextEditorExtension.cs
@@ -24,7 +24,6 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
-using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Text;
@@ -49,7 +48,7 @@ namespace MonoDevelop.DocFood
return doc.Substring (trimStart).TrimEnd ('\n', '\r');
}
- public override Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
if (descriptor.KeyChar != '/')
return base.KeyPress (descriptor);
@@ -104,7 +103,7 @@ namespace MonoDevelop.DocFood
if (SelectSummary (offset, insertedLength, documentation) == false)
Editor.CaretOffset = offset + insertedLength;
}
- return Task.FromResult (false);
+ return false;
}
/// <summary>
diff --git a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/Styles.cs b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/Styles.cs
index 60d41c71b3..b2d61ba3d6 100644
--- a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/Styles.cs
+++ b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/Styles.cs
@@ -49,7 +49,7 @@ namespace MonoDevelop.Gettext
public static void LoadStyles ()
{
POEditor = new POEditorStyle ();
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light) {
POEditor.EntryUntranslatedBackgroundColor = new Gdk.Color (234, 232, 227);
POEditor.EntryMissingBackgroundColor = new Gdk.Color (237, 226, 187);
POEditor.EntryFuzzyBackgroundColor = new Gdk.Color (255, 199, 186);
diff --git a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.addin.xml b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.addin.xml
index 60b8901f70..a65c81440e 100644
--- a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.addin.xml
+++ b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.addin.xml
@@ -86,7 +86,7 @@
</Extension>
<Extension path = "/MonoDevelop/Ide/ProjectTemplates">
- <ProjectTemplate id = "MonoDevelop.Gettext.TranslationInfo" resource = "TranslationProject.xpt.xml" />
+ <ProjectTemplate id = "MonoDevelop.Gettext.TranslationProject" resource = "TranslationProject.xpt.xml" />
</Extension>
<Extension path = "/MonoDevelop/Ide/TemplateImages">
diff --git a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext/GettextTool.cs b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext/GettextTool.cs
index c2848375cc..a3ec7fe38e 100644
--- a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext/GettextTool.cs
+++ b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext/GettextTool.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
using MonoDevelop.Projects;
using MonoDevelop.Core;
using MonoDevelop.Core.ProgressMonitoring;
+using MonoDevelop.Ide;
using System.Threading.Tasks;
namespace MonoDevelop.Gettext
@@ -43,6 +44,8 @@ namespace MonoDevelop.Gettext
public async Task<int> Run (string[] arguments)
{
+ DesktopService.Initialize ();
+
Console.WriteLine (BrandingService.BrandApplicationName ("MonoDevelop Gettext Update Tool"));
foreach (string s in arguments)
ReadArgument (s);
diff --git a/main/src/addins/MonoDevelop.GtkCore/AddinInfo.cs b/main/src/addins/MonoDevelop.GtkCore/AddinInfo.cs
index 904938eb23..5f0d806512 100644
--- a/main/src/addins/MonoDevelop.GtkCore/AddinInfo.cs
+++ b/main/src/addins/MonoDevelop.GtkCore/AddinInfo.cs
@@ -6,6 +6,9 @@ using Mono.Addins.Description;
[assembly:Addin ("GtkCore",
Namespace = "MonoDevelop",
Version = MonoDevelop.BuildInfo.Version,
+#if !GNOME
+ EnabledByDefault = false,
+#endif
Category = "IDE extensions")]
[assembly:AddinName ("GTK# Visual Designer")]
diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/ActionGroupDisplayBinding.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/ActionGroupDisplayBinding.cs
index 5eae8f19fd..d472880aeb 100644
--- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/ActionGroupDisplayBinding.cs
+++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/ActionGroupDisplayBinding.cs
@@ -42,7 +42,6 @@ using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using ICSharpCode.NRefactory6.CSharp.Completion;
using ICSharpCode.NRefactory6.CSharp;
-using System.Linq;
using MonoDevelop.CSharp.Refactoring;
using MonoDevelop.Refactoring;
diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs
index c765892291..f1ada4ce17 100644
--- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs
+++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderService.cs
@@ -176,7 +176,7 @@ namespace MonoDevelop.GtkCore.GuiBuilder
file = ActionGroupDisplayBinding.BindToClass (project, group);
}
- Document doc = await IdeApp.Workbench.OpenDocument (file, true);
+ Document doc = await IdeApp.Workbench.OpenDocument (file, null, true);
if (doc != null) {
ActionGroupView view = doc.GetContent<ActionGroupView> ();
if (view != null) {
diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/ActionGroupNodeBuilder.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/ActionGroupNodeBuilder.cs
index ad6f2b722b..931f55efd7 100644
--- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/ActionGroupNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/ActionGroupNodeBuilder.cs
@@ -93,7 +93,7 @@ namespace MonoDevelop.GtkCore.NodeBuilders
if (w.SourceCodeFile == FilePath.Null && !w.BindToClass ())
return;
- Document doc = await IdeApp.Workbench.OpenDocument (w.SourceCodeFile, true);
+ Document doc = await IdeApp.Workbench.OpenDocument (w.SourceCodeFile, null, true);
if (doc != null) {
GuiBuilderView view = doc.GetContent<GuiBuilderView> ();
if (view != null)
diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WidgetNodeBuilder.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WidgetNodeBuilder.cs
index cf1ce14602..21bf56999c 100644
--- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WidgetNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WidgetNodeBuilder.cs
@@ -118,7 +118,7 @@ namespace MonoDevelop.GtkCore.NodeBuilders
if (w.SourceCodeFile == FilePath.Null && !w.BindToClass ())
return;
- Document doc = await IdeApp.Workbench.OpenDocument (w.SourceCodeFile, true);
+ Document doc = await IdeApp.Workbench.OpenDocument (w.SourceCodeFile, null, true);
if (doc != null) {
GuiBuilderView view = doc.GetContent<GuiBuilderView> ();
if (view != null)
diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.csproj b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.csproj
index 9b5c179396..dff5e1af6e 100644
--- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.csproj
+++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.csproj
@@ -38,6 +38,34 @@
<NoWarn>1591;1573</NoWarn>
<DocumentationFile>..\..\..\build\AddIns\MonoDevelop.GtkCore\MonoDevelop.GtkCore.xml</DocumentationFile>
</PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugGnome|AnyCPU' ">
+ <DebugSymbols>True</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\..\build\AddIns\MonoDevelop.GtkCore</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Execution>
+ <Execution clr-version="Net_2_0" />
+ </Execution>
+ <DefineConstants>DEBUG;GNOME</DefineConstants>
+ <NoWarn>1591;1573</NoWarn>
+ <DocumentationFile>..\..\..\build\AddIns\MonoDevelop.GtkCore\MonoDevelop.GtkCore.xml</DocumentationFile>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseGnome|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>True</Optimize>
+ <OutputPath>..\..\..\build\AddIns\MonoDevelop.GtkCore</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <Execution>
+ <Execution clr-version="Net_2_0" />
+ </Execution>
+ <DefineConstants>GNOME</DefineConstants>
+ <DebugSymbols>true</DebugSymbols>
+ <NoWarn>1591;1573</NoWarn>
+ <DocumentationFile>..\..\..\build\AddIns\MonoDevelop.GtkCore\MonoDevelop.GtkCore.xml</DocumentationFile>
+ </PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/Styles.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/Styles.cs
index aaea5a60c0..af9444b2a3 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/Styles.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/Styles.cs
@@ -53,7 +53,7 @@ namespace MonoDevelop.PackageManagement
public static void LoadStyles ()
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light) {
CellBackgroundColor = Ide.Gui.Styles.PadBackground;
} else {
CellBackgroundColor = Xwt.Drawing.Color.FromName ("#3c3c3c");
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageManager.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageManager.cs
index ea3071b6dc..21f358b016 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageManager.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageManager.cs
@@ -27,7 +27,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using MonoDevelop.PackageManagement;
using NuGet;
namespace MonoDevelop.PackageManagement.Tests.Helpers
@@ -257,5 +256,9 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
public void AddPackageReference (IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions)
{
}
+
+ public void InstallPackageIntoSolutionRepository (IPackage package)
+ {
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageRepository.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageRepository.cs
index 40e0784039..2bd4b437bd 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageRepository.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakePackageRepository.cs
@@ -32,7 +32,7 @@ using NuGet;
namespace MonoDevelop.PackageManagement.Tests.Helpers
{
- public class FakePackageRepository : IRecentPackageRepository, IProgressProvider
+ public class FakePackageRepository : IRecentPackageRepository, IProgressProvider, ICloneableRepository
{
public List<FakePackage> FakePackages = new List<FakePackage> ();
public bool IsRemovePackageCalled;
@@ -91,6 +91,20 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
ProgressAvailable (this, e);
}
}
+
+ public FakePackageRepository ClonedRepository;
+
+ public bool IsCloneOf (FakePackageRepository packageRepository)
+ {
+ return ClonedRepository == packageRepository;
+ }
+
+ public IPackageRepository Clone ()
+ {
+ return new FakePackageRepository () {
+ ClonedRepository = this
+ };
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProjectManager.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProjectManager.cs
index eafbdb3e4d..f279c7c4e6 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProjectManager.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests.Helpers/FakeProjectManager.cs
@@ -55,8 +55,13 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
protected virtual void OnPackageReferenceAdded (IPackage package)
{
+ OnPackageReferenceAdded (new PackageOperationEventArgs (package, null, String.Empty));
+ }
+
+ protected virtual void OnPackageReferenceAdded (PackageOperationEventArgs eventArgs)
+ {
if (PackageReferenceAdded != null) {
- PackageReferenceAdded (this, new PackageOperationEventArgs (package, null, String.Empty));
+ PackageReferenceAdded (this, eventArgs);
}
}
@@ -115,6 +120,11 @@ namespace MonoDevelop.PackageManagement.Tests.Helpers
OnPackageReferenceAdded (package);
}
+ public void FirePackageReferenceAdded (PackageOperationEventArgs eventArgs)
+ {
+ OnPackageReferenceAdded (eventArgs);
+ }
+
public void FirePackageReferenceRemoved (IPackage package)
{
FirePackageReferenceRemoved (new PackageOperationEventArgs (package, null, String.Empty));
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopPackageManagerTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopPackageManagerTests.cs
index 56485dbcb8..cc50fb5172 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopPackageManagerTests.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/MonoDevelopPackageManagerTests.cs
@@ -51,6 +51,14 @@ namespace MonoDevelop.PackageManagement.Tests
void CreatePackageManager (IProject project, PackageReferenceRepositoryHelper packageRefRepositoryHelper)
{
+ CreatePackageManager (project, packageRefRepositoryHelper, new FakePackageRepository ());
+ }
+
+ void CreatePackageManager (
+ IProject project,
+ PackageReferenceRepositoryHelper packageRefRepositoryHelper,
+ IPackageRepository sourceRepository)
+ {
options = new TestablePackageManagementOptions ();
options.PackagesDirectory = "packages";
@@ -59,7 +67,7 @@ namespace MonoDevelop.PackageManagement.Tests
fakeFileSystem = new FakeFileSystem ();
- fakeFeedSourceRepository = new FakePackageRepository ();
+ fakeFeedSourceRepository = sourceRepository as FakePackageRepository;
fakeSolutionSharedRepository = packageRefRepositoryHelper.FakeSharedSourceRepository;
fakePackageOperationResolverFactory = new FakePackageOperationResolverFactory ();
@@ -70,7 +78,7 @@ namespace MonoDevelop.PackageManagement.Tests
fakeSolutionPackageRepository.PackagePathResolver = pathResolver;
fakeSolutionPackageRepository.FakeSharedRepository = fakeSolutionSharedRepository;
- packageManager = new MonoDevelopPackageManager (fakeFeedSourceRepository,
+ packageManager = new MonoDevelopPackageManager (sourceRepository,
packageRefRepositoryHelper.FakeProjectSystem,
fakeSolutionPackageRepository,
fakePackageOperationResolverFactory);
@@ -78,9 +86,14 @@ namespace MonoDevelop.PackageManagement.Tests
void CreatePackageManager ()
{
+ CreatePackageManager (new FakePackageRepository ());
+ }
+
+ void CreatePackageManager (IPackageRepository sourceRepository)
+ {
CreateTestProject ();
CreatePackageReferenceRepositoryHelper ();
- CreatePackageManager (project, packageRefRepositoryHelper);
+ CreatePackageManager (project, packageRefRepositoryHelper, sourceRepository);
}
void CreatePackageReferenceRepositoryHelper ()
@@ -342,6 +355,17 @@ namespace MonoDevelop.PackageManagement.Tests
() => eventArgs.ToList ().ForEach (eventArg => projectManager.FirePackageReferenceRemoved (eventArg)));
}
+ void RaisePackageAddedEventWhenPackageReferenceUpdated (
+ FakeProjectManager projectManager,
+ FakePackage updatedPackage,
+ params PackageOperationEventArgs[] eventArgs)
+ {
+ projectManager.WhenUpdatePackageReferenceCalled (
+ updatedPackage.Id,
+ updatedPackage.Version,
+ () => eventArgs.ToList ().ForEach (eventArg => projectManager.FirePackageReferenceAdded (eventArg)));
+ }
+
void RaisePackageRemovedEventWhenPackageReferenceAdded (
FakeProjectManager projectManager,
FakePackage newPackage,
@@ -353,11 +377,44 @@ namespace MonoDevelop.PackageManagement.Tests
() => eventArgs.ToList ().ForEach (eventArg => projectManager.FirePackageReferenceRemoved (eventArg)));
}
+ void RaisePackageAddedEventWhenPackageReferenceAdded (
+ FakeProjectManager projectManager,
+ FakePackage newPackage,
+ params PackageOperationEventArgs[] eventArgs)
+ {
+ projectManager.WhenAddPackageReferenceCalled (
+ newPackage.Id,
+ newPackage.Version,
+ () => eventArgs.ToList ().ForEach (eventArg => projectManager.FirePackageReferenceAdded (eventArg)));
+ }
+
[Test]
- public void ProjectManager_InstanceCreated_SourceRepositoryIsSharedRepositoryPassedToPackageManager ()
+ public void ProjectManager_InstanceCreated_SourceRepositoryIsAggregrateRepositoryContainingSharedRepositoryPassedToPackageManager ()
{
CreatePackageManager ();
- Assert.AreEqual (fakeSolutionSharedRepository, packageManager.ProjectManager.SourceRepository);
+
+ var aggregateRepository = packageManager.ProjectManager.SourceRepository as AggregateRepository;
+ var secondaryRepository = aggregateRepository.Repositories.Last () as FakePackageRepository;
+ Assert.AreEqual (2, aggregateRepository.Repositories.Count ());
+ Assert.AreEqual (fakeSolutionSharedRepository, aggregateRepository.Repositories.First ());
+ Assert.IsTrue (secondaryRepository.IsCloneOf (fakeFeedSourceRepository));
+ }
+
+ [Test]
+ public void ProjectManager_LocalRepositoryIsFallbackRepository_SourceRepositoryIsFallbackContainingSharedRepositoryPassedToPackageManager ()
+ {
+ var primaryRepository = new FakePackageRepository ();
+ var dependencyResolver = new FakePackageRepository ();
+ var fallbackRepository = new FallbackRepository (primaryRepository, dependencyResolver);
+ CreatePackageManager (fallbackRepository);
+
+ var sourceRepository = packageManager.ProjectManager.SourceRepository as FallbackRepository;
+ var aggregateRepository = sourceRepository.SourceRepository as AggregateRepository;
+ Assert.AreEqual (dependencyResolver, sourceRepository.DependencyResolver);
+ var secondaryRepository = aggregateRepository.Repositories.Last () as FakePackageRepository;
+ Assert.AreEqual (2, aggregateRepository.Repositories.Count ());
+ Assert.AreEqual (fakeSolutionSharedRepository, aggregateRepository.Repositories.First ());
+ Assert.IsTrue (secondaryRepository.IsCloneOf (primaryRepository));
}
[Test]
@@ -1133,6 +1190,84 @@ namespace MonoDevelop.PackageManagement.Tests
Assert.IsTrue (fakeSolutionSharedRepository.FakePackages.Contains (installedPackage));
}
+
+ [Test]
+ public void InstallPackage_PackageReferenceIsAddedForPackageNotInstalledInLocalRepository_PackageIsInstalled ()
+ {
+ CreatePackageManager ();
+ var fakeProjectManager = new FakeProjectManager ();
+ packageManager.ProjectManager = fakeProjectManager;
+ var packageReferenced = new FakePackage ("FooBar", "1.0");
+ FakePackage newPackage = fakeFeedSourceRepository.AddFakePackageWithVersion ("MyPackage", "1.1");
+ var eventArgs = new PackageOperationEventArgs (packageReferenced, null, null);
+ RaisePackageAddedEventWhenPackageReferenceAdded (fakeProjectManager, newPackage, eventArgs);
+ var installAction = new FakeInstallPackageAction {
+ Operations = new List<PackageOperation> ()
+ };
+
+ packageManager.InstallPackage (newPackage, installAction);
+
+ Assert.IsTrue (fakeSolutionSharedRepository.PackagesAdded.Contains (packageReferenced));
+ }
+
+ [Test]
+ public void InstallPackage_PackageReferenceIsAddedForPackageInstalledInLocalRepository_PackageIsNotInstalledToLocalRepositoryAgain ()
+ {
+ CreatePackageManager ();
+ var fakeProjectManager = new FakeProjectManager ();
+ packageManager.ProjectManager = fakeProjectManager;
+ var packageReferenced = new FakePackage ("FooBar", "1.0");
+ fakeSolutionSharedRepository.FakePackages.Add (packageReferenced);
+ FakePackage newPackage = fakeFeedSourceRepository.AddFakePackageWithVersion ("MyPackage", "1.1");
+ var eventArgs = new PackageOperationEventArgs (packageReferenced, null, null);
+ RaisePackageAddedEventWhenPackageReferenceAdded (fakeProjectManager, newPackage, eventArgs);
+ var installAction = new FakeInstallPackageAction {
+ Operations = new List<PackageOperation> ()
+ };
+
+ packageManager.InstallPackage (newPackage, installAction);
+
+ Assert.IsFalse (fakeSolutionSharedRepository.PackagesAdded.Contains (packageReferenced));
+ }
+
+ [Test]
+ public void UpdatePackage_PackageReferenceIsAddedForPackageNotInstalledInLocalRepository_PackageIsInstalled ()
+ {
+ CreatePackageManager ();
+ var fakeProjectManager = new FakeProjectManager ();
+ packageManager.ProjectManager = fakeProjectManager;
+ var packageReferenced = new FakePackage ("FooBar", "1.0");
+ FakePackage newPackage = fakeFeedSourceRepository.AddFakePackageWithVersion ("MyPackage", "1.1");
+ var eventArgs = new PackageOperationEventArgs (packageReferenced, null, null);
+ RaisePackageAddedEventWhenPackageReferenceUpdated (fakeProjectManager, newPackage, eventArgs);
+ var updateAction = new FakeUpdatePackageAction {
+ Operations = new List<PackageOperation> ()
+ };
+
+ packageManager.UpdatePackage (newPackage, updateAction);
+
+ Assert.IsTrue (fakeSolutionSharedRepository.PackagesAdded.Contains (packageReferenced));
+ }
+
+ [Test]
+ public void UpdatePackage_PackageReferenceIsAddedForPackageInstalledInLocalRepository_PackageIsNotInstalledAgainInLocalRepository ()
+ {
+ CreatePackageManager ();
+ var fakeProjectManager = new FakeProjectManager ();
+ packageManager.ProjectManager = fakeProjectManager;
+ var packageReferenced = new FakePackage ("FooBar", "1.0");
+ fakeSolutionSharedRepository.FakePackages.Add (packageReferenced);
+ FakePackage newPackage = fakeFeedSourceRepository.AddFakePackageWithVersion ("MyPackage", "1.1");
+ var eventArgs = new PackageOperationEventArgs (packageReferenced, null, null);
+ RaisePackageAddedEventWhenPackageReferenceUpdated (fakeProjectManager, newPackage, eventArgs);
+ var updateAction = new FakeUpdatePackageAction {
+ Operations = new List<PackageOperation> ()
+ };
+
+ packageManager.UpdatePackage (newPackage, updateAction);
+
+ Assert.IsFalse (fakeSolutionSharedRepository.PackagesAdded.Contains (packageReferenced));
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
index f874ec3852..ffb8d42e5f 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
@@ -155,7 +155,7 @@
<Compile Include="MonoDevelop.PackageManagement\RecentPackagesViewModel.cs" />
<Compile Include="MonoDevelop.PackageManagement\ReducedPackageOperations.cs" />
<Compile Include="MonoDevelop.PackageManagement\RegisteredPackageSourcesViewModel.cs" />
- <Compile Include="MonoDevelop.PackageManagement\RemovedPackageReferenceMonitor.cs" />
+ <Compile Include="MonoDevelop.PackageManagement\PackageReferenceMonitor.cs" />
<Compile Include="MonoDevelop.PackageManagement\ResolveFileConflictEventArgs.cs" />
<Compile Include="MonoDevelop.PackageManagement\SelectedProjectsForInstalledPackages.cs" />
<Compile Include="MonoDevelop.PackageManagement\SelectedProjectsForUpdatedPackages.cs" />
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/FileConflictResolver.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/FileConflictResolver.cs
index 58f84caff8..54553ab561 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/FileConflictResolver.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/FileConflictResolver.cs
@@ -26,7 +26,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
+using MonoDevelop.Core;
using MonoDevelop.Ide;
using NuGet;
@@ -34,8 +34,8 @@ namespace MonoDevelop.PackageManagement
{
internal class FileConflictResolver : IFileConflictResolver
{
- static AlertButton YesToAllButton = new AlertButton ("Yes to All");
- static AlertButton NoToAllButton = new AlertButton ("No to All");
+ static AlertButton YesToAllButton = new AlertButton (GettextCatalog.GetString ("Yes to All"));
+ static AlertButton NoToAllButton = new AlertButton (GettextCatalog.GetString ("No to All"));
AlertButton[] buttons = new AlertButton[] {
AlertButton.Yes,
@@ -52,7 +52,7 @@ namespace MonoDevelop.PackageManagement
public FileConflictResolution ResolveFileConflict(string message)
{
AlertButton result = MessageService.AskQuestion(
- "File Conflict",
+ GettextCatalog.GetString ("File Conflict"),
message,
NoButtonIndex, // "No" is default accept button.
buttons);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IMonoDevelopPackageManager.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IMonoDevelopPackageManager.cs
index ec94586591..0851e40070 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IMonoDevelopPackageManager.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/IMonoDevelopPackageManager.cs
@@ -26,9 +26,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
using System.Collections.Generic;
-using MonoDevelop.PackageManagement;
using NuGet;
namespace MonoDevelop.PackageManagement
@@ -49,5 +47,7 @@ namespace MonoDevelop.PackageManagement
ReinstallPackageOperations GetReinstallPackageOperations (IEnumerable<IPackage> packages);
void RunPackageOperations(IEnumerable<PackageOperation> operations);
+
+ void InstallPackageIntoSolutionRepository (IPackage package);
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs
index 07c1d0f685..63537562d3 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/InstallPackageAction.cs
@@ -28,6 +28,7 @@
using System;
using System.Collections.Generic;
+using MonoDevelop.Core;
using NuGet;
namespace MonoDevelop.PackageManagement
@@ -92,7 +93,7 @@ namespace MonoDevelop.PackageManagement
}
protected override string StartingMessageFormat {
- get { return "Adding {0}..."; }
+ get { return GettextCatalog.GetString ("Adding {0}..."); }
}
protected override IOpenPackageReadMeMonitor CreateOpenPackageReadMeMonitor (string packageId)
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/LicenseAcceptanceService.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/LicenseAcceptanceService.cs
index 413649f77d..a5110e4a2e 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/LicenseAcceptanceService.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/LicenseAcceptanceService.cs
@@ -51,7 +51,8 @@ namespace MonoDevelop.PackageManagement
bool ShowLicenseAcceptanceDialog (IEnumerable<IPackage> packages)
{
using (LicenseAcceptanceDialog dialog = CreateLicenseAcceptanceDialog (packages)) {
- int result = MessageService.ShowCustomDialog (dialog);
+ dialog.Modal = false;
+ int result = MessageService.ShowCustomDialog (dialog, IdeApp.Workbench.RootWindow);
return result == (int)Gtk.ResponseType.Ok;
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ManagePackagesViewTitle.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ManagePackagesViewTitle.cs
index 48a8243b4c..ef35018dd2 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ManagePackagesViewTitle.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ManagePackagesViewTitle.cs
@@ -26,7 +26,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
+using MonoDevelop.Core;
namespace MonoDevelop.PackageManagement
{
@@ -41,7 +41,7 @@ namespace MonoDevelop.PackageManagement
{
var selectedProjects = new PackageManagementSelectedProjects(solution);
string selectionName = selectedProjects.SelectionName;
- Title = String.Format("{0} - Manage Packages", selectionName);
+ Title = GettextCatalog.GetString ("{0} - Manage Packages", selectionName);
}
public string Title { get; private set; }
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopPackageManager.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopPackageManager.cs
index e76d8deec2..dd3985fa06 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopPackageManager.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopPackageManager.cs
@@ -26,9 +26,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
using System.Collections.Generic;
-using MonoDevelop.PackageManagement;
using NuGet;
namespace MonoDevelop.PackageManagement
@@ -54,7 +52,7 @@ namespace MonoDevelop.PackageManagement
CreateProjectManager();
}
- // <summary>
+ /// <summary>
/// project manager should be created with:
/// local repo = PackageReferenceRepository(projectSystem, sharedRepo)
/// packageRefRepo should have its RegisterIfNecessary() method called before creating the project manager.
@@ -78,9 +76,25 @@ namespace MonoDevelop.PackageManagement
MonoDevelopProjectManager CreateProjectManager(PackageReferenceRepository packageRefRepository)
{
- return new MonoDevelopProjectManager(LocalRepository, PathResolver, projectSystem, packageRefRepository);
+ IPackageRepository sourceRepository = CreateProjectManagerSourceRepository ();
+ return new MonoDevelopProjectManager (sourceRepository, PathResolver, projectSystem, packageRefRepository);
}
-
+
+ IPackageRepository CreateProjectManagerSourceRepository ()
+ {
+ var fallbackRepository = SourceRepository as FallbackRepository;
+ if (fallbackRepository != null) {
+ var primaryRepositories = new [] {
+ LocalRepository,
+ fallbackRepository.SourceRepository.Clone () };
+
+ return new FallbackRepository (
+ new AggregateRepository (primaryRepositories),
+ fallbackRepository.DependencyResolver);
+ }
+ return new AggregateRepository (new [] { LocalRepository, SourceRepository.Clone () });
+ }
+
public void InstallPackage(IPackage package)
{
bool ignoreDependencies = false;
@@ -96,7 +110,7 @@ namespace MonoDevelop.PackageManagement
public void AddPackageReference (IPackage package, bool ignoreDependencies, bool allowPrereleaseVersions)
{
- var monitor = new RemovedPackageReferenceMonitor(ProjectManager);
+ var monitor = new PackageReferenceMonitor (ProjectManager, this);
using (monitor) {
ProjectManager.AddPackageReference(package.Id, package.Version, ignoreDependencies, allowPrereleaseVersions);
}
@@ -129,6 +143,13 @@ namespace MonoDevelop.PackageManagement
ExecuteUninstall(package);
}
}
+
+ public void InstallPackageIntoSolutionRepository (IPackage package)
+ {
+ if (!LocalRepository.Exists (package)) {
+ ExecuteInstall (package);
+ }
+ }
bool IsPackageReferencedByOtherProjects(IPackage package)
{
@@ -164,7 +185,7 @@ namespace MonoDevelop.PackageManagement
void UpdatePackageReference(IPackage package, bool updateDependencies, bool allowPrereleaseVersions)
{
- var monitor = new RemovedPackageReferenceMonitor(ProjectManager);
+ var monitor = new PackageReferenceMonitor (ProjectManager, this);
using (monitor) {
ProjectManager.UpdatePackageReference(package.Id, package.Version, updateDependencies, allowPrereleaseVersions);
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopProjectSystem.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopProjectSystem.cs
index 2679c57a95..3ea935f025 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopProjectSystem.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/MonoDevelopProjectSystem.cs
@@ -142,12 +142,13 @@ namespace MonoDevelop.PackageManagement
protected virtual void LogAddedReferenceToProject(string referenceName, string projectName)
{
- DebugLogFormat("Added reference '{0}' to project '{1}'.", referenceName, projectName);
+ string message = GettextCatalog.GetString ("Added reference '{0}' to project '{1}'.", referenceName, projectName);
+ DebugLog (message);
}
- void DebugLogFormat(string format, params object[] args)
+ void DebugLog (string message)
{
- Logger.Log(MessageLevel.Debug, format, args);
+ Logger.Log (MessageLevel.Debug, message);
}
public bool ReferenceExists(string name)
@@ -226,7 +227,8 @@ namespace MonoDevelop.PackageManagement
protected virtual void LogRemovedReferenceFromProject(string referenceName, string projectName)
{
- DebugLogFormat("Removed reference '{0}' from project '{1}'.", referenceName, projectName);
+ string message = GettextCatalog.GetString ("Removed reference '{0}' from project '{1}'.", referenceName, projectName);
+ DebugLog (message);
}
public bool IsSupportedFile(string path)
@@ -334,7 +336,8 @@ namespace MonoDevelop.PackageManagement
protected virtual void LogAddedFileToProject(string fileName, string projectName)
{
- DebugLogFormat("Added file '{0}' to project '{1}'.", fileName, projectName);
+ string message = GettextCatalog.GetString ("Added file '{0}' to project '{1}'.", fileName, projectName);
+ DebugLog (message);
}
public override void DeleteDirectory(string path, bool recursive)
@@ -360,7 +363,8 @@ namespace MonoDevelop.PackageManagement
protected virtual void LogDeletedDirectory(string folder)
{
- DebugLogFormat("Removed folder '{0}'.", folder);
+ string message = GettextCatalog.GetString ("Removed folder '{0}'.", folder);
+ DebugLog (message);
}
void LogDeletedFileInfo(string path)
@@ -376,12 +380,14 @@ namespace MonoDevelop.PackageManagement
protected virtual void LogDeletedFile(string fileName)
{
- DebugLogFormat("Removed file '{0}'.", fileName);
+ string message = GettextCatalog.GetString ("Removed file '{0}'.", fileName);
+ DebugLog (message);
}
protected virtual void LogDeletedFileFromDirectory(string fileName, string directory)
{
- DebugLogFormat("Removed file '{0}' from folder '{1}'.", fileName, directory);
+ string message = GettextCatalog.GetString ("Removed file '{0}' from folder '{1}'.", fileName, directory);
+ DebugLog (message);
}
public void AddFrameworkReference(string name)
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageActionRunner.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageActionRunner.cs
index 3836dbeff3..d7f9fec845 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageActionRunner.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageActionRunner.cs
@@ -26,8 +26,8 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
using System.Collections.Generic;
+using MonoDevelop.Core;
using NuGet;
namespace MonoDevelop.PackageManagement
@@ -78,7 +78,7 @@ namespace MonoDevelop.PackageManagement
void ReportScriptsWillNotBeRun()
{
- string message = "PowerShell scripts will not be run.";
+ string message = GettextCatalog.GetString ("PowerShell scripts will not be run.");
packageManagementEvents.OnPackageOperationMessageLogged(MessageLevel.Warning, message);
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressMonitor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressMonitor.cs
index 72697de66c..1bda3c5992 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressMonitor.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressMonitor.cs
@@ -51,7 +51,7 @@ namespace MonoDevelop.PackageManagement
public PackageManagementProgressMonitor (OutputProgressMonitor consoleMonitor, ProgressMonitor statusMonitor)
{
- AddSlaveMonitor (statusMonitor);
+ AddFollowerMonitor (statusMonitor);
this.consoleMonitor = consoleMonitor;
consoleMonitorReg = consoleMonitor.CancellationToken.Register (OnCancelRequested);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementSolutionExtensions.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementSolutionExtensions.cs
index 6e15406495..128412cff8 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementSolutionExtensions.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementSolutionExtensions.cs
@@ -24,8 +24,6 @@
// 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 MonoDevelop.PackageManagement
@@ -35,8 +33,7 @@ namespace MonoDevelop.PackageManagement
public static IPackageManagementProject GetProject (this IPackageManagementSolution solution, DotNetProject project)
{
var projectProxy = new DotNetProjectProxy (project);
- var repository = PackageManagementServices.PackageRepositoryCache.CreateAggregateWithPriorityMachineCacheRepository ();
- return solution.GetProject (repository, projectProxy);
+ return solution.GetProject (projectProxy);
}
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RemovedPackageReferenceMonitor.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageReferenceMonitor.cs
index f5c856a876..732940d0df 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RemovedPackageReferenceMonitor.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageReferenceMonitor.cs
@@ -1,5 +1,5 @@
//
-// RemovedPackageReferenceMonitor.cs
+// PackageReferenceMonitor.cs
//
// Author:
// Matt Ward <ward.matt@gmail.com>
@@ -32,25 +32,36 @@ using NuGet;
namespace MonoDevelop.PackageManagement
{
- internal class RemovedPackageReferenceMonitor : IDisposable
+ internal class PackageReferenceMonitor : IDisposable
{
IMonoDevelopProjectManager projectManager;
+ IMonoDevelopPackageManager packageManager;
List<IPackage> packagesRemoved = new List<IPackage>();
- public RemovedPackageReferenceMonitor(IMonoDevelopProjectManager projectManager)
+ public PackageReferenceMonitor (
+ IMonoDevelopProjectManager projectManager,
+ IMonoDevelopPackageManager packageManager)
{
this.projectManager = projectManager;
+ this.packageManager = packageManager;
projectManager.PackageReferenceRemoved += PackageReferenceRemoved;
+ projectManager.PackageReferenceAdded += PackageReferenceAdded;
}
void PackageReferenceRemoved(object sender, PackageOperationEventArgs e)
{
packagesRemoved.Add(e.Package);
}
+
+ void PackageReferenceAdded (object sender, PackageOperationEventArgs e)
+ {
+ packageManager.InstallPackageIntoSolutionRepository (e.Package);
+ }
public void Dispose()
{
projectManager.PackageReferenceRemoved -= PackageReferenceRemoved;
+ projectManager.PackageReferenceAdded -= PackageReferenceAdded;
}
public List<IPackage> PackagesRemoved {
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageViewModelOperationLogger.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageViewModelOperationLogger.cs
index ff8743c0a1..1eb6775043 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageViewModelOperationLogger.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageViewModelOperationLogger.cs
@@ -27,6 +27,7 @@
//
using System;
+using MonoDevelop.Core;
using NuGet;
namespace MonoDevelop.PackageManagement
@@ -46,9 +47,9 @@ namespace MonoDevelop.PackageManagement
void GetMessageFormats()
{
- AddingPackageMessageFormat = "Installing...{0}";
- RemovingPackageMessageFormat = "Uninstalling...{0}";
- ManagingPackageMessageFormat = "Managing...{0}";
+ AddingPackageMessageFormat = GettextCatalog.GetString ("Installing...{0}");
+ RemovingPackageMessageFormat = GettextCatalog.GetString ("Uninstalling...{0}");
+ ManagingPackageMessageFormat = GettextCatalog.GetString ("Managing...{0}");
}
public string AddingPackageMessageFormat { get; set; }
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs
index dac4daf34a..776bea11d1 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs
@@ -223,7 +223,7 @@ namespace MonoDevelop.PackageManagement
void ThrowPackageNotFoundError(string packageId)
{
- string message = String.Format("Unable to find package '{0}'.", packageId);
+ string message = GettextCatalog.GetString ("Unable to find package '{0}'.", packageId);
throw new ApplicationException(message);
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs
index 045561ac7f..c88e8e9659 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs
@@ -24,9 +24,7 @@
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
-using System;
using System.Collections.Generic;
-using MonoDevelop.PackageManagement;
using MonoDevelop.Core;
namespace MonoDevelop.PackageManagement
@@ -36,40 +34,40 @@ namespace MonoDevelop.PackageManagement
public static ProgressMonitorStatusMessage CreateInstallingSinglePackageMessage (string packageId)
{
return new ProgressMonitorStatusMessage (
- GetString ("Adding {0}...", packageId),
- GetString ("{0} successfully added.", packageId),
- GetString ("Could not add {0}.", packageId),
- GetString ("{0} added with warnings.", packageId)
+ GettextCatalog.GetString ("Adding {0}...", packageId),
+ GettextCatalog.GetString ("{0} successfully added.", packageId),
+ GettextCatalog.GetString ("Could not add {0}.", packageId),
+ GettextCatalog.GetString ("{0} added with warnings.", packageId)
);
}
public static ProgressMonitorStatusMessage CreateInstallingProjectTemplatePackagesMessage ()
{
return new ProgressMonitorStatusMessage (
- GetString ("Adding packages..."),
- GetString ("Packages successfully added."),
- GetString ("Could not add packages."),
- GetString ("Packages added with warnings.")
+ GettextCatalog.GetString ("Adding packages..."),
+ GettextCatalog.GetString ("Packages successfully added."),
+ GettextCatalog.GetString ("Could not add packages."),
+ GettextCatalog.GetString ("Packages added with warnings.")
);
}
public static ProgressMonitorStatusMessage CreateInstallingMultiplePackagesMessage (int count)
{
return new ProgressMonitorStatusMessage (
- GetString ("Adding {0} packages...", count),
- GetString ("{0} packages successfully added.", count),
- GetString ("Could not add packages."),
- GetString ("{0} packages added with warnings.", count)
+ GettextCatalog.GetString ("Adding {0} packages...", count),
+ GettextCatalog.GetString ("{0} packages successfully added.", count),
+ GettextCatalog.GetString ("Could not add packages."),
+ GettextCatalog.GetString ("{0} packages added with warnings.", count)
);
}
public static ProgressMonitorStatusMessage CreateUpdatingPackagesInSolutionMessage ()
{
return new ProgressMonitorStatusMessage (
- GetString ("Updating packages in solution..."),
- GetString ("Packages successfully updated."),
- GetString ("Could not update packages."),
- GetString ("Packages updated with warnings.")
+ GettextCatalog.GetString ("Updating packages in solution..."),
+ GettextCatalog.GetString ("Packages successfully updated."),
+ GettextCatalog.GetString ("Could not update packages."),
+ GettextCatalog.GetString ("Packages updated with warnings.")
);
}
@@ -78,18 +76,18 @@ namespace MonoDevelop.PackageManagement
ProgressMonitorStatusMessage message = CreateUpdatingPackagesInSolutionMessage ();
return new UpdatePackagesProgressMonitorStatusMessage (
projects,
- GetString ("Packages are up to date."),
- GetString ("No updates found but warnings were reported."),
+ GettextCatalog.GetString ("Packages are up to date."),
+ GettextCatalog.GetString ("No updates found but warnings were reported."),
message);
}
public static ProgressMonitorStatusMessage CreateUpdatingPackagesInProjectMessage (int count)
{
return new ProgressMonitorStatusMessage (
- GetString ("Updating {0} packages in project...", count),
- GetString ("{0} packages successfully updated.", count),
- GetString ("Could not update packages."),
- GetString ("{0} packages updated with warnings.", count)
+ GettextCatalog.GetString ("Updating {0} packages in project...", count),
+ GettextCatalog.GetString ("{0} packages successfully updated.", count),
+ GettextCatalog.GetString ("Could not update packages."),
+ GettextCatalog.GetString ("{0} packages updated with warnings.", count)
);
}
@@ -98,28 +96,28 @@ namespace MonoDevelop.PackageManagement
ProgressMonitorStatusMessage message = CreateUpdatingPackagesInProjectMessage (count);
return new UpdatePackagesProgressMonitorStatusMessage (
project,
- GetString ("Packages are up to date."),
- GetString ("No updates found but warnings were reported."),
+ GettextCatalog.GetString ("Packages are up to date."),
+ GettextCatalog.GetString ("No updates found but warnings were reported."),
message);
}
public static ProgressMonitorStatusMessage CreateUpdatingPackagesInProjectMessage ()
{
return new ProgressMonitorStatusMessage (
- GetString ("Updating packages in project..."),
- GetString ("Packages successfully updated."),
- GetString ("Could not update packages."),
- GetString ("Packages updated with warnings.")
+ GettextCatalog.GetString ("Updating packages in project..."),
+ GettextCatalog.GetString ("Packages successfully updated."),
+ GettextCatalog.GetString ("Could not update packages."),
+ GettextCatalog.GetString ("Packages updated with warnings.")
);
}
public static ProgressMonitorStatusMessage CreateUpdatingSinglePackageMessage (string packageId)
{
return new ProgressMonitorStatusMessage (
- GetString ("Updating {0}...", packageId),
- GetString ("{0} successfully updated.", packageId),
- GetString ("Could not update {0}.", packageId),
- GetString ("{0} updated with warnings.", packageId)
+ GettextCatalog.GetString ("Updating {0}...", packageId),
+ GettextCatalog.GetString ("{0} successfully updated.", packageId),
+ GettextCatalog.GetString ("Could not update {0}.", packageId),
+ GettextCatalog.GetString ("{0} updated with warnings.", packageId)
);
}
@@ -128,100 +126,90 @@ namespace MonoDevelop.PackageManagement
ProgressMonitorStatusMessage message = CreateUpdatingSinglePackageMessage (packageId);
return new UpdatePackagesProgressMonitorStatusMessage (
project,
- GetString ("{0} is up to date.", packageId),
- GetString ("No update found but warnings were reported."),
+ GettextCatalog.GetString ("{0} is up to date.", packageId),
+ GettextCatalog.GetString ("No update found but warnings were reported."),
message);
}
public static ProgressMonitorStatusMessage CreateRemoveSinglePackageMessage (string packageId)
{
return new ProgressMonitorStatusMessage (
- GetString ("Removing {0}...", packageId),
- GetString ("{0} successfully removed.", packageId),
- GetString ("Could not remove {0}.", packageId),
- GetString ("{0} removed with warnings.", packageId)
+ GettextCatalog.GetString ("Removing {0}...", packageId),
+ GettextCatalog.GetString ("{0} successfully removed.", packageId),
+ GettextCatalog.GetString ("Could not remove {0}.", packageId),
+ GettextCatalog.GetString ("{0} removed with warnings.", packageId)
);
}
public static ProgressMonitorStatusMessage CreateRestoringPackagesInSolutionMessage ()
{
return new ProgressMonitorStatusMessage (
- GetString ("Restoring packages for solution..."),
- GetString ("Packages successfully restored."),
- GetString ("Could not restore packages."),
- GetString ("Packages restored with warnings.")
+ GettextCatalog.GetString ("Restoring packages for solution..."),
+ GettextCatalog.GetString ("Packages successfully restored."),
+ GettextCatalog.GetString ("Could not restore packages."),
+ GettextCatalog.GetString ("Packages restored with warnings.")
);
}
public static ProgressMonitorStatusMessage CreateRestoringPackagesBeforeUpdateMessage ()
{
return new ProgressMonitorStatusMessage (
- GetString ("Restoring packages before update..."),
- GetString ("Packages successfully restored."),
- GetString ("Could not restore packages."),
- GetString ("Packages restored with warnings.")
+ GettextCatalog.GetString ("Restoring packages before update..."),
+ GettextCatalog.GetString ("Packages successfully restored."),
+ GettextCatalog.GetString ("Could not restore packages."),
+ GettextCatalog.GetString ("Packages restored with warnings.")
);
}
public static ProgressMonitorStatusMessage CreateRestoringPackagesInProjectMessage ()
{
return new ProgressMonitorStatusMessage (
- GetString ("Restoring packages for project..."),
- GetString ("Packages successfully restored."),
- GetString ("Could not restore packages."),
- GetString ("Packages restored with warnings.")
+ GettextCatalog.GetString ("Restoring packages for project..."),
+ GettextCatalog.GetString ("Packages successfully restored."),
+ GettextCatalog.GetString ("Could not restore packages."),
+ GettextCatalog.GetString ("Packages restored with warnings.")
);
}
public static ProgressMonitorStatusMessage CreateCheckingPackageCompatibilityMessage ()
{
return new ProgressMonitorStatusMessage (
- GetString ("Checking package compatibility with new target framework..."),
- GetString ("Packages are compatible."),
- GetString ("Could not check package compatibility."),
- GetString ("Package retargeting required.")
+ GettextCatalog.GetString ("Checking package compatibility with new target framework..."),
+ GettextCatalog.GetString ("Packages are compatible."),
+ GettextCatalog.GetString ("Could not check package compatibility."),
+ GettextCatalog.GetString ("Package retargeting required.")
);
}
public static ProgressMonitorStatusMessage CreateRetargetingSinglePackageMessage (string packageId)
{
return new ProgressMonitorStatusMessage (
- GetString ("Retargeting {0}...", packageId),
- GetString ("{0} successfully retargeted.", packageId),
- GetString ("Could not retarget {0}.", packageId),
- GetString ("{0} retargeted with warnings.", packageId)
+ GettextCatalog.GetString ("Retargeting {0}...", packageId),
+ GettextCatalog.GetString ("{0} successfully retargeted.", packageId),
+ GettextCatalog.GetString ("Could not retarget {0}.", packageId),
+ GettextCatalog.GetString ("{0} retargeted with warnings.", packageId)
);
}
public static ProgressMonitorStatusMessage CreateRetargetingPackagesInProjectMessage (int count)
{
return new ProgressMonitorStatusMessage (
- GetString ("Retargeting {0} packages...", count),
- GetString ("{0} packages successfully retargeted.", count),
- GetString ("Could not retarget packages."),
- GetString ("{0} packages retargeted with warnings.", count)
+ GettextCatalog.GetString ("Retargeting {0} packages...", count),
+ GettextCatalog.GetString ("{0} packages successfully retargeted.", count),
+ GettextCatalog.GetString ("Could not retarget packages."),
+ GettextCatalog.GetString ("{0} packages retargeted with warnings.", count)
);
}
public static ProgressMonitorStatusMessage CreateRetargetingPackagesInProjectMessage ()
{
return new ProgressMonitorStatusMessage (
- GetString ("Retargeting packages..."),
- GetString ("Packages successfully retargeted."),
- GetString ("Could not retarget packages."),
- GetString ("Packages retarget with warnings.")
+ GettextCatalog.GetString ("Retargeting packages..."),
+ GettextCatalog.GetString ("Packages successfully retargeted."),
+ GettextCatalog.GetString ("Could not retarget packages."),
+ GettextCatalog.GetString ("Packages retarget with warnings.")
);
}
-
- static string GetString (string phrase)
- {
- return GettextCatalog.GetString (phrase);
- }
-
- static string GetString (string phrase, object arg0)
- {
- return GettextCatalog.GetString (phrase, arg0);
- }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs
index ac112b3cf3..d8f5c23b98 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSourceSettings.cs
@@ -137,12 +137,10 @@ namespace MonoDevelop.PackageManagement
static string GetReadPackageSourcesErrorMessage (Exception ex)
{
if (ex is CryptographicException) {
- return GettextCatalog.GetString ("Unable to decrypt passwords stored in the NuGet.Config file. " +
- "{0} will now fallback to using the Official NuGet Gallery and the NuGet.Config file will be treated as read-only.");
+ return GettextCatalog.GetString ("Unable to decrypt passwords stored in the NuGet.Config file. {0} will now fallback to using the Official NuGet Gallery and the NuGet.Config file will be treated as read-only.");
}
- return GettextCatalog.GetString ("An error occurred when trying to read the NuGet.Config file. " +
- "{0} will now fallback to using the Official NuGet Gallery and the NuGet.Config file will be treated as read-only.\n\n{1}");
+ return GettextCatalog.GetString ("An error occurred when trying to read the NuGet.Config file. {0} will now fallback to using the Official NuGet Gallery and the NuGet.Config file will be treated as read-only.\n\n{1}");
}
void PackageSourcesChanged(object sender, NotifyCollectionChangedEventArgs e)
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSources.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSources.cs
index c73487c121..7c7f7ce739 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSources.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RegisteredPackageSources.cs
@@ -26,10 +26,10 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
+using MonoDevelop.Core;
using NuGet;
namespace MonoDevelop.PackageManagement
@@ -37,7 +37,7 @@ namespace MonoDevelop.PackageManagement
internal class RegisteredPackageSources : ObservableCollection<PackageSource>
{
public static readonly string DefaultPackageSourceUrl = "https://www.nuget.org/api/v2/";
- public static readonly string DefaultPackageSourceName = "Official NuGet Gallery";
+ public static readonly string DefaultPackageSourceName = GettextCatalog.GetString ("Official NuGet Gallery");
public static readonly PackageSource DefaultPackageSource =
new PackageSource(DefaultPackageSourceUrl, DefaultPackageSourceName);
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ReinstallPackageAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ReinstallPackageAction.cs
index 62e5792661..de0211a8fd 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ReinstallPackageAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ReinstallPackageAction.cs
@@ -57,7 +57,7 @@ namespace MonoDevelop.PackageManagement
}
protected override string StartingMessageFormat {
- get { return "Retargeting {0}..." + Environment.NewLine; }
+ get { return GettextCatalog.GetString ("Retargeting {0}...") + Environment.NewLine; }
}
protected override void ExecuteCore ()
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs
index a10aad464a..eb0c959263 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs
@@ -107,11 +107,9 @@ namespace MonoDevelop.PackageManagement
void LogResult (int totalPackageReferences, int packagesRestored)
{
if (packagesRestored == 0) {
- Log ("All packages are already restored.");
- } else if (packagesRestored == 1) {
- Log (GettextCatalog.GetString ("1 package restored successfully."));
+ Log (GettextCatalog.GetString ("All packages are already restored."));
} else if (packagesRestored > 0) {
- Log (GettextCatalog.GetString ("{0} packages restored successfully.", packagesRestored));
+ Log (GettextCatalog.GetPluralString ("1 package restored successfully.", "{0} packages restored successfully.", packagesRestored, packagesRestored));
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UninstallPackageAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UninstallPackageAction.cs
index 4015de0434..92eed7f570 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UninstallPackageAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UninstallPackageAction.cs
@@ -26,9 +26,7 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
-using System.IO;
-using NuGet;
+using MonoDevelop.Core;
namespace MonoDevelop.PackageManagement
{
@@ -64,7 +62,7 @@ namespace MonoDevelop.PackageManagement
}
protected override string StartingMessageFormat {
- get { return "Removing {0}..."; }
+ get { return GettextCatalog.GetString ("Removing {0}..."); }
}
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatePackageAction.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatePackageAction.cs
index 8c6129780f..d6d20036b6 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatePackageAction.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatePackageAction.cs
@@ -28,6 +28,7 @@
using System;
using System.Collections.Generic;
+using MonoDevelop.Core;
using NuGet;
namespace MonoDevelop.PackageManagement
@@ -116,12 +117,12 @@ namespace MonoDevelop.PackageManagement
void LogNoUpdatesAvailableForPackage (string packageId)
{
- string message = String.Format ("No updates available for '{0}' in project '{1}'.", packageId, Project.Name);
+ string message = GettextCatalog.GetString ("No updates available for '{0}' in project '{1}'.", packageId, Project.Name);
Logger.Log (MessageLevel.Info, message);
}
protected override string StartingMessageFormat {
- get { return "Updating {0}..."; }
+ get { return GettextCatalog.GetString ("Updating {0}..."); }
}
protected override bool ShouldLogEmptyLineForFinishedAction ()
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInSolution.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInSolution.cs
index 6ff41bc7dc..36c274a81f 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInSolution.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInSolution.cs
@@ -223,11 +223,7 @@ namespace MonoDevelop.PackageManagement
void LogPackagesFound (int count)
{
- if (count == 1) {
- Log (GettextCatalog.GetString ("{0} update found.", count));
- } else {
- Log (GettextCatalog.GetString ("{0} updates found.", count));
- }
+ Log (GettextCatalog.GetPluralString ("{0} update found.", "{0} updates found.", count, count));
}
void Log (string message)
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs
index 4b13b80f07..0b4a28c8b2 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs
@@ -660,7 +660,7 @@ namespace MonoDevelop.CodeActions
if (RefactoringService.OptionSetCreation != null)
documentContext.RoslynWorkspace.Options = RefactoringService.OptionSetCreation (editor, documentContext);
using (var undo = editor.OpenUndoGroup ()) {
- foreach (var operation in act.GetOperationsAsync (token).Result) {
+ foreach (var operation in await act.GetOperationsAsync (token)) {
var applyChanges = operation as ApplyChangesOperation;
if (applyChanges == null) {
operation.Apply (documentContext.RoslynWorkspace, token);
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeRefactoringService.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeRefactoringService.cs
index 1c546dfc66..27a04a9c9c 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeRefactoringService.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeRefactoringService.cs
@@ -39,6 +39,7 @@ using Mono.Addins;
using RefactoringEssentials;
using MonoDevelop.Core.Text;
using System.Linq;
+using System.ComponentModel;
namespace MonoDevelop.CodeActions
{
@@ -101,7 +102,7 @@ namespace MonoDevelop.CodeActions
var actions = new List<ValidCodeAction> ();
if (parsedDocument == null)
return actions;
- var model = parsedDocument.GetAst<SemanticModel> ();
+ var model = await doc.AnalysisDocument.GetSemanticModelAsync (cancellationToken);
if (model == null)
return actions;
var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait (false);
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeDiagnosticRunner.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeDiagnosticRunner.cs
index 350c7aba18..b1c7127179 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeDiagnosticRunner.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeDiagnosticRunner.cs
@@ -54,7 +54,7 @@ namespace MonoDevelop.CodeIssues
if (!AnalysisOptions.EnableFancyFeatures || input.Project == null || !input.IsCompileableInProject || input.AnalysisDocument == null)
return Enumerable.Empty<Result> ();
try {
- var model = input.ParsedDocument.GetAst<SemanticModel> ();
+ var model = await analysisDocument.DocumentContext.AnalysisDocument.GetSemanticModelAsync (cancellationToken);
if (model == null)
return Enumerable.Empty<Result> ();
var compilation = model.Compilation;
@@ -90,7 +90,17 @@ namespace MonoDevelop.CodeIssues
var analyzers = System.Collections.Immutable.ImmutableArray<DiagnosticAnalyzer>.Empty.AddRange (providers);
var diagnosticList = new List<Diagnostic> ();
try {
- compilationWithAnalyzer = compilation.WithAnalyzers (analyzers, null, cancellationToken);
+ var options = new CompilationWithAnalyzersOptions (
+ null,
+ delegate (Exception exception, DiagnosticAnalyzer analyzer, Diagnostic diag) {
+ LoggingService.LogError ("Exception in diagnostic analyzer " + diag.Id + ":" + diag.GetMessage (), exception);
+ },
+ null,
+ false,
+ false
+ );
+
+ compilationWithAnalyzer = compilation.WithAnalyzers (analyzers, options);
if (input.ParsedDocument == null || cancellationToken.IsCancellationRequested)
return Enumerable.Empty<Result> ();
@@ -124,5 +134,7 @@ namespace MonoDevelop.CodeIssues
return Enumerable.Empty<Result> ();
}
}
+
+
}
} \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeIssuePanelWidget.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeIssuePanelWidget.cs
index 7533c2d604..68b7e598ad 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeIssuePanelWidget.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeIssuePanelWidget.cs
@@ -253,15 +253,7 @@ namespace MonoDevelop.CodeIssues
treeviewInspections.AppendColumn (titleCol);
titleCol.PackStart (toggleRenderer, false);
titleCol.Sizing = TreeViewColumnSizing.Autosize;
- titleCol.SetCellDataFunc (toggleRenderer, delegate (TreeViewColumn treeColumn, CellRenderer cell, TreeModel model, TreeIter iter) {
- var provider = (Tuple<CodeDiagnosticDescriptor, DiagnosticDescriptor>)treeStore.GetValue (iter, 1);
- if (provider == null) {
- toggleRenderer.Visible = false;
- return;
- }
- toggleRenderer.Visible = true;
- toggleRenderer.Active = enableState[provider];
- });
+ titleCol.SetCellDataFunc (toggleRenderer, TitleColDataFunc);
var cellRendererText = new CellRendererText {
@@ -317,27 +309,45 @@ namespace MonoDevelop.CodeIssues
} while (comboBoxStore.IterNext (ref storeIter));
};
- col.SetCellDataFunc (comboRenderer, delegate (TreeViewColumn treeColumn, CellRenderer cell, TreeModel model, TreeIter iter) {
- var provider = (Tuple<CodeDiagnosticDescriptor, DiagnosticDescriptor>)treeStore.GetValue (iter, 1);
- if (provider == null) {
- comboRenderer.Visible = false;
- return;
- }
- var severity = severities[provider];
- if (!severity.HasValue) {
- comboRenderer.Visible = false;
- return;
- }
- comboRenderer.Visible = true;
- comboRenderer.Text = GetDescription (severity.Value);
- comboRenderer.Icon = GetIcon (severity.Value);
- });
+ col.SetCellDataFunc (comboRenderer, ComboDataFunc);
treeviewInspections.HeadersVisible = false;
treeviewInspections.Model = treeStore;
GetAllSeverities ();
FillInspectors (null);
}
+ // TODO: Make static.
+ void TitleColDataFunc (TreeViewColumn treeColumn, CellRenderer cell, TreeModel model, TreeIter iter)
+ {
+ var provider = (Tuple<CodeDiagnosticDescriptor, DiagnosticDescriptor>)model.GetValue (iter, 1);
+ if (provider == null) {
+ cell.Visible = false;
+ return;
+ }
+ cell.Visible = true;
+ ((CellRendererToggle)cell).Active = enableState [provider];
+ }
+
+ // TODO: Make static.
+ void ComboDataFunc (TreeViewColumn treeColumn, CellRenderer cell, TreeModel model, TreeIter iter)
+ {
+ var provider = (Tuple<CodeDiagnosticDescriptor, DiagnosticDescriptor>)treeStore.GetValue (iter, 1);
+ if (provider == null) {
+ cell.Visible = false;
+ return;
+ }
+ var severity = severities [provider];
+ if (!severity.HasValue) {
+ cell.Visible = false;
+ return;
+ }
+ cell.Visible = true;
+
+ var combo = (CustomCellRenderer)cell;
+ combo.Text = GetDescription (severity.Value);
+ combo.Icon = GetIcon (severity.Value);
+ }
+
void ApplyFilter (object sender, EventArgs e)
{
FillInspectors (searchentryFilter.Entry.Text.Trim ());
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/Pad/CodeAnalysisBatchRunner.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/Pad/CodeAnalysisBatchRunner.cs
index a2e9b91a5e..8306a6ab3c 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/Pad/CodeAnalysisBatchRunner.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/Pad/CodeAnalysisBatchRunner.cs
@@ -87,7 +87,6 @@ namespace MonoDevelop.CodeIssues
}
} catch (Exception e) {
LoggingService.LogError ("Unhandled exception", e);
- MessageService.ShowException (e);
}
}
}
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs
index 44eb9d4af7..bc1fce2131 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameRefactoring.cs
@@ -43,6 +43,8 @@ using MonoDevelop.Ide.Editor;
using Microsoft.CodeAnalysis.Rename;
using System.Threading.Tasks;
using System.Threading;
+using System.Collections.Immutable;
+using Microsoft.CodeAnalysis.CSharp;
namespace MonoDevelop.Refactoring.Rename
{
@@ -106,24 +108,41 @@ namespace MonoDevelop.Refactoring.Rename
}
var doc = IdeApp.Workbench.ActiveDocument;
var editor = doc.Editor;
+ var oldVersion = editor.Version;
var links = new List<TextLink> ();
var link = new TextLink ("name");
- var cd = changes [0];
- var oldDoc = projectChange.OldProject.GetDocument (cd);
- var newDoc = projectChange.NewProject.GetDocument (cd);
- var oldVersion = editor.Version;
- foreach (var textChange in await oldDoc.GetTextChangesAsync (newDoc)) {
- var segment = new TextSegment (textChange.Span.Start, textChange.Span.Length);
- if (segment.Offset <= editor.CaretOffset && editor.CaretOffset <= segment.EndOffset) {
- link.Links.Insert (0, segment);
- } else {
- link.AddLink (segment);
+ var documents = ImmutableHashSet.Create (doc.AnalysisDocument);
+
+ foreach (var loc in symbol.Locations) {
+ if (loc.IsInSource && FilePath.PathComparer.Equals (loc.SourceTree.FilePath, doc.FileName)) {
+ link.AddLink (new TextSegment (loc.SourceSpan.Start, loc.SourceSpan.Length));
}
}
+ foreach (var mref in await SymbolFinder.FindReferencesAsync (symbol, TypeSystemService.Workspace.CurrentSolution, documents, default(CancellationToken))) {
+ foreach (var loc in mref.Locations) {
+ TextSpan span = loc.Location.SourceSpan;
+ var root = loc.Location.SourceTree.GetRoot ();
+ var node = root.FindNode (loc.Location.SourceSpan);
+ var trivia = root.FindTrivia (loc.Location.SourceSpan.Start);
+ if (!trivia.IsKind (SyntaxKind.SingleLineDocumentationCommentTrivia)) {
+ span = node.Span;
+ }
+ if (span.Start != loc.Location.SourceSpan.Start) {
+ span = loc.Location.SourceSpan;
+ }
+ var segment = new TextSegment (span.Start, span.Length);
+ if (segment.Offset <= editor.CaretOffset && editor.CaretOffset <= segment.EndOffset) {
+ link.Links.Insert (0, segment);
+ } else {
+ link.AddLink (segment);
+ }
+ }
+ }
links.Add (link);
+
editor.StartTextLinkMode (new TextLinkModeOptions (links, (arg) => {
//If user cancel renaming revert changes
if (!arg.Success) {
@@ -160,18 +179,20 @@ namespace MonoDevelop.Refactoring.Rename
var newSolution = await Renamer.RenameSymbolAsync (ws.CurrentSolution, symbol, properties.NewName, ws.Options);
var changes = new List<Change> ();
-
+ var documents = new List<DocumentId> ();
foreach (var projectChange in newSolution.GetChanges (ws.CurrentSolution).GetProjectChanges ()) {
- foreach (var changedDoc in projectChange.GetChangedDocuments ()) {
- var newDoc = newSolution.GetDocument (changedDoc);
- foreach (var textChange in await newDoc.GetTextChangesAsync (ws.CurrentSolution.GetDocument (changedDoc))) {
- changes.Add (new TextReplaceChange () {
- FileName = newDoc.FilePath,
- Offset = textChange.Span.Start,
- RemovedChars = textChange.Span.Length,
- InsertedText = textChange.NewText
- });
- }
+ documents.AddRange (projectChange.GetChangedDocuments ());
+ }
+ FilterDuplicateLinkedDocs (newSolution, documents);
+ foreach (var changedDoc in documents) {
+ var newDoc = newSolution.GetDocument (changedDoc);
+ foreach (var textChange in await newDoc.GetTextChangesAsync (ws.CurrentSolution.GetDocument (changedDoc))) {
+ changes.Add (new TextReplaceChange () {
+ FileName = newDoc.FilePath,
+ Offset = textChange.Span.Start,
+ RemovedChars = textChange.Span.Length,
+ InsertedText = textChange.NewText
+ });
}
}
@@ -211,7 +232,25 @@ namespace MonoDevelop.Refactoring.Rename
}
return changes;
}
-
+
+ static void FilterDuplicateLinkedDocs (Solution newSolution, List<DocumentId> documents)
+ {
+ foreach (var doc in documents) {
+ var newDoc = newSolution.GetDocument (doc);
+ bool didRemove = false;
+ foreach (var link in newDoc.GetLinkedDocumentIds ()) {
+ if (documents.Contains (link)) {
+ documents.Remove (link);
+ didRemove = true;
+ }
+ }
+ if (didRemove) {
+ FilterDuplicateLinkedDocs (newSolution, documents);
+ return;
+ }
+ }
+ }
+
static string GetFullFileName (string fileName, string oldFullFileName, int tryCount)
{
var name = new StringBuilder (fileName);
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/InsertionPointService.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/InsertionPointService.cs
index 5f60bf1ec2..aa1d755ce6 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/InsertionPointService.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/InsertionPointService.cs
@@ -105,7 +105,7 @@ namespace MonoDevelop.Refactoring
if (result.Count > 1) {
result.RemoveAt (result.Count - 1);
NewLineInsertion insertLine;
- var typeSyntaxReference = type.DeclaringSyntaxReferences.FirstOrDefault (r => r.Span.Contains (sourceSpan));
+ var typeSyntaxReference = type.DeclaringSyntaxReferences.FirstOrDefault (r => r.SyntaxTree.FilePath == data.FileName && r.Span.Contains (sourceSpan));
var lineBefore = data.GetLineByOffset (typeSyntaxReference.Span.End).PreviousLine;
if (lineBefore != null && lineBefore.Length == lineBefore.GetIndentation (data).Length) {
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringOptions.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringOptions.cs
index 2684ff57f9..ae8a9e92bb 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringOptions.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringOptions.cs
@@ -140,7 +140,9 @@ namespace MonoDevelop.Refactoring
if (parsedDocument == null)
return ImmutableArray<string>.Empty;
var result = ImmutableArray<string>.Empty.ToBuilder ();
- var sm = parsedDocument.GetAst<SemanticModel> ();
+ var sm = await doc.AnalysisDocument.GetSemanticModelAsync (cancellationToken);
+ if (sm == null)
+ return ImmutableArray<string>.Empty;
var node = (await sm.SyntaxTree.GetRootAsync (cancellationToken).ConfigureAwait (false)).FindNode (TextSpan.FromBounds (offset, offset));
while (node != null) {
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs
index 983f776af4..e97a2dbd1b 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs
@@ -45,13 +45,14 @@ using Microsoft.CodeAnalysis.Options;
using MonoDevelop.Ide;
using MonoDevelop.Projects;
using Microsoft.CodeAnalysis;
+using System.Collections.Immutable;
namespace MonoDevelop.Refactoring
{
public static class RefactoringService
{
internal static Func<TextEditor, DocumentContext, OptionSet> OptionSetCreation;
- static List<FindReferencesProvider> findReferencesProvider = new List<FindReferencesProvider> ();
+ static ImmutableList<FindReferencesProvider> findReferencesProvider = ImmutableList<FindReferencesProvider>.Empty;
static List<JumpToDeclarationHandler> jumpToDeclarationHandler = new List<JumpToDeclarationHandler> ();
static RefactoringService ()
@@ -60,10 +61,10 @@ namespace MonoDevelop.Refactoring
var provider = (FindReferencesProvider) args.ExtensionObject;
switch (args.Change) {
case ExtensionChange.Add:
- findReferencesProvider.Add (provider);
+ findReferencesProvider = findReferencesProvider.Add (provider);
break;
case ExtensionChange.Remove:
- findReferencesProvider.Remove (provider);
+ findReferencesProvider = findReferencesProvider.Remove (provider);
break;
}
});
@@ -191,33 +192,33 @@ namespace MonoDevelop.Refactoring
}
}
-// public static void QueueQuickFixAnalysis (Document doc, TextLocation loc, CancellationToken token, Action<List<CodeAction>> callback)
-// {
-// var ext = doc.GetContent<MonoDevelop.AnalysisCore.Gui.ResultsEditorExtension> ();
-// var issues = ext != null ? ext.GetResultsAtOffset (doc.Editor.LocationToOffset (loc), token).OrderBy (r => r.Level).ToList () : new List<Result> ();
-//
-// ThreadPool.QueueUserWorkItem (delegate {
-// try {
-// var result = new List<CodeAction> ();
-// foreach (var r in issues) {
-// if (token.IsCancellationRequested)
-// return;
-// var fresult = r as FixableResult;
-// if (fresult == null)
-// continue;
-//// foreach (var action in FixOperationsHandler.GetActions (doc, fresult)) {
-//// result.Add (new AnalysisContextActionProvider.AnalysisCodeAction (action, r) {
-//// DocumentRegion = action.DocumentRegion
-//// });
-//// }
-// }
-// result.AddRange (GetValidActions (doc, loc).Result);
-// callback (result);
-// } catch (Exception ex) {
-// LoggingService.LogError ("Error in analysis service", ex);
-// }
-// });
-// }
+ // public static void QueueQuickFixAnalysis (Document doc, TextLocation loc, CancellationToken token, Action<List<CodeAction>> callback)
+ // {
+ // var ext = doc.GetContent<MonoDevelop.AnalysisCore.Gui.ResultsEditorExtension> ();
+ // var issues = ext != null ? ext.GetResultsAtOffset (doc.Editor.LocationToOffset (loc), token).OrderBy (r => r.Level).ToList () : new List<Result> ();
+ //
+ // ThreadPool.QueueUserWorkItem (delegate {
+ // try {
+ // var result = new List<CodeAction> ();
+ // foreach (var r in issues) {
+ // if (token.IsCancellationRequested)
+ // return;
+ // var fresult = r as FixableResult;
+ // if (fresult == null)
+ // continue;
+ //// foreach (var action in FixOperationsHandler.GetActions (doc, fresult)) {
+ //// result.Add (new AnalysisContextActionProvider.AnalysisCodeAction (action, r) {
+ //// DocumentRegion = action.DocumentRegion
+ //// });
+ //// }
+ // }
+ // result.AddRange (GetValidActions (doc, loc).Result);
+ // callback (result);
+ // } catch (Exception ex) {
+ // LoggingService.LogError ("Error in analysis service", ex);
+ // }
+ // });
+ // }
public static MonoDevelop.Ide.Editor.DocumentLocation GetCorrectResolveLocation (IReadonlyTextDocument editor, MonoDevelop.Ide.Editor.DocumentLocation location)
{
@@ -244,15 +245,19 @@ namespace MonoDevelop.Refactoring
var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true);
try {
foreach (var provider in findReferencesProvider) {
- foreach (var result in await provider.FindReferences (documentIdString, hintProject, monitor.CancellationToken)) {
- monitor.ReportResult (result);
+ try {
+ foreach (var result in await provider.FindReferences (documentIdString, hintProject, monitor.CancellationToken)) {
+ monitor.ReportResult (result);
+ }
+ } catch (OperationCanceledException) {
+ return;
+ } catch (Exception ex) {
+ if (monitor != null)
+ monitor.ReportError ("Error finding references", ex);
+ LoggingService.LogError ("Error finding references", ex);
+ findReferencesProvider = findReferencesProvider.Remove (provider);
}
}
- } catch (Exception ex) {
- if (monitor != null)
- monitor.ReportError ("Error finding references", ex);
- else
- LoggingService.LogError ("Error finding references", ex);
} finally {
if (monitor != null)
monitor.Dispose ();
@@ -266,17 +271,19 @@ namespace MonoDevelop.Refactoring
var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true);
try {
foreach (var provider in findReferencesProvider) {
- foreach (var result in await provider.FindAllReferences (documentIdString, hintProject, monitor.CancellationToken)) {
- monitor.ReportResult (result);
+ try {
+ foreach (var result in await provider.FindAllReferences (documentIdString, hintProject, monitor.CancellationToken)) {
+ monitor.ReportResult (result);
+ }
+ } catch (OperationCanceledException) {
+ return;
+ } catch (Exception ex) {
+ if (monitor != null)
+ monitor.ReportError ("Error finding references", ex);
+ LoggingService.LogError ("Error finding references", ex);
+ findReferencesProvider = findReferencesProvider.Remove (provider);
}
}
- } catch (OperationCanceledException) {
-
- } catch (Exception ex) {
- if (monitor != null)
- monitor.ReportError ("Error finding references", ex);
- else
- LoggingService.LogError ("Error finding references", ex);
} finally {
if (monitor != null)
monitor.Dispose ();
@@ -285,17 +292,19 @@ namespace MonoDevelop.Refactoring
public static async Task<bool> TryJumpToDeclarationAsync (string documentIdString, Projects.Project hintProject = null, CancellationToken token = default(CancellationToken))
{
- try {
if (hintProject == null)
hintProject = IdeApp.Workbench.ActiveDocument?.Project;
- foreach (var handler in jumpToDeclarationHandler) {
+ for (int i = 0; i < jumpToDeclarationHandler.Count; i++) {
+ var handler = jumpToDeclarationHandler [i];
+ try {
if (await handler.TryJumpToDeclarationAsync (documentIdString, hintProject, token))
return true;
+ } catch (OperationCanceledException) {
+ } catch (Exception ex) {
+ LoggingService.LogError ("Error jumping to declaration", ex);
}
- } catch (OperationCanceledException) {
- } catch (Exception ex) {
- LoggingService.LogError ("Error finding references", ex);
}
+
return false;
}
}
diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringSymbolInfo.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringSymbolInfo.cs
index 918e9e7713..2fef3d01d7 100644
--- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringSymbolInfo.cs
+++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringSymbolInfo.cs
@@ -105,6 +105,8 @@ namespace MonoDevelop.Refactoring
static async Task<RefactoringSymbolInfo> InternalGetSymbolInfoAsync (Microsoft.CodeAnalysis.Document document, int offset, CancellationToken cancellationToken = default (CancellationToken))
{
+ if (document == null)
+ return RefactoringSymbolInfo.Empty;
var unit = await document.GetSemanticModelAsync (cancellationToken).ConfigureAwait (false);
if (unit != null) {
var root = await unit.SyntaxTree.GetRootAsync (cancellationToken).ConfigureAwait (false);
diff --git a/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit/ElementHelpWidget.cs b/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit/ElementHelpWidget.cs
index fc0e540066..e1a8cfbdc9 100644
--- a/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit/ElementHelpWidget.cs
+++ b/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit/ElementHelpWidget.cs
@@ -91,7 +91,7 @@ namespace MonoDevelop.RegexToolkit
Show ();
}
- void ElementDescriptionFunc (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
+ static void ElementDescriptionFunc (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
{
string str = (string)model.GetValue (iter, 2);
if (string.IsNullOrEmpty (str)) {
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 26aa51f03f..ad137b3715 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/HighlightingPanel.cs
@@ -41,7 +41,7 @@ namespace MonoDevelop.SourceEditor.OptionPanels
{
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 ());
+ static Lazy<Gdk.Pixbuf> errorPixbuf = new Lazy<Gdk.Pixbuf> (() => ImageService.GetIcon (Stock.DialogError, IconSize.Menu).ToPixbuf ());
public HighlightingPanel ()
{
@@ -49,21 +49,26 @@ namespace MonoDevelop.SourceEditor.OptionPanels
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;
- });
+ col.SetCellDataFunc (crpixbuf, ImageDataFunc);
var crtext = new CellRendererText ();
col.PackEnd (crtext, true);
col.SetAttributes (crtext, "markup", 0);
styleTreeview.AppendColumn (col);
styleTreeview.Model = styleStore;
schemeName = DefaultSourceEditorOptions.Instance.ColorScheme;
- MonoDevelop.Ide.Gui.Styles.Changed += HandleSkinChanged;
+ MonoDevelop.Ide.Gui.Styles.Changed += HandleThemeChanged;
}
- void HandleSkinChanged (object sender, EventArgs e)
+ static void ImageDataFunc (TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter)
+ {
+
+ var isError = (bool)tree_model.GetValue (iter, 2);
+ var crpixbuf = (CellRendererPixbuf)cell;
+ crpixbuf.Visible = isError;
+ crpixbuf.Pixbuf = isError ? errorPixbuf.Value : null;
+ }
+
+ void HandleThemeChanged (object sender, EventArgs e)
{
ShowStyles ();
}
@@ -77,7 +82,7 @@ namespace MonoDevelop.SourceEditor.OptionPanels
styleStore = null;
}
- MonoDevelop.Ide.Gui.Styles.Changed -= HandleSkinChanged;
+ MonoDevelop.Ide.Gui.Styles.Changed -= HandleThemeChanged;
base.OnDestroyed ();
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs
index 3307f2c390..823fc3add0 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/MarkerPanel.cs
@@ -38,8 +38,6 @@ namespace MonoDevelop.SourceEditor.OptionPanels
bool showLineNumbers;
- bool underlineErrors;
-
bool highlightMatchingBracket;
bool highlightCurrentLine;
@@ -62,7 +60,6 @@ namespace MonoDevelop.SourceEditor.OptionPanels
{
this.Build();
showLineNumbers = DefaultSourceEditorOptions.Instance.ShowLineNumberMargin;
- underlineErrors = DefaultSourceEditorOptions.Instance.UnderlineErrors;
highlightMatchingBracket = DefaultSourceEditorOptions.Instance.HighlightMatchingBracket;
highlightCurrentLine = DefaultSourceEditorOptions.Instance.HighlightCaretLine;
showRuler = DefaultSourceEditorOptions.Instance.ShowRuler;
@@ -81,14 +78,6 @@ namespace MonoDevelop.SourceEditor.OptionPanels
DefaultSourceEditorOptions.Instance.ShowLineNumberMargin = this.showLineNumbersCheckbutton.Active;
};
- this.underlineErrorsCheckbutton.Active = underlineErrors = DefaultSourceEditorOptions.Instance.UnderlineErrors;
- this.underlineErrorsCheckbutton.Toggled += delegate {
- DefaultSourceEditorOptions.Instance.UnderlineErrors = this.underlineErrorsCheckbutton.Active;
- foreach (var doc in IdeApp.Workbench.Documents)
- doc.StartReparseThread ();
-
- };
-
this.highlightMatchingBracketCheckbutton.Active = highlightMatchingBracket = DefaultSourceEditorOptions.Instance.HighlightMatchingBracket;
this.highlightMatchingBracketCheckbutton.Toggled += delegate {
DefaultSourceEditorOptions.Instance.HighlightMatchingBracket = this.highlightMatchingBracketCheckbutton.Active;
@@ -157,7 +146,6 @@ namespace MonoDevelop.SourceEditor.OptionPanels
public virtual void ApplyChanges ()
{
showLineNumbers = this.showLineNumbersCheckbutton.Active;
- underlineErrors = this.underlineErrorsCheckbutton.Active;
highlightMatchingBracket = this.highlightMatchingBracketCheckbutton.Active;
highlightCurrentLine = this.highlightCurrentLineCheckbutton.Active;
showRuler = this.showRulerCheckbutton.Active;
@@ -180,7 +168,6 @@ namespace MonoDevelop.SourceEditor.OptionPanels
protected override void OnDestroyed ()
{
DefaultSourceEditorOptions.Instance.ShowLineNumberMargin = showLineNumbers;
- DefaultSourceEditorOptions.Instance.UnderlineErrors = underlineErrors;
DefaultSourceEditorOptions.Instance.HighlightMatchingBracket = highlightMatchingBracket;
DefaultSourceEditorOptions.Instance.HighlightCaretLine = highlightCurrentLine;
DefaultSourceEditorOptions.Instance.ShowRuler = showRuler;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/DocumentLineWrapper.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/DocumentLineWrapper.cs
index d3b7c7e3b2..e95767792b 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/DocumentLineWrapper.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/DocumentLineWrapper.cs
@@ -127,5 +127,10 @@ namespace MonoDevelop.SourceEditor.Wrappers
return false;
return Line.Offset == other.Offset && Line.Length == other.Length;
}
+
+ public override string ToString ()
+ {
+ return string.Format ("[DocumentLineWrapper: Line={0}]", Line);
+ }
}
} \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/TooltipProviderWrapper.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/TooltipProviderWrapper.cs
index 148b925256..c5d2a2d1e5 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/TooltipProviderWrapper.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.Wrappers/TooltipProviderWrapper.cs
@@ -57,8 +57,11 @@ namespace MonoDevelop.SourceEditor.Wrappers
static MonoDevelop.Ide.Editor.TextEditor WrapEditor (MonoTextEditor editor)
{
foreach (var doc in IdeApp.Workbench.Documents) {
- if (doc.FileName == editor.FileName)
- return doc.Editor;
+ var textEditor = doc.Editor;
+ if (textEditor == null)
+ continue;
+ if (textEditor.FileName == editor.FileName)
+ return textEditor;
}
return null;
}
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/DebugValueWindow.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/DebugValueWindow.cs
index 27c2595dfe..050df0b9d0 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/DebugValueWindow.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/DebugValueWindow.cs
@@ -87,7 +87,7 @@ namespace MonoDevelop.SourceEditor
if (bgColor == currentBgColor)
return;
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light)
+ if (IdeApp.Preferences.UserInterfaceTheme == Ide.Theme.Light)
oddRowColor = CairoExtensions.ColorGetHex (newBgColor.AddLight (-0.02));
else
oddRowColor = CairoExtensions.ColorGetHex (newBgColor.AddLight (-0.02));
@@ -109,7 +109,7 @@ namespace MonoDevelop.SourceEditor
this.AllowGrow = false;
this.Decorated = false;
- TransientFor = (Gtk.Window) ((Gtk.Widget)editor).Toplevel;
+ TransientFor = (Gtk.Window) (editor.GetNativeWidget <Gtk.Widget> ()).Toplevel;
// Avoid getting the focus when the window is shown. We'll get it when the mouse enters the window
AcceptFocus = false;
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs
index b8d29bc407..7b83c1a4a4 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs
@@ -49,8 +49,7 @@ using MonoDevelop.Ide.Editor.Extension;
using MonoDevelop.Ide.Editor;
using MonoDevelop.Ide.Editor.Highlighting;
using MonoDevelop.SourceEditor.Wrappers;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.SourceEditor
{
class ExtensibleTextEditor : Mono.TextEditor.MonoTextEditor
@@ -110,13 +109,13 @@ namespace MonoDevelop.SourceEditor
this.ext = ext;
}
- public override Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
var native =(Tuple<Gdk.Key, Gdk.ModifierType>)descriptor.NativeKeyChar;
ext.SimulateKeyPress (native.Item1, (uint)descriptor.KeyChar, native.Item2);
if (descriptor.SpecialKey == SpecialKey.Escape)
- return Task.FromResult (true);
- return Task.FromResult (false);
+ return true;
+ return false;
}
}
@@ -230,8 +229,8 @@ namespace MonoDevelop.SourceEditor
protected override string GetIdeColorStyleName ()
{
var scheme = Ide.Editor.Highlighting.SyntaxModeService.GetColorStyle (IdeApp.Preferences.ColorScheme);
- if (!scheme.FitsIdeSkin (IdeApp.Preferences.UserInterfaceSkin))
- scheme = Ide.Editor.Highlighting.SyntaxModeService.GetDefaultColorStyle (IdeApp.Preferences.UserInterfaceSkin);
+ if (!scheme.FitsIdeTheme (IdeApp.Preferences.UserInterfaceTheme))
+ scheme = Ide.Editor.Highlighting.SyntaxModeService.GetDefaultColorStyle (IdeApp.Preferences.UserInterfaceTheme);
return scheme.Name;
}
@@ -255,7 +254,7 @@ namespace MonoDevelop.SourceEditor
}
}
- Task<bool> ExtensionKeyPress (Gdk.Key key, uint ch, Gdk.ModifierType state)
+ bool ExtensionKeyPress (Gdk.Key key, uint ch, Gdk.ModifierType state)
{
isInKeyStroke = true;
try {
@@ -272,7 +271,7 @@ namespace MonoDevelop.SourceEditor
} finally {
isInKeyStroke = false;
}
- return Task.FromResult (false);
+ return false;
}
void ReportExtensionError (Exception ex)
@@ -329,11 +328,11 @@ namespace MonoDevelop.SourceEditor
}
- protected override async Task<bool> OnIMProcessedKeyPressEvent (Gdk.Key key, uint ch, Gdk.ModifierType state)
+ protected override bool OnIMProcessedKeyPressEvent (Gdk.Key key, uint ch, Gdk.ModifierType state)
{
bool result = true;
if (key == Gdk.Key.Escape) {
- bool b = EditorExtension != null ? await ExtensionKeyPress (key, ch, state) : await base.OnIMProcessedKeyPressEvent (key, ch, state);
+ bool b = EditorExtension != null ? ExtensionKeyPress (key, ch, state) : base.OnIMProcessedKeyPressEvent (key, ch, state);
if (b) {
view.SourceEditorWidget.RemoveSearchWidget ();
return true;
@@ -370,15 +369,15 @@ namespace MonoDevelop.SourceEditor
if (EditorExtension != null) {
if (!DefaultSourceEditorOptions.Instance.GenerateFormattingUndoStep) {
using (var undo = Document.OpenUndoGroup ()) {
- if (await ExtensionKeyPress (key, ch, state))
- result = await base.OnIMProcessedKeyPressEvent (key, ch, state);
+ if (ExtensionKeyPress (key, ch, state))
+ result = base.OnIMProcessedKeyPressEvent (key, ch, state);
}
} else {
- if (await ExtensionKeyPress (key, ch, state))
- result = await base.OnIMProcessedKeyPressEvent (key, ch, state);
+ if (ExtensionKeyPress (key, ch, state))
+ result = base.OnIMProcessedKeyPressEvent (key, ch, state);
}
} else {
- result = await base.OnIMProcessedKeyPressEvent (key, ch, state);
+ result = base.OnIMProcessedKeyPressEvent (key, ch, state);
}
if (currentSession != null) {
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
index 561ddbc78a..f31bac3fce 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs
@@ -747,7 +747,7 @@ namespace MonoDevelop.SourceEditor
}
lastSaveTimeUtc = File.GetLastWriteTimeUtc (fileName);
try {
- if (attributes != null)
+ if (attributes != null)
DesktopService.SetFileAttributes (fileName, attributes);
} catch (Exception e) {
LoggingService.LogError ("Can't set file attributes", e);
@@ -757,14 +757,17 @@ namespace MonoDevelop.SourceEditor
MessageService.ShowError (GettextCatalog.GetString ("Can't save file - access denied"), e.Message);
}
-// if (encoding != null)
-// se.Buffer.SourceEncoding = encoding;
-// TextFileService.FireCommitCountChanges (this);
-
- ContentName = fileName;
- UpdateMimeType (fileName);
- Document.SetNotDirtyState ();
- IsDirty = false;
+ // if (encoding != null)
+ // se.Buffer.SourceEncoding = encoding;
+ // TextFileService.FireCommitCountChanges (this);
+ await Runtime.RunInMainThread (delegate {
+ Document.FileName = ContentName = fileName;
+ if (Document != null) {
+ UpdateMimeType (fileName);
+ Document.SetNotDirtyState ();
+ }
+ IsDirty = false;
+ });
}
public void InformLoadComplete ()
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs
index 7da2e57e69..740062f8fd 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs
+++ b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs
@@ -14,8 +14,6 @@ namespace MonoDevelop.SourceEditor.OptionPanels
private global::Gtk.CheckButton showLineNumbersCheckbutton;
- private global::Gtk.CheckButton underlineErrorsCheckbutton;
-
private global::Gtk.CheckButton highlightMatchingBracketCheckbutton;
private global::Gtk.CheckButton highlightCurrentLineCheckbutton;
@@ -84,18 +82,6 @@ namespace MonoDevelop.SourceEditor.OptionPanels
w2.Expand = false;
w2.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
- this.underlineErrorsCheckbutton = new global::Gtk.CheckButton();
- this.underlineErrorsCheckbutton.CanFocus = true;
- this.underlineErrorsCheckbutton.Name = "underlineErrorsCheckbutton";
- this.underlineErrorsCheckbutton.Label = global::Mono.Unix.Catalog.GetString("_Underline errors");
- this.underlineErrorsCheckbutton.DrawIndicator = true;
- this.underlineErrorsCheckbutton.UseUnderline = true;
- this.vbox3.Add(this.underlineErrorsCheckbutton);
- global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.underlineErrorsCheckbutton]));
- w3.Position = 1;
- w3.Expand = false;
- w3.Fill = false;
- // Container child vbox3.Gtk.Box+BoxChild
this.highlightMatchingBracketCheckbutton = new global::Gtk.CheckButton();
this.highlightMatchingBracketCheckbutton.CanFocus = true;
this.highlightMatchingBracketCheckbutton.Name = "highlightMatchingBracketCheckbutton";
@@ -103,10 +89,10 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.highlightMatchingBracketCheckbutton.DrawIndicator = true;
this.highlightMatchingBracketCheckbutton.UseUnderline = true;
this.vbox3.Add(this.highlightMatchingBracketCheckbutton);
- global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.highlightMatchingBracketCheckbutton]));
- w4.Position = 2;
- w4.Expand = false;
- w4.Fill = false;
+ global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.highlightMatchingBracketCheckbutton]));
+ w3.Position = 1;
+ w3.Expand = false;
+ w3.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.highlightCurrentLineCheckbutton = new global::Gtk.CheckButton();
this.highlightCurrentLineCheckbutton.CanFocus = true;
@@ -115,10 +101,10 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.highlightCurrentLineCheckbutton.DrawIndicator = true;
this.highlightCurrentLineCheckbutton.UseUnderline = true;
this.vbox3.Add(this.highlightCurrentLineCheckbutton);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.highlightCurrentLineCheckbutton]));
- w5.Position = 3;
- w5.Expand = false;
- w5.Fill = false;
+ global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.highlightCurrentLineCheckbutton]));
+ w4.Position = 2;
+ w4.Expand = false;
+ w4.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.showRulerCheckbutton = new global::Gtk.CheckButton();
this.showRulerCheckbutton.CanFocus = true;
@@ -127,10 +113,10 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.showRulerCheckbutton.DrawIndicator = true;
this.showRulerCheckbutton.UseUnderline = true;
this.vbox3.Add(this.showRulerCheckbutton);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.showRulerCheckbutton]));
- w6.Position = 4;
- w6.Expand = false;
- w6.Fill = false;
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.showRulerCheckbutton]));
+ w5.Position = 3;
+ w5.Expand = false;
+ w5.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.enableAnimationCheckbutton1 = new global::Gtk.CheckButton();
this.enableAnimationCheckbutton1.CanFocus = true;
@@ -139,10 +125,10 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.enableAnimationCheckbutton1.DrawIndicator = true;
this.enableAnimationCheckbutton1.UseUnderline = true;
this.vbox3.Add(this.enableAnimationCheckbutton1);
- global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.enableAnimationCheckbutton1]));
- w7.Position = 5;
- w7.Expand = false;
- w7.Fill = false;
+ global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.enableAnimationCheckbutton1]));
+ w6.Position = 4;
+ w6.Expand = false;
+ w6.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.enableHighlightUsagesCheckbutton = new global::Gtk.CheckButton();
this.enableHighlightUsagesCheckbutton.CanFocus = true;
@@ -151,10 +137,10 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.enableHighlightUsagesCheckbutton.DrawIndicator = true;
this.enableHighlightUsagesCheckbutton.UseUnderline = true;
this.vbox3.Add(this.enableHighlightUsagesCheckbutton);
- global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.enableHighlightUsagesCheckbutton]));
- w8.Position = 6;
- w8.Expand = false;
- w8.Fill = false;
+ global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.enableHighlightUsagesCheckbutton]));
+ w7.Position = 5;
+ w7.Expand = false;
+ w7.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.drawIndentMarkersCheckbutton = new global::Gtk.CheckButton();
this.drawIndentMarkersCheckbutton.CanFocus = true;
@@ -163,10 +149,10 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.drawIndentMarkersCheckbutton.DrawIndicator = true;
this.drawIndentMarkersCheckbutton.UseUnderline = true;
this.vbox3.Add(this.drawIndentMarkersCheckbutton);
- global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.drawIndentMarkersCheckbutton]));
- w9.Position = 7;
- w9.Expand = false;
- w9.Fill = false;
+ global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.drawIndentMarkersCheckbutton]));
+ w8.Position = 6;
+ w8.Expand = false;
+ w8.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.enableQuickDiffCheckbutton = new global::Gtk.CheckButton();
this.enableQuickDiffCheckbutton.CanFocus = true;
@@ -175,10 +161,10 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.enableQuickDiffCheckbutton.DrawIndicator = true;
this.enableQuickDiffCheckbutton.UseUnderline = true;
this.vbox3.Add(this.enableQuickDiffCheckbutton);
- global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.enableQuickDiffCheckbutton]));
- w10.Position = 8;
- w10.Expand = false;
- w10.Fill = false;
+ global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.enableQuickDiffCheckbutton]));
+ w9.Position = 7;
+ w9.Expand = false;
+ w9.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.table1 = new global::Gtk.Table(((uint)(4)), ((uint)(4)), false);
this.table1.Name = "table1";
@@ -192,13 +178,13 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.checkbuttonLineEndings.DrawIndicator = true;
this.checkbuttonLineEndings.UseUnderline = true;
this.table1.Add(this.checkbuttonLineEndings);
- global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table1[this.checkbuttonLineEndings]));
- w11.TopAttach = ((uint)(3));
- w11.BottomAttach = ((uint)(4));
- w11.LeftAttach = ((uint)(1));
- w11.RightAttach = ((uint)(4));
- w11.XOptions = ((global::Gtk.AttachOptions)(4));
- w11.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table1[this.checkbuttonLineEndings]));
+ w10.TopAttach = ((uint)(3));
+ w10.BottomAttach = ((uint)(4));
+ w10.LeftAttach = ((uint)(1));
+ w10.RightAttach = ((uint)(4));
+ w10.XOptions = ((global::Gtk.AttachOptions)(4));
+ w10.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.checkbuttonSpaces = new global::Gtk.CheckButton();
this.checkbuttonSpaces.CanFocus = true;
@@ -207,13 +193,13 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.checkbuttonSpaces.DrawIndicator = true;
this.checkbuttonSpaces.UseUnderline = true;
this.table1.Add(this.checkbuttonSpaces);
- global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1[this.checkbuttonSpaces]));
- w12.TopAttach = ((uint)(1));
- w12.BottomAttach = ((uint)(2));
- w12.LeftAttach = ((uint)(1));
- w12.RightAttach = ((uint)(4));
- w12.XOptions = ((global::Gtk.AttachOptions)(4));
- w12.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table1[this.checkbuttonSpaces]));
+ w11.TopAttach = ((uint)(1));
+ w11.BottomAttach = ((uint)(2));
+ w11.LeftAttach = ((uint)(1));
+ w11.RightAttach = ((uint)(4));
+ w11.XOptions = ((global::Gtk.AttachOptions)(4));
+ w11.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.checkbuttonTabs = new global::Gtk.CheckButton();
this.checkbuttonTabs.CanFocus = true;
@@ -222,41 +208,41 @@ namespace MonoDevelop.SourceEditor.OptionPanels
this.checkbuttonTabs.DrawIndicator = true;
this.checkbuttonTabs.UseUnderline = true;
this.table1.Add(this.checkbuttonTabs);
- global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1[this.checkbuttonTabs]));
- w13.TopAttach = ((uint)(2));
- w13.BottomAttach = ((uint)(3));
- w13.LeftAttach = ((uint)(1));
- w13.RightAttach = ((uint)(4));
- w13.XOptions = ((global::Gtk.AttachOptions)(4));
- w13.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1[this.checkbuttonTabs]));
+ w12.TopAttach = ((uint)(2));
+ w12.BottomAttach = ((uint)(3));
+ w12.LeftAttach = ((uint)(1));
+ w12.RightAttach = ((uint)(4));
+ w12.XOptions = ((global::Gtk.AttachOptions)(4));
+ w12.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.label1 = new global::Gtk.Label();
this.label1.Name = "label1";
this.label1.LabelProp = global::Mono.Unix.Catalog.GetString("_Show invisible characters:");
this.label1.UseUnderline = true;
this.table1.Add(this.label1);
- global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1[this.label1]));
- w14.XOptions = ((global::Gtk.AttachOptions)(4));
- w14.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1[this.label1]));
+ w13.XOptions = ((global::Gtk.AttachOptions)(4));
+ w13.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table1.Gtk.Table+TableChild
this.showWhitespacesCombobox = global::Gtk.ComboBox.NewText();
this.showWhitespacesCombobox.Name = "showWhitespacesCombobox";
this.table1.Add(this.showWhitespacesCombobox);
- global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table1[this.showWhitespacesCombobox]));
- w15.LeftAttach = ((uint)(1));
- w15.RightAttach = ((uint)(4));
- w15.XOptions = ((global::Gtk.AttachOptions)(4));
- w15.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1[this.showWhitespacesCombobox]));
+ w14.LeftAttach = ((uint)(1));
+ w14.RightAttach = ((uint)(4));
+ w14.XOptions = ((global::Gtk.AttachOptions)(4));
+ w14.YOptions = ((global::Gtk.AttachOptions)(4));
this.vbox3.Add(this.table1);
- global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.table1]));
- w16.Position = 9;
- w16.Fill = false;
+ global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.table1]));
+ w15.Position = 8;
+ w15.Fill = false;
this.alignment1.Add(this.vbox3);
this.vbox1.Add(this.alignment1);
- global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.alignment1]));
- w18.Position = 1;
- w18.Expand = false;
- w18.Fill = false;
+ global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.alignment1]));
+ w17.Position = 1;
+ w17.Expand = false;
+ w17.Fill = false;
this.Add(this.vbox1);
if ((this.Child != null))
{
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic
index 19f98120aa..1146b7c21a 100644
--- a/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic
+++ b/main/src/addins/MonoDevelop.SourceEditor2/gtk-gui/gui.stetic
@@ -263,7 +263,7 @@
</widget>
</child>
</widget>
- <widget class="Gtk.Bin" id="MonoDevelop.SourceEditor.OptionPanels.MarkerPanel" design-size="383 418">
+ <widget class="Gtk.Bin" id="MonoDevelop.SourceEditor.OptionPanels.MarkerPanel" design-size="416 434">
<property name="MemberName" />
<child>
<widget class="Gtk.VBox" id="vbox1">
@@ -308,22 +308,6 @@
</packing>
</child>
<child>
- <widget class="Gtk.CheckButton" id="underlineErrorsCheckbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">_Underline errors</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="highlightMatchingBracketCheckbutton">
<property name="MemberName" />
<property name="CanFocus">True</property>
@@ -333,7 +317,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">2</property>
+ <property name="Position">1</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -349,7 +333,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">3</property>
+ <property name="Position">2</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -365,7 +349,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">4</property>
+ <property name="Position">3</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -381,7 +365,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">5</property>
+ <property name="Position">4</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -397,7 +381,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">6</property>
+ <property name="Position">5</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -413,7 +397,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">7</property>
+ <property name="Position">6</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -429,7 +413,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">8</property>
+ <property name="Position">7</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -566,7 +550,7 @@
</child>
</widget>
<packing>
- <property name="Position">9</property>
+ <property name="Position">8</property>
<property name="AutoSize">False</property>
<property name="Fill">False</property>
</packing>
diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs
index 8d08a3ab21..13cf5e6489 100644
--- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs
@@ -444,10 +444,11 @@ namespace MonoDevelop.UnitTesting.NUnit
result = UnitTestResult.CreateFailure (GettextCatalog.GetString ("Canceled"), null);
}
} finally {
+ // Dispose the runner before the console, to make sure the console is available until the runner is disposed.
+ runner.Dispose ();
if (console != null)
console.Dispose ();
cancelReg.Dispose ();
- runner.Dispose ();
File.Delete (crashLogFile);
}
@@ -502,6 +503,7 @@ namespace MonoDevelop.UnitTesting.NUnit
tcpListener = new MonoDevelop.UnitTesting.NUnit.External.TcpTestListener (localMonitor, suiteName);
cmd.Arguments += " -port=" + tcpListener.Port;
}
+ cmd.WorkingDirectory = Path.GetDirectoryName (AssemblyPath);
// Note that we always dispose the tcp listener as we don't want it listening
// forever if the test runner does not try to connect to it
diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelopNUnit.addin.xml b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelopNUnit.addin.xml
index 74a5657a90..5b90817b8e 100644
--- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelopNUnit.addin.xml
+++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelopNUnit.addin.xml
@@ -7,8 +7,8 @@
</Extension>
<Extension path = "/MonoDevelop/Ide/ProjectTemplates">
- <ProjectTemplate id = "NUnitProject" resource = "NUnitProject.xpt.xml"/>
- <ProjectTemplate id = "NUnitProjectVBNet" resource = "NUnitProjectVBNet.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.CSharp.NUnitLibraryProject" resource = "NUnitProject.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.VBNet.NUnitLibraryProject" resource = "NUnitProjectVBNet.xpt.xml"/>
</Extension>
<Extension path = "/MonoDevelop/Ide/FileTemplates">
diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/EventListenerWrapper.cs b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/EventListenerWrapper.cs
index 2472998471..2e5ada3a94 100644
--- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/EventListenerWrapper.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/EventListenerWrapper.cs
@@ -25,27 +25,16 @@
// THE SOFTWARE.
using System;
-using System.Reflection;
-using System.IO;
-using System.Collections;
-using System.Collections.Generic;
-using System.Threading;
-using System.Text;
using MonoDevelop.Core.Execution;
using NUnit.Engine;
-using NUnit.Common;
-using System.Diagnostics.Contracts;
-using NUnit.Framework.Interfaces;
-using NUnit.Framework.Internal;
using System.Xml;
-using System.Net.Configuration;
using System.Globalization;
using MonoDevelop.UnitTesting.NUnit;
namespace NUnit3Runner
{
-
+
class EventListenerWrapper: MarshalByRefObject, ITestEventListener
{
RemoteProcessServer server;
@@ -55,18 +44,6 @@ namespace NUnit3Runner
this.server = server;
}
- public void RunFinished (Exception exception)
- {
- }
-
- public void RunFinished (TestResult results)
- {
- }
-
- public void RunStarted (string name, int testCount)
- {
- }
-
public void SuiteFinished (XmlNode testResult)
{
var testName = testResult.Attributes["fullname"].Value;
@@ -118,12 +95,22 @@ namespace NUnit3Runner
RemoteTestResult res = new RemoteTestResult ();
if (e.LocalName == "test-suite") {
- res.Failures = int.Parse (e.GetAttribute ("failed"));
- res.Errors = 0;
- res.Ignored = int.Parse (e.GetAttribute ("skipped"));
- res.Inconclusive = int.Parse (e.GetAttribute ("inconclusive"));
+ int r;
+ if (int.TryParse (e.GetAttribute ("failed"), out r))
+ res.Failures = r;
+
+ if (int.TryParse (e.GetAttribute ("skipped"), out r))
+ res.Ignored = r;
+
+ if (int.TryParse (e.GetAttribute ("inconclusive"), out r))
+ res.Inconclusive = r;
+
+ if (int.TryParse (e.GetAttribute ("passed"), out r))
+ res.Passed = r;
+
res.NotRunnable = 0;
- res.Passed = int.Parse (e.GetAttribute ("passed"));
+ res.Errors = 0;
+
} else if (e.LocalName == "test-case") {
var runResult = e.GetAttribute ("result");
if (runResult == "Passed")
@@ -150,7 +137,9 @@ namespace NUnit3Runner
}
}
- res.Time = TimeSpan.FromSeconds (double.Parse (e.GetAttribute ("duration"), CultureInfo.InvariantCulture));
+ double d;
+ if (double.TryParse (e.GetAttribute ("duration"), NumberStyles.Any, CultureInfo.InvariantCulture, out d))
+ res.Time = TimeSpan.FromSeconds (d);
var output = e.SelectSingleNode ("output");
if (output != null) {
diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj
index c04f9da8c4..b7079a762f 100644
--- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj
+++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnit3Runner.csproj
@@ -30,9 +30,6 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
- <Reference Include="nunit.framework">
- <HintPath>..\..\..\..\packages\NUnit.3.0.1\lib\net45\nunit.framework.dll</HintPath>
- </Reference>
<Reference Include="nunit.engine">
<HintPath>..\..\..\..\packages\NUnit.Engine.3.0.1\lib\nunit.engine.dll</HintPath>
</Reference>
diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnitTestRunner.cs b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnitTestRunner.cs
index b085795abe..99cfb26219 100644
--- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnitTestRunner.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnitTestRunner.cs
@@ -31,16 +31,9 @@ using System;
using System.Linq;
using System.Reflection;
using System.IO;
-using System.Collections;
-using System.Collections.Generic;
-using System.Threading;
-using NUnit.Framework;
-using NUnit.Framework.Interfaces;
using NUnit.Engine;
using System.Xml;
-using NUnit.Common;
-using NUnit.Engine.Internal;
using MonoDevelop.Core.Execution;
using MonoDevelop.UnitTesting.NUnit;
@@ -55,15 +48,6 @@ namespace NUnit3Runner
public NUnitTestRunner (RemoteProcessServer server)
{
this.server = server;
-
- // Note: We need to load all nunit.*.dll assemblies before we do *anything* else in this class
- // This is to ensure that we always load the assemblies from the monodevelop directory and not
- // from the directory of the assembly under test. For example we wnat to load
- // /Applications/MonoDevelop/lib/Addins/nunit.framework.dll and not /user/app/foo/bin/debug/nunit.framework.dll
- var path = Path.GetDirectoryName (GetType ().Assembly.Location);
- string nunitPath = Path.Combine (path, "nunit.framework.dll");
- Assembly.LoadFrom (nunitPath);
-
Initialize ();
}
diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/packages.config b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/packages.config
index c2833088b1..e9a17d1a0d 100644
--- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/packages.config
+++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/packages.config
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
- <package id="NUnit" version="3.0.1" targetFramework="net45" />
<package id="NUnit.Engine" version="3.0.1" targetFramework="net45" />
</packages> \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestChart.cs b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestChart.cs
index 13e923934d..d8cee8af52 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestChart.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestChart.cs
@@ -31,6 +31,7 @@ using System.Collections;
using Gtk;
using Gdk;
using MonoDevelop.Components.Chart;
+using MonoDevelop.Core;
namespace MonoDevelop.UnitTesting
{
@@ -89,14 +90,14 @@ namespace MonoDevelop.UnitTesting
SetAutoScale (AxisDimension.Y, false, true);
StartY = 0;
- serieFailed = new Serie ("Failed tests");
+ serieFailed = new Serie (GettextCatalog.GetString("Failed tests"));
serieFailed.Color = new Cairo.Color (1, 0, 0);
- serieSuccess = new Serie ("Successful tests");
+ serieSuccess = new Serie (GettextCatalog.GetString("Successful tests"));
serieSuccess.Color = new Cairo.Color (0, 0.65, 0);
- serieIgnored = new Serie ("Ignored tests");
+ serieIgnored = new Serie (GettextCatalog.GetString("Ignored tests"));
serieIgnored.Color = new Cairo.Color (0.8, 0.8, 0);
- serieTime = new Serie ("Time");
+ serieTime = new Serie (GettextCatalog.GetString("Time"));
serieTime.Color = new Cairo.Color (0, 0, 1);
UpdateMode ();
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs
index e09a748a95..027f8b4265 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs
@@ -161,7 +161,7 @@ namespace MonoDevelop.UnitTesting
// UnitTestResult res = test.GetLastResult ();
loc = test.SourceCodeLocation;
if (loc != null)
- await IdeApp.Workbench.OpenDocument (loc.FileName, loc.Line, loc.Column);
+ await IdeApp.Workbench.OpenDocument (loc.FileName, null, loc.Line, loc.Column);
}
[CommandHandler (TestCommands.GoToFailure)]
@@ -175,7 +175,7 @@ namespace MonoDevelop.UnitTesting
if (loc == null)
loc = test.SourceCodeLocation;
if (loc != null)
- await IdeApp.Workbench.OpenDocument (loc.FileName, loc.Line, loc.Column);
+ await IdeApp.Workbench.OpenDocument (loc.FileName, null, loc.Line, loc.Column);
}
[CommandUpdateHandler (TestCommands.GoToFailure)]
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs
index c207a05218..33ac16a75c 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs
@@ -473,7 +473,7 @@ namespace MonoDevelop.UnitTesting
int line = (int)failuresStore.GetValue (iter, 4);
try {
if (file != null && File.Exists (file)) {
- IdeApp.Workbench.OpenDocument (file, line, -1);
+ IdeApp.Workbench.OpenDocument (file, null, line, -1);
return;
}
} catch (Exception) {
@@ -521,7 +521,7 @@ namespace MonoDevelop.UnitTesting
clipboard.Text = last.StackTrace;
break;
default:
- clipboard.Text = last.Message + Environment.NewLine + "Stack trace:" + Environment.NewLine + last.StackTrace;
+ clipboard.Text = last.Message + Environment.NewLine + GettextCatalog.GetString("Stack trace:") + Environment.NewLine + last.StackTrace;
break;
}
} else {
@@ -544,7 +544,7 @@ namespace MonoDevelop.UnitTesting
clipboard.Text = error.StackTrace;
break;
default:
- clipboard.Text = error.Message + Environment.NewLine + "Stack trace:" + Environment.NewLine + error.StackTrace;
+ clipboard.Text = error.Message + Environment.NewLine + GettextCatalog.GetString("Stack trace:") + Environment.NewLine + error.StackTrace;
break;
}
}
@@ -607,7 +607,7 @@ namespace MonoDevelop.UnitTesting
if (loc == null)
loc = test.SourceCodeLocation;
if (loc != null) {
- IdeApp.Workbench.OpenDocument (loc.FileName, loc.Line, loc.Column);
+ IdeApp.Workbench.OpenDocument (loc.FileName, null, loc.Line, loc.Column);
} else {
LoggingService.LogError ("Can't get source code location for test : "+ test);
MessageService.ShowError (GettextCatalog.GetString ("Can't get source code location for :" + test.Name));
@@ -622,7 +622,7 @@ namespace MonoDevelop.UnitTesting
return;
SourceCodeLocation loc = test.SourceCodeLocation;
if (loc != null) {
- IdeApp.Workbench.OpenDocument (loc.FileName, loc.Line, loc.Column);
+ IdeApp.Workbench.OpenDocument (loc.FileName, null, loc.Line, loc.Column);
} else {
LoggingService.LogError ("Can't get source code location for test : "+ test);
MessageService.ShowError (GettextCatalog.GetString ("Can't get source code location for :" + test.Name));
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/AbstractUnitTestEditorExtension.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/AbstractUnitTestEditorExtension.cs
index 1831e69db4..8d4e500097 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Services/AbstractUnitTestEditorExtension.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Services/AbstractUnitTestEditorExtension.cs
@@ -193,47 +193,47 @@ namespace MonoDevelop.UnitTesting
return;
var menu = new ContextMenu ();
if (unitTest.IsFixture) {
- var menuItem = new ContextMenuItem ("_Run All");
+ var menuItem = new ContextMenuItem (GettextCatalog.GetString("_Run All"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier, project, false).Run;
menu.Add (menuItem);
if (debugModeSet != null) {
- menuItem = new ContextMenuItem ("_Debug All");
+ menuItem = new ContextMenuItem (GettextCatalog.GetString("_Debug All"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier, project, true).Run;
menu.Add (menuItem);
}
- menuItem = new ContextMenuItem ("_Select in Test Pad");
+ menuItem = new ContextMenuItem (GettextCatalog.GetString("_Select in Test Pad"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier, project, true).Select;
menu.Add (menuItem);
} else {
if (unitTest.TestCases.Count == 0) {
- var menuItem = new ContextMenuItem ("_Run");
+ var menuItem = new ContextMenuItem (GettextCatalog.GetString("_Run"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier, project, false).Run;
menu.Add (menuItem);
if (debugModeSet != null) {
- menuItem = new ContextMenuItem ("_Debug");
+ menuItem = new ContextMenuItem (GettextCatalog.GetString ("_Debug"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier, project, true).Run;
menu.Add (menuItem);
}
- menuItem = new ContextMenuItem ("_Select in Test Pad");
+ menuItem = new ContextMenuItem (GettextCatalog.GetString ("_Select in Test Pad"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier, project, true).Select;
menu.Add (menuItem);
} else {
- var menuItem = new ContextMenuItem ("_Run All");
+ var menuItem = new ContextMenuItem (GettextCatalog.GetString ("_Run All"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier, project, false).Run;
menu.Add (menuItem);
if (debugModeSet != null) {
- menuItem = new ContextMenuItem ("_Debug All");
+ menuItem = new ContextMenuItem (GettextCatalog.GetString ("_Debug All"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier, project, true).Run;
menu.Add (menuItem);
}
menu.Add (new SeparatorContextMenuItem ());
foreach (var id in unitTest.TestCases) {
var submenu = new ContextMenu ();
- menuItem = new ContextMenuItem ("_Run");
+ menuItem = new ContextMenuItem (GettextCatalog.GetString ("_Run"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier + id, project, false).Run;
submenu.Add (menuItem);
if (debugModeSet != null) {
- menuItem = new ContextMenuItem ("_Debug");
+ menuItem = new ContextMenuItem (GettextCatalog.GetString ("_Debug"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier + id, project, true).Run;
submenu.Add (menuItem);
}
@@ -249,7 +249,7 @@ namespace MonoDevelop.UnitTesting
}
}
- menuItem = new ContextMenuItem ("_Select in Test Pad");
+ menuItem = new ContextMenuItem (GettextCatalog.GetString ("_Select in Test Pad"));
menuItem.Clicked += new TestRunner (unitTest.UnitTestIdentifier + id, project, true).Select;
submenu.Add (menuItem);
diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Commands/WebReferenceCommandHandler.cs b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Commands/WebReferenceCommandHandler.cs
index c45f4968fe..0d01cb8abb 100644
--- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Commands/WebReferenceCommandHandler.cs
+++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Commands/WebReferenceCommandHandler.cs
@@ -27,11 +27,12 @@ namespace MonoDevelop.WebReferences.Commands
// Check and switch the runtime environment for the current project
if (project.TargetFramework.Id == TargetFrameworkMoniker.NET_1_1)
{
- string question = "The current runtime environment for your project is set to version 1.0.";
- question += "Web Service is not supported in this version.";
- question += "Do you want switch the runtime environment for this project version 2.0 ?";
+ string msg1 = GettextCatalog.GetString ("The current runtime environment for your project is set to version 1.0.");
+ string msg2 = GettextCatalog.GetString ("Web Service is not supported in this version.");
+ string msg3 = GettextCatalog.GetString ("Do you want switch the runtime environment for this project version 2.0?");
+ string question = $"{msg1} {msg2} {msg3}";
- var switchButton = new AlertButton ("_Switch to .NET2");
+ var switchButton = new AlertButton (GettextCatalog.GetString ("_Switch to .NET 2.0"));
if (MessageService.AskQuestion(question, AlertButton.Cancel, switchButton) == switchButton)
project.TargetFramework = Runtime.SystemAssemblyService.GetTargetFramework (TargetFrameworkMoniker.NET_2_0);
else
@@ -48,7 +49,7 @@ namespace MonoDevelop.WebReferences.Commands
await dialog.SelectedService.GenerateFiles (project, dialog.Namespace, dialog.ReferenceName);
await IdeApp.ProjectOperations.SaveAsync(project);
} catch (Exception exception) {
- MessageService.ShowError ("The web reference could not be added", exception);
+ MessageService.ShowError (GettextCatalog.GetString ("The web reference could not be added"), exception);
} finally {
dialog.Destroy ();
dialog.Dispose ();
@@ -119,7 +120,7 @@ namespace MonoDevelop.WebReferences.Commands
return;
item.Delete();
IdeApp.ProjectOperations.SaveAsync (item.Project);
- IdeApp.Workbench.StatusBar.ShowMessage("Deleted Web Reference " + item.Name);
+ IdeApp.Workbench.StatusBar.ShowMessage(GettextCatalog.GetString ("Deleted Web Reference {0}", item.Name));
}
/// <summary>Execute the command for removing all web references from a project.</summary>
@@ -139,7 +140,7 @@ namespace MonoDevelop.WebReferences.Commands
item.Delete();
IdeApp.ProjectOperations.SaveAsync(project);
- IdeApp.Workbench.StatusBar.ShowMessage("Deleted all Web References");
+ IdeApp.Workbench.StatusBar.ShowMessage(GettextCatalog.GetString ("Deleted all Web References"));
}
[CommandUpdateHandler (WebReferenceCommands.Configure)]
diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/Library.cs b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/Library.cs
index 0ad3b75057..7ed8e48a6c 100644
--- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/Library.cs
+++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/Library.cs
@@ -71,10 +71,10 @@ namespace MonoDevelop.WebReferences
if (dref == null)
continue;
if (dref is ContractReference) {
- text.AppendFormat ("<b>Service: {0}</b>\n<span size='small'>{1}</span>", Path.GetFileNameWithoutExtension (dref.DefaultFilename), dref.Url);
+ text.AppendFormat ("<b>" + GettextCatalog.GetString ("Service: {0}") + "</b>\n<span size='small'>{1}</span>", Path.GetFileNameWithoutExtension (dref.DefaultFilename), dref.Url);
}
else if (dref is DiscoveryDocumentReference) {
- text.AppendFormat ("<b>Discovery document</b>\n<small>{0}</small>", dref.Url);
+ text.AppendFormat ("<b>" + GettextCatalog.GetString ("Discovery document") + "</b>\n<small>{0}</small>", dref.Url);
}
text.Append ("\n\n");
}
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/EngineTests.cs b/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/EngineTests.cs
new file mode 100644
index 0000000000..e81aee6164
--- /dev/null
+++ b/main/src/addins/TextTemplating/Mono.TextTemplating.Tests/EngineTests.cs
@@ -0,0 +1,72 @@
+//
+// EngineTests.cs
+//
+// Author:
+// Mikayla Hutchinson <m.j.hutchinson@gmail.com>
+//
+// Copyright (c) 2016 Xamarin Inc.
+//
+// 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;
+
+namespace Mono.TextTemplating.Tests
+{
+ [TestFixture]
+ public class EngineTests
+ {
+ #pragma warning disable 414
+ static object [] ParameterParsingCases = {
+ new object [] { "foo=bar", true, "", "", "foo", "bar" },
+ new object [] { "a=b", true, "", "", "a", "b" },
+ new object [] { "a=b=c", true, "", "", "a", "b=c" },
+ new object [] { "!!c!d", true, "", "", "c", "d" },
+ new object [] { "!!!", false, "", "", "", "" },
+ new object [] { "a=", true, "", "", "a", "" },
+ new object [] { "=", false, "", "", "", "" },
+ new object [] { "", false, "", "", "", "" },
+ new object [] { "!", false, "", "", "", "" },
+ new object [] { "a!", true, "", "", "a", "" },
+ new object [] { "!b!c!d", true, "", "b", "c", "d" },
+ new object [] { "a!b!c!d", true, "a", "b", "c", "d" },
+ new object [] { "a=b!c!d!e", true, "", "", "a", "b!c!d!e" },
+ new object [] { "a!b!c!d!e", true, "a", "b", "c", "d!e" },
+ new object [] { "foo!bar!baz!wibb!le", true, "foo", "bar", "baz", "wibb!le" },
+ };
+ #pragma warning restore 414
+
+ [Test]
+ [TestCaseSource(nameof (ParameterParsingCases))]
+ public void ParameterParsing (
+ string parameter, bool valid,
+ string expectedProcessor, string expectedDirective,
+ string expectedName, string expectedValue)
+ {
+ string processor, directive, name, value;
+ var success = TemplateGenerator.TryParseParameter (parameter, out processor, out directive, out name, out value);
+
+ Assert.AreEqual (valid, success);
+ Assert.AreEqual (expectedProcessor, processor);
+ Assert.AreEqual (expectedDirective, directive);
+ Assert.AreEqual (expectedName, name);
+ Assert.AreEqual (expectedValue, value);
+ }
+ }
+}
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 2358b38595..ed523be4cf 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
@@ -43,6 +43,7 @@
<Compile Include="TemplateEnginePreprocessTemplateTests.cs" />
<Compile Include="GenerateIndentedClassCodeTests.cs" />
<Compile Include="TextTemplatingSessionTests.cs" />
+ <Compile Include="EngineTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Mono.TextTemplating\Mono.TextTemplating.csproj">
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating/AssemblyInfo.cs b/main/src/addins/TextTemplating/Mono.TextTemplating/AssemblyInfo.cs
index 13849716d3..9747297d18 100644
--- a/main/src/addins/TextTemplating/Mono.TextTemplating/AssemblyInfo.cs
+++ b/main/src/addins/TextTemplating/Mono.TextTemplating/AssemblyInfo.cs
@@ -34,4 +34,6 @@ using System;
[assembly: AssemblyCopyright("MIT/X11")]
[assembly: CLSCompliant (true)]
+[assembly: InternalsVisibleTo("Mono.TextTemplating.Tests")]
+
//[assembly: AssemblyVersion("1.0.0.0")]
diff --git a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs
index ebb5568c06..5c661ed7bb 100644
--- a/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs
+++ b/main/src/addins/TextTemplating/Mono.TextTemplating/Mono.TextTemplating/TemplateGenerator.cs
@@ -264,6 +264,70 @@ namespace Mono.TextTemplating
{
parameters.Add (new ParameterKey (processorName, directiveName, parameterName), value);
}
+
+ /// <summary>
+ /// Parses a parameter and adds it.
+ /// </summary>
+ /// <returns>Whether the parameter was parsed successfully.</returns>
+ /// <param name="unparsedParameter">Parameter in name=value or processor!directive!name!value format.</param>
+ public bool TryAddParameter (string unparsedParameter)
+ {
+ string processor, directive, name, value;
+ if (TryParseParameter (unparsedParameter, out processor, out directive, out name, out value)) {
+ AddParameter (processor, directive, name, value);
+ return true;
+ }
+ return false;
+ }
+
+ internal static bool TryParseParameter (string parameter, out string processor, out string directive, out string name, out string value)
+ {
+ processor = directive = name = value = "";
+
+ int start = 0;
+ int end = parameter.IndexOfAny (new [] { '=', '!' });
+ if (end < 0)
+ return false;
+
+ //simple format n=v
+ if (parameter [end] == '=') {
+ name = parameter.Substring (start, end);
+ value = parameter.Substring (end + 1);
+ return !string.IsNullOrEmpty (name);
+ }
+
+ //official format, p!d!n!v
+ processor = parameter.Substring (start, end);
+
+ start = end + 1;
+ end = parameter.IndexOf ('!', start);
+ if (end < 0) {
+ //unlike official version, we allow you to omit processor/directive
+ name = processor;
+ value = parameter.Substring (start);
+ processor = "";
+ return !string.IsNullOrEmpty (name);
+ }
+
+ directive = parameter.Substring (start, end - start);
+
+
+ start = end + 1;
+ end = parameter.IndexOf ('!', start);
+ if (end < 0) {
+ //we also allow you just omit the processor
+ name = directive;
+ directive = processor;
+ value = parameter.Substring (start);
+ processor = "";
+ return !string.IsNullOrEmpty (name);
+ }
+
+ name = parameter.Substring (start, end - start);
+ value = parameter.Substring (end + 1);
+
+ return !string.IsNullOrEmpty (name);
+ }
protected virtual bool LoadIncludeText (string requestFileName, out string content, out string location)
{
diff --git a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/T4FileTemplate.cs b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/T4FileTemplate.cs
index df1bb81309..8b8562e7fe 100644
--- a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/T4FileTemplate.cs
+++ b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/T4FileTemplate.cs
@@ -67,7 +67,7 @@ namespace MonoDevelop.TextTemplating
foreach (var err in host.Errors)
LoggingService.LogError ("Error in template generator: {0}", err.ToString());
var firstError = host.Errors.OfType<CompilerError> ().First (f => !f.IsWarning);
- throw new Exception ("Failed to generate file: " + firstError.ErrorText);
+ throw new Exception (GettextCatalog.GetString ("Failed to generate file: {0}", firstError.ErrorText));
}
return output;
}
diff --git a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/TextTemplatingFilePreprocessor.cs b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/TextTemplatingFilePreprocessor.cs
index 4387d8d872..c9f0f900d1 100644
--- a/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/TextTemplatingFilePreprocessor.cs
+++ b/main/src/addins/TextTemplating/MonoDevelop.TextTemplating/TextTemplatingFilePreprocessor.cs
@@ -65,7 +65,7 @@ namespace MonoDevelop.TextTemplating
}
catch (IOException ex) {
host.Errors.Add (new CompilerError {
- ErrorText = "Could not read input file '" + file.FilePath + "':\n" + ex
+ ErrorText = GettextCatalog.GetString ("Could not read input file '{0}':\n{1}", file.FilePath, ex)
});
return;
}
@@ -101,7 +101,7 @@ namespace MonoDevelop.TextTemplating
}
catch (IOException ex) {
host.Errors.Add (new CompilerError {
- ErrorText = "Could not write output file '" + outputFile + "':\n" + ex
+ ErrorText = GettextCatalog.GetString ("Could not write output file '{0}':\n{1}", outputFile, ex)
});
}
}
diff --git a/main/src/addins/TextTemplating/TextTransform/TextTransform.cs b/main/src/addins/TextTemplating/TextTransform/TextTransform.cs
index 0da1987657..914b739fe9 100644
--- a/main/src/addins/TextTemplating/TextTransform/TextTransform.cs
+++ b/main/src/addins/TextTemplating/TextTransform/TextTransform.cs
@@ -67,7 +67,7 @@ namespace Mono.TextTemplating
{ "I=", "Paths to search for included files", s => generator.IncludePaths.Add (s) },
{ "P=", "Paths to search for referenced assemblies", s => generator.ReferencePaths.Add (s) },
{ "dp=", "Directive processor (name!class!assembly)", s => directives.Add (s) },
- { "a=", "Parameters ([processorName]![directiveName]!name!value)", s => parameters.Add (s) },
+ { "a=", "Parameters (name=value) or ([processorName!][directiveName!]name!value)", s => parameters.Add (s) },
{ "h|?|help", "Show help", s => ShowHelp (false) },
// { "k=,", "Session {key},{value} pairs", (s, t) => session.Add (s, t) },
{ "c=", "Preprocess the template into {0:class}", (s) => preprocess = s },
@@ -97,38 +97,30 @@ namespace Mono.TextTemplating
}
}
- //FIXME: implement quoting and escaping for values
foreach (var par in parameters) {
- var split = par.Split ('!');
- if (split.Length < 2) {
- Console.Error.WriteLine ("Parameter does not have enough values: {0}", par);
+ if (!generator.TryAddParameter (par)) {
+ Console.Error.WriteLine ("Parameter has incorrect format: {0}", par);
return -1;
}
- if (split.Length > 2) {
- Console.Error.WriteLine ("Parameter has too many values: {0}", par);
- return -1;
- }
- string name = split[split.Length-2];
- string val = split[split.Length-1];
- if (string.IsNullOrEmpty (name)) {
- Console.Error.WriteLine ("Parameter has no name: {0}", par);
- return -1;
- }
- generator.AddParameter (split.Length > 3? split[0] : null, split.Length > 2? split[split.Length-3] : null, name, val);
}
foreach (var dir in directives) {
var split = dir.Split ('!');
+
if (split.Length != 3) {
- Console.Error.WriteLine ("Directive does not have correct number of values: {0}", dir);
+ Console.Error.WriteLine ("Directive must have 3 values: {0}", dir);
return -1;
}
- foreach (var s in split) {
+
+ for (int i = 0; i < 3; i++) {
+ string s = split [i];
if (string.IsNullOrEmpty (s)) {
- Console.Error.WriteLine ("Directive has missing value: {0}", dir);
+ string kind = i == 0? "name" : (i == 1 ? "class" : "assembly");
+ Console.Error.WriteLine ("Directive has missing {0} value: {1}", kind, dir);
return -1;
}
}
+
generator.AddDirectiveProcessor (split[0], split[1], split[2]);
}
diff --git a/main/src/addins/VBNetBinding/VBNetBinding.addin.xml b/main/src/addins/VBNetBinding/VBNetBinding.addin.xml
index e2dfda72f9..fd4b3c11dc 100644
--- a/main/src/addins/VBNetBinding/VBNetBinding.addin.xml
+++ b/main/src/addins/VBNetBinding/VBNetBinding.addin.xml
@@ -23,9 +23,9 @@
</Extension>
<Extension path = "/MonoDevelop/Ide/ProjectTemplates">
- <ProjectTemplate id = "EmptyVBProject" resource = "EmptyVBProject.xpt.xml"/>
- <ProjectTemplate id = "VBConsoleApplicationProject" resource = "VBConsoleApplicationProject.xpt.xml"/>
- <ProjectTemplate id = "VBGtkSharp2Project" resource = "VBGtkSharp2Project.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.VBNet.EmptyProject" resource = "EmptyVBProject.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.VBNet.ConsoleProject" resource = "VBConsoleApplicationProject.xpt.xml"/>
+ <ProjectTemplate id = "MonoDevelop.VBNet.GtkSharp2Project" resource = "VBGtkSharp2Project.xpt.xml"/>
</Extension>
<Extension path = "/MonoDevelop/ProjectModel/Gui/ItemOptionPanels/Build/General">
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 e7a6795dab..0186ad50d8 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseGitRepositoryTests.cs
@@ -53,6 +53,7 @@ namespace MonoDevelop.VersionControl.Git.Tests
// Check out the repository.
Checkout (LocalPath, RemoteUrl);
Repo = GetRepo (LocalPath, RemoteUrl);
+ ((GitRepository)Repo).RootRepository.Config.Set ("core.ignorecase", false);
ModifyPath (Repo, ref LocalPath);
DotDir = ".git";
}
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 fb87ce7cf4..787a123091 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseRepositoryTests.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git.Tests/BaseRepositoryTests.cs
@@ -651,6 +651,23 @@ namespace MonoDevelop.VersionControl.Tests
Assert.AreEqual (VersionStatus.Versioned, Repo.GetVersionInfo (added, VersionInfoQueryFlags.IgnoreCache).Status);
}
+
+ [Test]
+ public virtual void MoveAndMoveBackCaseOnly ()
+ {
+ string srcFile = LocalPath.Combine ("testfile");
+ string dstFile = LocalPath.Combine ("TESTFILE");
+ AddFile ("testfile", "test", true, true);
+
+ Repo.MoveFile (srcFile, dstFile, true, new ProgressMonitor ());
+ Assert.AreEqual (VersionStatus.ScheduledAdd, Repo.GetVersionInfo (dstFile, VersionInfoQueryFlags.IgnoreCache).Status & VersionStatus.ScheduledAdd);
+ Assert.AreEqual (VersionStatus.ScheduledDelete, Repo.GetVersionInfo (srcFile, VersionInfoQueryFlags.IgnoreCache).Status & VersionStatus.ScheduledDelete);
+
+ Repo.MoveFile (dstFile, srcFile, true, new ProgressMonitor ());
+ Assert.AreEqual (VersionStatus.Unversioned, Repo.GetVersionInfo (dstFile, VersionInfoQueryFlags.IgnoreCache).Status);
+ Assert.AreEqual (VersionStatus.Versioned, Repo.GetVersionInfo (srcFile, VersionInfoQueryFlags.IgnoreCache).Status);
+
+ }
#region Util
protected void Checkout (string path, string url)
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/GitIgnore.txt b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/GitIgnore.txt
index 7bbcfed0d4..4e82d2703b 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/GitIgnore.txt
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/GitIgnore.txt
@@ -1,7 +1,7 @@
-#Autosave files
+# Autosave files
*~
-#build
+# build
[Oo]bj/
[Bb]in/
packages/
@@ -28,13 +28,13 @@ tarballs/
test-results/
Thumbs.db
-#Mac bundle stuff
+# Mac bundle stuff
*.dmg
*.app
-#resharper
+# resharper
*_Resharper.*
*.Resharper
-#dotCover
+# dotCover
*.dotCover
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditBranchDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditBranchDialog.cs
index 80fb850069..1d39fefa9c 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditBranchDialog.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/EditBranchDialog.cs
@@ -120,7 +120,7 @@ namespace MonoDevelop.VersionControl.Git
comboSources.Sensitive = checkTrack.Active;
buttonOk.Sensitive = entryName.Text.Length > 0;
if (oldName != entryName.Text && repo.GetBranches ().Any (b => b.FriendlyName == entryName.Text)) {
- labelError.Markup = "<span color='red'>" + GettextCatalog.GetString ("A branch with this name already exists") + "</span>";
+ labelError.Markup = "<span color='" + Ide.Gui.Styles.ErrorForegroundColor.ToHexString (false) + "'>" + GettextCatalog.GetString ("A branch with this name already exists") + "</span>";
labelError.Show ();
buttonOk.Sensitive = false;
} else if (!Reference.IsValidName ("refs/" + entryName.Text)) {
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 01e1c89b1d..0d200c536e 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
@@ -658,14 +658,14 @@ namespace MonoDevelop.VersionControl.Git
// TODO: Remove me once https://github.com/libgit2/libgit2/pull/3137 goes in.
if (string.Equals (e.Message, "early EOF", StringComparison.OrdinalIgnoreCase))
message = GettextCatalog.GetString ("Unable to authorize credentials for the repository.");
+ else if (e.Message.StartsWith ("Invalid Content-Type", StringComparison.OrdinalIgnoreCase))
+ message = GettextCatalog.GetString ("Not a valid git repository.");
else if (string.Equals (e.Message, "Received unexpected content-type", StringComparison.OrdinalIgnoreCase))
message = GettextCatalog.GetString ("Not a valid git repository.");
else
message = e.Message;
- if (monitor != null)
- monitor.ReportError (message, null);
- retry = false;
+ throw new VersionControlException (message);
}
} while (retry);
}
@@ -1444,7 +1444,19 @@ namespace MonoDevelop.VersionControl.Git
dstRepo.Unstage (localDestPath);
if (srcRepo == dstRepo) {
- srcRepo.Move (localSrcPath, localDestPath);
+ if (string.Equals (localSrcPath, localDestPath, StringComparison.OrdinalIgnoreCase)) {
+ try {
+ string temp = Path.GetTempFileName ();
+ File.Delete (temp);
+ File.Move (localSrcPath, temp);
+ DeleteFile (localSrcPath, true, monitor, false);
+ File.Move (temp, localDestPath);
+ } finally {
+ srcRepo.Stage (localDestPath);
+ }
+ } else {
+ srcRepo.Move (localSrcPath, localDestPath);
+ }
ClearCachedVersionInfo (localSrcPath, localDestPath);
} else {
File.Copy (localSrcPath, localDestPath);
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.ConflictResolutionDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.ConflictResolutionDialog.cs
index 92322244d3..2e5c2499d3 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.ConflictResolutionDialog.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.ConflictResolutionDialog.cs
@@ -31,7 +31,7 @@ namespace MonoDevelop.VersionControl.Git
this.labelTop = new global::Gtk.Label ();
this.labelTop.Name = "labelTop";
this.labelTop.Xalign = 0F;
- this.labelTop.LabelProp = "A merge conflict has been detected in file <b>SomeFile.txt</b>";
+ this.labelTop.LabelProp = global::Mono.Unix.Catalog.GetString ("A merge conflict has been detected in file <b>SomeFile.txt</b>");
this.labelTop.UseMarkup = true;
this.vbox2.Add (this.labelTop);
global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.labelTop]));
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.EditBranchDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.EditBranchDialog.cs
index a00846cbcf..af34ac1ab8 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.EditBranchDialog.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.EditBranchDialog.cs
@@ -68,7 +68,7 @@ namespace MonoDevelop.VersionControl.Git
this.labelError = new global::Gtk.Label ();
this.labelError.Name = "labelError";
this.labelError.Xalign = 0F;
- this.labelError.LabelProp = "Error";
+ this.labelError.LabelProp = global::Mono.Unix.Catalog.GetString ("Error");
this.table4.Add (this.labelError);
global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table4 [this.labelError]));
w4.TopAttach = ((uint)(1));
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/gui.stetic b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/gui.stetic
index 68cebdc794..d6a085da80 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/gui.stetic
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/gui.stetic
@@ -346,7 +346,7 @@
<widget class="Gtk.Label" id="labelTop">
<property name="MemberName" />
<property name="Xalign">0</property>
- <property name="LabelProp">A merge conflict has been detected in file &lt;b&gt;SomeFile.txt&lt;/b&gt;</property>
+ <property name="LabelProp" translatable="yes">A merge conflict has been detected in file &lt;b&gt;SomeFile.txt&lt;/b&gt;</property>
<property name="UseMarkup">True</property>
</widget>
<packing>
@@ -936,7 +936,7 @@
<widget class="Gtk.Label" id="labelError">
<property name="MemberName" />
<property name="Xalign">0</property>
- <property name="LabelProp">Error</property>
+ <property name="LabelProp" translatable="yes">Error</property>
</widget>
<packing>
<property name="TopAttach">1</property>
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 d46fe7313a..d6bb6b400f 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Tests/RepositoryTests.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Tests/RepositoryTests.cs
@@ -113,6 +113,13 @@ namespace VersionControl.Subversion.Unix.Tests
base.UnlocksEntities ();
}
+ [Test]
+ [Ignore ("Subversion does not support case renaming on non-Windows")]
+ public override void MoveAndMoveBackCaseOnly ()
+ {
+ base.MoveAndMoveBackCaseOnly ();
+ }
+
protected override void PostUnlock ()
{
string added = LocalPath + "testfile";
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs
index 45e98677d8..7f9cf78189 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs
@@ -1128,7 +1128,7 @@ namespace MonoDevelop.VersionControl.Subversion.Unix
return TextFile.ReadFile (sourcefile, data).Text;
// This outputs the contents of the base revision
// of a file to a stream.
- } catch (SubversionException e) {
+ } catch (SubversionException) {
// This occurs when we don't have a base file for
// the target file. We have no way of knowing if
// a file has a base version therefore this will do.
@@ -1253,11 +1253,11 @@ namespace MonoDevelop.VersionControl.Subversion.Unix
static string BytesToSize (long kbytes)
{
if (kbytes < 1024)
- return String.Format ("{0} KBytes", kbytes);
+ return GettextCatalog.GetString ("{0} KBytes", kbytes);
// 16 * 1024
if (kbytes < 16384)
- return String.Format ("{0:0.0} MBytes", kbytes / 1024.0);
- return String.Format ("{0} MBytes", kbytes / 1024);
+ return GettextCatalog.GetString ("{0:0.0} MBytes", kbytes / 1024.0);
+ return GettextCatalog.GetString ("{0} MBytes", kbytes / 1024);
}
ProgressData progressData;
@@ -1540,7 +1540,7 @@ namespace MonoDevelop.VersionControl.Subversion.Unix
try {
localpool = TryStartOperation (null);
CheckError (svn.client_upgrade (path, ctx, localpool));
- } catch (Exception e) {
+ } catch (Exception) {
tryParent = true;
} finally {
TryEndOperation (localpool);
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 b130d7937f..ba8b3d4d67 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
@@ -311,9 +311,14 @@ namespace MonoDevelop.VersionControl.Subversion
protected override void OnMoveFile (FilePath localSrcPath, FilePath localDestPath, bool force, ProgressMonitor monitor)
{
bool destIsVersioned = false;
-
- if (File.Exists (localDestPath))
+
+ if (File.Exists (localDestPath)) {
+ if (string.Equals (localSrcPath, localDestPath, StringComparison.OrdinalIgnoreCase)) {
+ Svn.Move (localSrcPath, localDestPath, true, monitor);
+ return;
+ }
throw new InvalidOperationException ("Cannot move file. Destination file already exist.");
+ }
if (IsVersioned (localDestPath)) {
// Revert to the original status
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/MonoDevelop.VersionControl.Subversion.Gui.SslServerTrustDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/MonoDevelop.VersionControl.Subversion.Gui.SslServerTrustDialog.cs
index 67bfa64504..b3b04540ee 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/MonoDevelop.VersionControl.Subversion.Gui.SslServerTrustDialog.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/MonoDevelop.VersionControl.Subversion.Gui.SslServerTrustDialog.cs
@@ -113,7 +113,7 @@ namespace MonoDevelop.VersionControl.Subversion.Gui
this.labelReason = new global::Gtk.Label ();
this.labelReason.Name = "labelReason";
this.labelReason.Xalign = 0F;
- this.labelReason.LabelProp = "<b>Reason</b>";
+ this.labelReason.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Reason</b>");
this.labelReason.UseMarkup = true;
this.vbox3.Add (this.labelReason);
global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.labelReason]));
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/gui.stetic b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/gui.stetic
index 8d0ac6267e..de2159f78f 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/gui.stetic
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/gtk-gui/gui.stetic
@@ -286,7 +286,7 @@
<widget class="Gtk.Label" id="labelReason">
<property name="MemberName" />
<property name="Xalign">0</property>
- <property name="LabelProp">&lt;b&gt;Reason&lt;/b&gt;</property>
+ <property name="LabelProp" translatable="yes">&lt;b&gt;Reason&lt;/b&gt;</property>
<property name="UseMarkup">True</property>
</widget>
<packing>
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 63c8b5dbcf..569406bad0 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
@@ -29,6 +29,7 @@ using System;
using MonoDevelop.Ide;
using MonoDevelop.Projects;
using MonoDevelop.Ide.Fonts;
+using MonoDevelop.Core;
namespace MonoDevelop.VersionControl
{
@@ -71,10 +72,10 @@ namespace MonoDevelop.VersionControl
if (format == null)
return;
ChangeLogWriter writer = new ChangeLogWriter ("./", uinfo);
- string msg = "My changes made additional changes. This is sample documentation.";
- writer.AddFile (msg, "./somedir/myfile.ext");
- writer.AddFile (msg, "./yourfile.ext");
- writer.AddFile ("Some additional changes on another file of the project.", "./otherfile.ext");
+ string msg = GettextCatalog.GetString ("My changes made additional changes. This is sample documentation.");
+ writer.AddFile (msg, GettextCatalog.GetString ("./somedir/myfile.ext"));
+ writer.AddFile (msg, GettextCatalog.GetString ("./yourfile.ext"));
+ writer.AddFile (GettextCatalog.GetString ("Some additional changes on another file of the project."), GettextCatalog.GetString ("./otherfile.ext"));
format.MaxColumns = 60;
writer.MessageFormat = format;
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 e5644ec15e..963c7bb25f 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
@@ -281,8 +281,7 @@ namespace MonoDevelop.VersionControl.Dialogs
Gtk.Application.Invoke (delegate {
if (ex != null) {
- store.AppendValues (piter, null, "ERROR: " + ex.Message, "", true);
- LoggingService.LogError (ex.ToString ());
+ LoggingService.LogError ("Failed to load connected repositories.", ex.ToString ());
}
else {
foreach (Repository rep in repos)
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 ce3798cbda..a1e0e76859 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
@@ -602,7 +602,7 @@ namespace MonoDevelop.VersionControl.Views
foreach (Revision rev in history) {
if (rev == annotation.Revision) {
if (tooltip && annotation.HasEmail)
- return String.Format ("Email: {0}{1}{2}", annotation.Email, Environment.NewLine, rev.Message);
+ return GettextCatalog.GetString ("Email: {0}{1}{2}", annotation.Email, Environment.NewLine, rev.Message);
return rev.Message;
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/CommonTextEditorOptions.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/CommonTextEditorOptions.cs
index 822dc26a77..158a59ef45 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/CommonTextEditorOptions.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/CommonTextEditorOptions.cs
@@ -160,14 +160,6 @@ namespace MonoDevelop.VersionControl.Views
}
}
- public bool UnderlineErrors {
- get {
- return MonoDevelop.Ide.Editor.DefaultSourceEditorOptions.Instance.UnderlineErrors;
- }
- set {
- }
- }
-
public override IndentStyle IndentStyle {
get {
return (IndentStyle)MonoDevelop.Ide.Editor.DefaultSourceEditorOptions.Instance.IndentStyle;
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 af0744795b..46f4d1d437 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
@@ -719,7 +719,7 @@ namespace MonoDevelop.VersionControl.Views
} else
currentRevisionShortened = false;
- labelRevision.Text = GettextCatalog.GetString ("revision: {0}", rev);
+ labelRevision.Text = GettextCatalog.GetString ("Revision: {0}", rev);
textviewDetails.Buffer.Text = d.Message;
if (select) {
@@ -789,7 +789,7 @@ namespace MonoDevelop.VersionControl.Views
{
if (currentRevisionShortened) {
Revision d = SelectedRevision;
- labelRevision.Text = GettextCatalog.GetString ("revision: {0}", d.Name);
+ labelRevision.Text = GettextCatalog.GetString ("Revision: {0}", d.Name);
currentRevisionShortened = false;
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs
index 68592fd2b0..68bc41da23 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs
@@ -1088,7 +1088,8 @@ namespace MonoDevelop.VersionControl.Views
Gtk.Application.Invoke (delegate { if (!disposed) FillDifs (); });
});
} else if (info.Exception != null) {
- text = new [] { GettextCatalog.GetString ("Could not get diff information. ") + info.Exception.Message };
+ text = new [] { GettextCatalog.GetString ("Could not get diff information. ") };
+ LoggingService.LogError ("Could not get diff information", info.Exception);
} else if (info.Diff.Value == null || string.IsNullOrEmpty (info.Diff.Value.Content)) {
text = new [] { GettextCatalog.GetString ("No differences found") };
} else {
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/Styles.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/Styles.cs
index ab82ba054d..2024cb1548 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/Styles.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/Styles.cs
@@ -79,7 +79,7 @@ namespace MonoDevelop.VersionControl
public static void LoadStyles ()
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light) {
BlameView = new BlameViewStyle {
AnnotationMarkColor = Color.FromName ("#e5f1ff"),
AnnotationMarkModifiedColor = Color.FromName ("#ffff00"),
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj
index af01aa4c91..6623bff488 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj
@@ -981,6 +981,7 @@
<Compile Include="MonoDevelop.VersionControl.Views\CommonTextEditorOptions.cs" />
<Compile Include="MonoDevelop.VersionControl.Views\BaseView.cs" />
<Compile Include="MonoDevelop.VersionControl.Views\Styles.cs" />
+ <Compile Include="MonoDevelop.VersionControl\VersionControlInitializer.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Makefile.am" />
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UrlBasedRepositoryEditor.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UrlBasedRepositoryEditor.cs
index b918d0707e..45cefe96fa 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UrlBasedRepositoryEditor.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/UrlBasedRepositoryEditor.cs
@@ -3,7 +3,8 @@ using System;
using System.Collections.Generic;
using System.Linq;
using MonoDevelop.Components;
-
+using MonoDevelop.Core;
+
namespace MonoDevelop.VersionControl
{
public partial class UrlBasedRepositoryEditor : Gtk.Bin, IRepositoryEditor
@@ -16,6 +17,10 @@ namespace MonoDevelop.VersionControl
public UrlBasedRepositoryEditor (UrlBasedRepository repo)
{
Build ();
+
+ labelError.Markup = "<small><span color='" + Ide.Gui.Styles.ErrorForegroundColor.ToHexString (false) + "'>"
+ + GettextCatalog.GetString ("Invalid URL") + "</span></small>";
+
protocols = new List<string> (repo.SupportedProtocols);
protocols.AddRange (repo.SupportedNonUrlProtocols);
@@ -54,11 +59,17 @@ namespace MonoDevelop.VersionControl
return false;
var tokens = url.Split (new [] { ':' }, 2);
+ if (tokens.Length < 2)
+ return false;
+
if (!Uri.IsWellFormedUriString (tokens [0], UriKind.RelativeOrAbsolute) ||
!Uri.IsWellFormedUriString (tokens [1], UriKind.RelativeOrAbsolute))
return false;
- var userAndHost = tokens [0].Split ('@');
+ var userAndHost = tokens [0].Split (new [] { '@' }, 2);
+ if (userAndHost.Length < 2)
+ return false;
+
repositoryUserEntry.Text = userAndHost [0];
repositoryServerEntry.Text = userAndHost [1];
repositoryPortSpin.Value = 22;
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlInitializer.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlInitializer.cs
new file mode 100644
index 0000000000..974d2b3b1a
--- /dev/null
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlInitializer.cs
@@ -0,0 +1,39 @@
+//
+// VersionControlInitializer.cs
+//
+// Author:
+// Marius Ungureanu <marius.ungureanu@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin, Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using MonoDevelop.Components.Commands;
+
+namespace MonoDevelop.VersionControl
+{
+ public class VersionControlInitializer : CommandHandler
+ {
+ protected override void Run ()
+ {
+ VersionControlService.Initialize ();
+ }
+ }
+}
+
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 e85f6206de..d64ab26073 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs
@@ -91,6 +91,11 @@ namespace MonoDevelop.VersionControl
};
AddinManager.AddExtensionNodeHandler ("/MonoDevelop/VersionControl/VersionControlSystems", OnExtensionChanged);
+ }
+
+ // This exists for the sole purpose of calling the static constructor.
+ public static void Initialize ()
+ {
}
static void OnExtensionChanged (object s, ExtensionNodeEventArgs args)
@@ -181,8 +186,9 @@ namespace MonoDevelop.VersionControl
switch (status & VersionStatus.LocalChangesMask) {
case VersionStatus.Modified:
+ return GettextCatalog.GetString ("Modified");
case VersionStatus.ScheduledReplace:
- return GettextCatalog.GetString ("Modified");
+ return GettextCatalog.GetString ("Renamed");
case VersionStatus.Conflicted:
return GettextCatalog.GetString ("Conflict");
case VersionStatus.ScheduledAdd:
@@ -610,7 +616,7 @@ namespace MonoDevelop.VersionControl
Pad outPad = IdeApp.Workbench.ProgressMonitors.GetPadForMonitor (monitor);
AggregatedProgressMonitor mon = new AggregatedProgressMonitor (monitor);
- mon.AddSlaveMonitor (IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor (operation, icon, true, true, false, outPad));
+ mon.AddFollowerMonitor (IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor (operation, icon, true, true, false, outPad));
return mon;
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlTask.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlTask.cs
index 1f0f56c7c5..295dee069d 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlTask.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlTask.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading;
+using System.Threading.Tasks;
using Gtk;
using MonoDevelop.Core;
@@ -9,7 +10,6 @@ namespace MonoDevelop.VersionControl
internal abstract class VersionControlTask
{
ProgressMonitor tracker;
- ThreadNotify threadnotify;
protected VersionControlOperationType OperationType { get; set; }
@@ -27,7 +27,6 @@ namespace MonoDevelop.VersionControl
protected VersionControlTask()
{
OperationType = VersionControlOperationType.Other;
- threadnotify = new ThreadNotify(new ReadyEvent(Wakeup));
}
protected ProgressMonitor Monitor {
@@ -42,21 +41,25 @@ namespace MonoDevelop.VersionControl
public void Start() {
tracker = CreateProgressMonitor ();
tracker.BeginTask(GetDescription(), 1);
- ThreadPool.QueueUserWorkItem (BackgroundWorker);
+
+ // Sync invoke background worker which will end up doing async invoke on the internal run.
+ BackgroundWorker ();
}
- void BackgroundWorker (object state)
+ async void BackgroundWorker ()
{
try {
- Run();
+ await Task.Run (() => Run ());
} catch (DllNotFoundException e) {
string msg = GettextCatalog.GetString ("The operation could not be completed because a shared library is missing: ");
- tracker.ReportError(msg + e.Message, null);
+ tracker.ReportError (msg + e.Message, null);
+ LoggingService.LogError ("Version Control command failed: ", e);
} catch (Exception e) {
string msg = GettextCatalog.GetString ("Version control operation failed: ");
tracker.ReportError (msg, e);
- } finally {
- threadnotify.WakeupMain();
+ LoggingService.LogError ("Version Control command failed: ", e);
+ } finally {
+ Wakeup ();
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml b/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml
index 5606c64966..11f861310e 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml
@@ -321,6 +321,7 @@
<Extension path = "/MonoDevelop/Ide/StartupHandlers">
<Class class = "MonoDevelop.VersionControl.Views.SubviewAttachmentHandler"/>
+ <Class class = "MonoDevelop.VersionControl.VersionControlInitializer"/>
</Extension>
<Extension path = "/MonoDevelop/VersionControl/BlameView/ContextMenu">
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.UrlBasedRepositoryEditor.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.UrlBasedRepositoryEditor.cs
index 8726b24f84..e4f7b47cff 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.UrlBasedRepositoryEditor.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.UrlBasedRepositoryEditor.cs
@@ -157,7 +157,6 @@ namespace MonoDevelop.VersionControl
this.labelError = new global::Gtk.Label ();
this.labelError.Name = "labelError";
this.labelError.Xalign = 0F;
- this.labelError.LabelProp = global::Mono.Unix.Catalog.GetString ("<small><span color=\'red\'>Invalid URL</span></small>");
this.labelError.UseMarkup = true;
this.table1.Add (this.labelError);
global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1 [this.labelError]));
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Views.LogWidget.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Views.LogWidget.cs
index 6f886546c3..d5a858599b 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Views.LogWidget.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Views.LogWidget.cs
@@ -116,7 +116,7 @@ namespace MonoDevelop.VersionControl.Views
this.labelAuthor = new global::Gtk.Label ();
this.labelAuthor.Name = "labelAuthor";
this.labelAuthor.Xalign = 0F;
- this.labelAuthor.LabelProp = "Author";
+ this.labelAuthor.LabelProp = global::Mono.Unix.Catalog.GetString ("Author");
this.labelAuthor.Selectable = true;
this.hbox2.Add (this.labelAuthor);
global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.labelAuthor]));
@@ -127,7 +127,7 @@ namespace MonoDevelop.VersionControl.Views
this.labelRevision = new global::Gtk.Label ();
this.labelRevision.Name = "labelRevision";
this.labelRevision.Xalign = 1F;
- this.labelRevision.LabelProp = "Revision";
+ this.labelRevision.LabelProp = global::Mono.Unix.Catalog.GetString ("Revision");
this.labelRevision.Selectable = true;
this.hbox2.Add (this.labelRevision);
global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.labelRevision]));
@@ -141,7 +141,7 @@ namespace MonoDevelop.VersionControl.Views
this.labelDate = new global::Gtk.Label ();
this.labelDate.Name = "labelDate";
this.labelDate.Xalign = 0F;
- this.labelDate.LabelProp = "Date";
+ this.labelDate.LabelProp = global::Mono.Unix.Catalog.GetString ("Date");
this.labelDate.Selectable = true;
this.vbox5.Add (this.labelDate);
global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.labelDate]));
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic
index 998958b1e3..53dcc5935a 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic
@@ -909,7 +909,6 @@
<property name="MemberName" />
<property name="Visible">False</property>
<property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">&lt;small&gt;&lt;span color='red'&gt;Invalid URL&lt;/span&gt;&lt;/small&gt;</property>
<property name="UseMarkup">True</property>
</widget>
<packing>
@@ -1687,7 +1686,7 @@
<widget class="Gtk.Label" id="labelAuthor">
<property name="MemberName" />
<property name="Xalign">0</property>
- <property name="LabelProp">Author</property>
+ <property name="LabelProp" translatable="yes">Author</property>
<property name="Selectable">True</property>
</widget>
<packing>
@@ -1701,7 +1700,7 @@
<widget class="Gtk.Label" id="labelRevision">
<property name="MemberName" />
<property name="Xalign">1</property>
- <property name="LabelProp">Revision</property>
+ <property name="LabelProp" translatable="yes">Revision</property>
<property name="Selectable">True</property>
<signal name="ButtonPressEvent" handler="OnLabelRevisionButtonPressEvent" />
</widget>
@@ -1722,7 +1721,7 @@
<widget class="Gtk.Label" id="labelDate">
<property name="MemberName" />
<property name="Xalign">0</property>
- <property name="LabelProp">Date</property>
+ <property name="LabelProp" translatable="yes">Date</property>
<property name="Selectable">True</property>
</widget>
<packing>
diff --git a/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs b/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs
index 5633892e23..cd1fffbf39 100644
--- a/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs
+++ b/main/src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs
@@ -692,8 +692,8 @@ namespace SubversionAddinWindows
static string BytesToSize (long kbytes)
{
if (kbytes < 1024)
- return String.Format ("{0} KBytes", kbytes);
- return String.Format ("{0:0.00} MBytes", kbytes / 1024.0);
+ return GettextCatalog.GetString ("{0} KBytes", kbytes);
+ return GettextCatalog.GetString ("{0:0.00} MBytes", kbytes / 1024.0);
}
static void ProgressWork (SvnProgressEventArgs e, ProgressData data, ProgressMonitor monitor)
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/ComboMenu.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/ComboMenu.cs
index 2a86ddfa95..b8e1afc933 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/ComboMenu.cs
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/ComboMenu.cs
@@ -145,6 +145,9 @@ namespace WindowsPlatform.MainToolbar
model = value;
var dropMenu = DropMenu;
+ var open = dropMenu.IsSubmenuOpen;
+ if (open)
+ dropMenu.IsSubmenuOpen = false;
foreach (MenuItem item in dropMenu.Items)
item.Click -= OnMenuItemClicked;
@@ -157,6 +160,8 @@ namespace WindowsPlatform.MainToolbar
IsEnabled = Focusable = IsHitTestVisible = dropMenu.Items.Count > 1;
if (count == 0)
DropMenuText = "Default";
+
+ dropMenu.IsSubmenuOpen = open;
}
}
@@ -238,13 +243,20 @@ namespace WindowsPlatform.MainToolbar
set
{
model = value;
-
+
+ var open = DropMenu.IsSubmenuOpen;
+ if (open)
+ DropMenu.IsSubmenuOpen = false;
FillSource (DropMenu.Items, value);
+
+
int count = DropMenu.Items.Count;
IsEnabled = Focusable = IsHitTestVisible = count > 1;
if (count == 0)
DropMenuText = "Default";
+
+ DropMenu.IsSubmenuOpen = open;
}
}
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/StatusBar.xaml.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/StatusBar.xaml.cs
index 37de00c61b..652b78d1fe 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/StatusBar.xaml.cs
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/StatusBar.xaml.cs
@@ -74,6 +74,7 @@ namespace WindowsPlatform.MainToolbar
};
TaskService.Errors.TasksAdded += updateHandler;
TaskService.Errors.TasksRemoved += updateHandler;
+ BrandingService.ApplicationNameChanged += ApplicationNameChanged;
StatusText.ToolTipOpening += (o, e) => {
e.Handled = !TextTrimmed ();
@@ -119,6 +120,7 @@ namespace WindowsPlatform.MainToolbar
{
TaskService.Errors.TasksAdded -= updateHandler;
TaskService.Errors.TasksRemoved -= updateHandler;
+ BrandingService.ApplicationNameChanged -= ApplicationNameChanged;
}
public void EndProgress ()
@@ -223,7 +225,14 @@ namespace WindowsPlatform.MainToolbar
public void ShowReady ()
{
Status = StatusBarStatus.Ready;
- ShowMessage (BrandingService.StatusSteadyIconId, BrandingService.ApplicationName);
+ ShowMessage (BrandingService.StatusSteadyIconId, BrandingService.ApplicationLongName);
+ SetMessageSourcePad (null);
+ }
+
+ void ApplicationNameChanged (object sender, EventArgs e)
+ {
+ if (Status == StatusBarStatus.Ready)
+ ShowReady ();
}
public StatusBarIcon ShowStatusIcon (Xwt.Drawing.Image pixbuf)
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/WPFTitlebar.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/WPFTitlebar.cs
new file mode 100644
index 0000000000..d075c0cdbc
--- /dev/null
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/WPFTitlebar.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using MonoDevelop.Components.Windows;
+
+namespace WindowsPlatform.MainToolbar
+{
+ public class WPFTitlebar : GtkWPFWidget
+ {
+ TitleBar titlebar;
+
+ public WPFTitlebar (TitleBar titlebar) : base (titlebar)
+ {
+ this.titlebar = titlebar;
+ HeightRequest = System.Windows.Forms.SystemInformation.CaptionHeight;
+ }
+
+ protected override void RepositionWpfWindow()
+ {
+ int scale = (int)MonoDevelop.Components.GtkWorkarounds.GetScaleFactor (this);
+
+ RepositionWpfWindow (scale, 1);
+ }
+ }
+}
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/WPFToolbar.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/WPFToolbar.cs
index 5182f66273..186432a14e 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/WPFToolbar.cs
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/WPFToolbar.cs
@@ -68,7 +68,7 @@ namespace WindowsPlatform.MainToolbar
};
toolbar.SearchBar.SearchBar.TextChanged += (o, e) => {
- if (string.IsNullOrEmpty (SearchText) || SearchText == SearchPlaceholderMessage)
+ if (SearchText == SearchPlaceholderMessage)
return;
if (SearchEntryChanged != null)
@@ -102,7 +102,13 @@ namespace WindowsPlatform.MainToolbar
};
}
- void SendKeyPress(KeyEventArgs ka)
+ protected override void RepositionWpfWindow()
+ {
+ int scale = (int)MonoDevelop.Components.GtkWorkarounds.GetScaleFactor(this);
+ RepositionWpfWindow (scale, scale);
+ }
+
+ void SendKeyPress(KeyEventArgs ka)
{
if (SearchEntryKeyPressed != null)
SearchEntryKeyPressed(this, ka);
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/Styles.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/Styles.cs
index 400adbb662..47abd820db 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/Styles.cs
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/Styles.cs
@@ -271,7 +271,7 @@ namespace WindowsPlatform
public static void LoadStyles ()
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light) {
MainToolbarBackgroundBrush = new SolidColorBrush (ColorFromHex("FFFFFF", 0));
MainToolbarForegroundBrush = new SolidColorBrush (ColorFromHex("222222"));
MainToolbarDisabledForegroundBrush = new SolidColorBrush (ColorFromHex("808080"));
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/Win32.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/Win32.cs
index b6476ea979..a53d46a7f6 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/Win32.cs
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/Win32.cs
@@ -32,7 +32,19 @@ namespace CustomControls.OS
[DllImport (Win32.SHLWAPI, SetLastError = true, CharSet = CharSet.Unicode)]
public static extern int AssocQueryStringW (AssociationFlags flags, AssociationString str, string assoc, string extra, StringBuilder outBuffer, ref int outBufferSize);
- }
+
+ [DllImport (Win32.USER32)]
+ [return: MarshalAs (UnmanagedType.Bool)]
+ public static extern bool GetWindowPlacement (IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
+
+ [DllImport (Win32.USER32)]
+ [return: MarshalAs (UnmanagedType.Bool)]
+ public static extern bool SetWindowPlacement (IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
+
+ public const int SW_SHOWNORMAL = 1;
+ public const int SW_SHOWMINIMIZED = 2;
+ public const int SW_SHOWMAXIMIZED = 3;
+ }
[Flags]
public enum AssociationFlags {
@@ -75,4 +87,14 @@ namespace CustomControls.OS
SupportedUriProtocols,
MaxString
}
+
+ public struct WINDOWPLACEMENT
+ {
+ public int length;
+ public int flags;
+ public int showCmd;
+ public System.Drawing.Point ptMinPosition;
+ public System.Drawing.Point ptMaxPosition;
+ public System.Drawing.Rectangle rcNormalPosition;
+ }
}
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.cs b/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.cs
index ef14841f3f..96aabc224b 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.cs
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.cs
@@ -88,10 +88,9 @@ namespace MonoDevelop.Platform
const int WM_SYSCHAR = 0x0106;
internal override void AttachMainToolbar (Gtk.VBox parent, Components.MainToolbar.IMainToolbarView toolbar)
{
- titleBar = new TitleBar ();
- var topMenu = new GtkWPFWidget (titleBar) {
- HeightRequest = System.Windows.Forms.SystemInformation.CaptionHeight,
- };
+ titleBar = new TitleBar ();
+ var topMenu = new WPFTitlebar (titleBar);
+
//commandManager.IncompleteKeyPressed += (sender, e) => {
// if (e.Key == Gdk.Key.Alt_L) {
// Keyboard.Focus(titleBar.DockTitle.Children[0]);
@@ -134,6 +133,29 @@ namespace MonoDevelop.Platform
};
}
#endregion
+
+ public override bool GetIsFullscreen (Components.Window window)
+ {
+ WINDOWPLACEMENT lpwndpl = new WINDOWPLACEMENT ();
+ lpwndpl.length = Marshal.SizeOf (lpwndpl);
+
+ Gtk.Window controlWindow = window;
+ IntPtr handle = GdkWin32.HgdiobjGet (controlWindow.GdkWindow);
+ Win32.GetWindowPlacement (handle, ref lpwndpl);
+ return lpwndpl.showCmd == Win32.SW_SHOWMAXIMIZED;
+ }
+
+ public override void SetIsFullscreen (Components.Window window, bool isFullscreen)
+ {
+ WINDOWPLACEMENT lpwndpl = new WINDOWPLACEMENT ();
+ lpwndpl.length = Marshal.SizeOf (lpwndpl);
+
+ Gtk.Window controlWindow = window;
+ IntPtr handle = GdkWin32.HgdiobjGet (controlWindow.GdkWindow);
+ Win32.GetWindowPlacement (handle, ref lpwndpl);
+ lpwndpl.showCmd = isFullscreen ? Win32.SW_SHOWMAXIMIZED : Win32.SW_SHOWNORMAL;
+ Win32.SetWindowPlacement (handle, ref lpwndpl);
+ }
internal static Xwt.Toolkit WPFToolkit;
diff --git a/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj b/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj
index 13557731e3..c4ab55eb00 100644
--- a/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj
+++ b/main/src/addins/WindowsPlatform/WindowsPlatform/WindowsPlatform.csproj
@@ -119,6 +119,7 @@
<Compile Include="MainToolbar\Toolbar.xaml.cs">
<DependentUpon>ToolBar.xaml</DependentUpon>
</Compile>
+ <Compile Include="MainToolbar\WPFTitlebar.cs" />
<Compile Include="MainToolbar\WPFToolbar.cs" />
<Compile Include="Win32.cs" />
<Compile Include="WindowsPlatform.cs" />
diff --git a/main/src/addins/Xml/Completion/XmlCompletionData.cs b/main/src/addins/Xml/Completion/XmlCompletionData.cs
index 082283e33c..f84238579c 100644
--- a/main/src/addins/Xml/Completion/XmlCompletionData.cs
+++ b/main/src/addins/Xml/Completion/XmlCompletionData.cs
@@ -30,13 +30,10 @@ using System;
using MonoDevelop.Core;
using MonoDevelop.Ide.Gui.Content;
using MonoDevelop.Ide;
-using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Commands;
-using MonoDevelop.Ide.Gui.Content;
using MonoDevelop.Xml.Editor;
using MonoDevelop.Ide.Editor.Extension;
using MonoDevelop.Ide.Editor;
-using System.Threading.Tasks;
namespace MonoDevelop.Xml.Completion
{
@@ -110,13 +107,13 @@ namespace MonoDevelop.Xml.Completion
}
}
- public override async Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
if (XmlEditorOptions.AutoInsertFragments && dataType == DataType.XmlAttribute) {
//This temporary variable is needed because
//base.InsertCompletionText sets window.CompletionWidget to null
var completionWidget = window.CompletionWidget;
- ka = await base.InsertCompletionText (window, ka, descriptor);
+ base.InsertCompletionText (window, ref ka, descriptor);
if (completionWidget is ITextEditorImpl) {
((ITextEditorImpl)completionWidget).EditorExtension.Editor.StartSession (new SkipCharSession ('"'));
}
@@ -125,9 +122,8 @@ namespace MonoDevelop.Xml.Completion
//otherwise code calling InsertCompletionText will close completion window created by this command
Application.Invoke ((s,e) => IdeApp.CommandService.DispatchCommand (TextEditorCommands.ShowCompletionWindow));
ka &= ~KeyActions.CloseWindow;
- return ka;
} else {
- return await base.InsertCompletionText (window, ka, descriptor);
+ base.InsertCompletionText (window, ref ka, descriptor);
}
}
diff --git a/main/src/addins/Xml/Completion/XmlTagCompletionData.cs b/main/src/addins/Xml/Completion/XmlTagCompletionData.cs
index f45c9377b5..e0d08b5ef2 100644
--- a/main/src/addins/Xml/Completion/XmlTagCompletionData.cs
+++ b/main/src/addins/Xml/Completion/XmlTagCompletionData.cs
@@ -32,8 +32,7 @@ using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Gui.Content;
using MonoDevelop.Core;
using MonoDevelop.Ide.Editor.Extension;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.Xml.Completion
{
@@ -68,7 +67,7 @@ namespace MonoDevelop.Xml.Completion
get { return element; }
}
- public override Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
var buf = window.CompletionWidget;
if (buf != null) {
@@ -79,8 +78,7 @@ namespace MonoDevelop.Xml.Completion
// Move caret into the middle of the tags
buf.CaretOffset = codeCompletionContext.TriggerOffset + cursorOffset;
- }
- return Task.FromResult (ka);
+ }
}
}
}
diff --git a/main/src/addins/Xml/Editor/BaseXmlEditorExtension.cs b/main/src/addins/Xml/Editor/BaseXmlEditorExtension.cs
index 36dcab9dc4..e135de5e60 100644
--- a/main/src/addins/Xml/Editor/BaseXmlEditorExtension.cs
+++ b/main/src/addins/Xml/Editor/BaseXmlEditorExtension.cs
@@ -234,11 +234,11 @@ namespace MonoDevelop.Xml.Editor
{
}
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
if (Editor.Options.IndentStyle == IndentStyle.Smart) {
var newLine = Editor.CaretLine + 1;
- var ret = await base.KeyPress (descriptor);
+ var ret = base.KeyPress (descriptor);
if (descriptor.SpecialKey == SpecialKey.Return && Editor.CaretLine == newLine) {
string indent = GetLineIndent (newLine);
var oldIndent = Editor.GetLineIndent (newLine);
@@ -251,7 +251,7 @@ namespace MonoDevelop.Xml.Editor
}
return ret;
}
- return await base.KeyPress (descriptor);
+ return base.KeyPress (descriptor);
}
#region Code completion
diff --git a/main/src/addins/Xml/Editor/XmlEditorService.cs b/main/src/addins/Xml/Editor/XmlEditorService.cs
index 4b388eb528..d0dd8584c1 100644
--- a/main/src/addins/Xml/Editor/XmlEditorService.cs
+++ b/main/src/addins/Xml/Editor/XmlEditorService.cs
@@ -33,11 +33,7 @@ using MonoDevelop.Components;
using Gtk;
using MonoDevelop.Components.Extensions;
using MonoDevelop.Ide.Editor;
-using System.Xml.XPath;
-using System.Xml.Xsl;
-using MonoDevelop.Components;
-using MonoDevelop.Components.Extensions;
using MonoDevelop.Core;
using MonoDevelop.Ide;
using MonoDevelop.Ide.Gui;
diff --git a/main/src/addins/Xml/Editor/XmlTextEditorExtension.cs b/main/src/addins/Xml/Editor/XmlTextEditorExtension.cs
index cc7b6447df..6551965815 100644
--- a/main/src/addins/Xml/Editor/XmlTextEditorExtension.cs
+++ b/main/src/addins/Xml/Editor/XmlTextEditorExtension.cs
@@ -38,7 +38,6 @@ using MonoDevelop.Ide;
using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Gui.Content;
using MonoDevelop.Ide.Tasks;
-using MonoDevelop.Ide;
using MonoDevelop.Ide.CodeFormatting;
using MonoDevelop.Ide.Editor;
using MonoDevelop.Xml.Completion;
@@ -611,16 +610,17 @@ namespace MonoDevelop.Xml.Editor
#region Smart indent
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
bool result;
+
if (Editor.Options.IndentStyle == IndentStyle.Smart && descriptor.SpecialKey == SpecialKey.Return) {
- result = await base.KeyPress (descriptor);
+ result = base.KeyPress (descriptor);
SmartIndentLine (Editor.CaretLine);
return result;
}
- return await base.KeyPress (descriptor);
+ return base.KeyPress (descriptor);
}
void SmartIndentLine (int line)
@@ -711,7 +711,7 @@ namespace MonoDevelop.Xml.Editor
} catch (Exception ex) {
LoggingService.LogError ("Could not open document.", ex);
- MessageService.ShowException (ex, "Could not open document.");
+ MessageService.ShowError ("Could not open document.", ex);
}
}
}
@@ -747,7 +747,7 @@ namespace MonoDevelop.Xml.Editor
}
} catch (Exception ex) {
MonoDevelop.Core.LoggingService.LogError ("Could not open document.", ex);
- MessageService.ShowException (ex, "Could not open document.");
+ MessageService.ShowError ("Could not open document.", ex);
}
}
diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs
index fc3c93dfab..13d37ef823 100644
--- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs
+++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Document/TextDocument.cs
@@ -1060,6 +1060,7 @@ namespace Mono.TextEditor
readonly object syncObject = new object();
CancellationTokenSource foldSegmentSrc;
+ object foldSegmentTaskLock = new object ();
Task foldSegmentTask;
public void UpdateFoldSegments (List<FoldSegment> newSegments, bool startTask = false, bool useApplicationInvoke = false, CancellationToken masterToken = default(CancellationToken))
@@ -1067,38 +1068,39 @@ namespace Mono.TextEditor
if (newSegments == null) {
return;
}
-
- InterruptFoldWorker ();
- bool update;
- if (!startTask) {
- var newFoldedSegments = UpdateFoldSegmentWorker (newSegments, out update);
- if (useApplicationInvoke) {
- Gtk.Application.Invoke (delegate {
+ lock (foldSegmentTaskLock) {
+ InterruptFoldWorker ();
+ bool update;
+ if (!startTask) {
+ var newFoldedSegments = UpdateFoldSegmentWorker (newSegments, out update);
+ if (useApplicationInvoke) {
+ Gtk.Application.Invoke (delegate {
+ foldedSegments = newFoldedSegments;
+ InformFoldTreeUpdated ();
+ });
+ } else {
foldedSegments = newFoldedSegments;
InformFoldTreeUpdated ();
- });
- } else {
- foldedSegments = newFoldedSegments;
- InformFoldTreeUpdated ();
- }
- return;
- }
- foldSegmentSrc = new CancellationTokenSource ();
- masterToken.Register (InterruptFoldWorker);
- var token = foldSegmentSrc.Token;
- foldSegmentTask = Task.Factory.StartNew (delegate {
- var segments = UpdateFoldSegmentWorker (newSegments, out update, token);
- if (token.IsCancellationRequested)
+ }
return;
- Gtk.Application.Invoke (delegate {
+ }
+ foldSegmentSrc = new CancellationTokenSource ();
+ masterToken.Register (InterruptFoldWorker);
+ var token = foldSegmentSrc.Token;
+ foldSegmentTask = Task.Factory.StartNew (delegate {
+ var segments = UpdateFoldSegmentWorker (newSegments, out update, token);
if (token.IsCancellationRequested)
return;
foldedSegments = segments;
- InformFoldTreeUpdated ();
- if (update)
- CommitUpdateAll ();
- });
- }, token);
+ Gtk.Application.Invoke (delegate {
+ if (token.IsCancellationRequested)
+ return;
+ InformFoldTreeUpdated ();
+ if (update)
+ CommitUpdateAll ();
+ });
+ }, token);
+ }
}
void RemoveFolding (FoldSegment folding)
@@ -1180,7 +1182,13 @@ namespace Mono.TextEditor
public void WaitForFoldUpdateFinished ()
{
if (foldSegmentTask != null) {
- foldSegmentTask.Wait (5000);
+ try {
+ foldSegmentTask.Wait (5000);
+ } catch (AggregateException e) {
+ e.Flatten ().Handle (x => x is OperationCanceledException);
+ } catch (OperationCanceledException) {
+
+ }
foldSegmentTask = null;
}
}
@@ -1269,28 +1277,16 @@ namespace Mono.TextEditor
public void EnsureOffsetIsUnfolded (int offset)
{
- bool needUpdate = false;
foreach (FoldSegment fold in GetFoldingsFromOffset (offset).Where (f => f.IsFolded && f.Offset < offset && offset < f.EndOffset)) {
- needUpdate = true;
fold.IsFolded = false;
}
- if (needUpdate) {
- RequestUpdate (new UpdateAll ());
- CommitDocumentUpdate ();
- }
}
public void EnsureSegmentIsUnfolded (int offset, int length)
{
- bool needUpdate = false;
foreach (var fold in GetFoldingContaining (offset, length).Where (f => f.IsFolded)) {
- needUpdate = true;
fold.IsFolded = false;
}
- if (needUpdate) {
- RequestUpdate (new UpdateAll ());
- CommitDocumentUpdate ();
- }
}
internal void InformFoldTreeUpdated ()
@@ -1302,13 +1298,30 @@ namespace Mono.TextEditor
public event EventHandler FoldTreeUpdated;
HashSet<FoldSegment> foldedSegments = new HashSet<FoldSegment> ();
+
public IEnumerable<FoldSegment> FoldedSegments {
get {
return foldedSegments;
}
}
+
internal void InformFoldChanged (FoldSegmentEventArgs args)
{
+ lock (foldSegmentTaskLock) {
+ if (foldSegmentTask != null) {
+ foldSegmentTask.ContinueWith (delegate {
+ Gtk.Application.Invoke (delegate {
+ InternalInformFoldChanged (args);
+ });
+ });
+ } else {
+ InternalInformFoldChanged (args);
+ }
+ }
+ }
+
+ void InternalInformFoldChanged (FoldSegmentEventArgs args)
+ {
if (args.FoldSegment.IsFolded) {
foldedSegments.Add (args.FoldSegment);
} else {
@@ -1318,7 +1331,7 @@ namespace Mono.TextEditor
if (handler != null)
handler (this, args);
}
-
+
public event EventHandler<FoldSegmentEventArgs> Folded;
#endregion
diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/GtkWorkarounds.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/GtkWorkarounds.cs
index c9cfe5fc9d..828daf8b7e 100644
--- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/GtkWorkarounds.cs
+++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/GtkWorkarounds.cs
@@ -1200,8 +1200,9 @@ namespace Mono.TextEditor
public static double GetScaleFactor ()
{
return GetScaleFactor (Gdk.Screen.Default, 0);
- }
-
+ }
+
+ /*
public static double GetPixelScale ()
{
if (Platform.IsWindows)
@@ -1216,8 +1217,9 @@ namespace Mono.TextEditor
return (int)(size * scale);
}
-
- public static Gdk.Pixbuf RenderIcon (this Gtk.IconSet iconset, Gtk.Style style, Gtk.TextDirection direction, Gtk.StateType state, Gtk.IconSize size, Gtk.Widget widget, string detail, double scale)
+ */
+
+ public static Gdk.Pixbuf RenderIcon (this Gtk.IconSet iconset, Gtk.Style style, Gtk.TextDirection direction, Gtk.StateType state, Gtk.IconSize size, Gtk.Widget widget, string detail, double scale)
{
if (scale == 1d)
return iconset.RenderIcon (style, direction, state, size, widget, detail);
diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/MonoTextEditor.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/MonoTextEditor.cs
index 68d3b04152..381d056ea7 100644
--- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/MonoTextEditor.cs
+++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/MonoTextEditor.cs
@@ -36,8 +36,7 @@ using Mono.TextEditor.Theatrics;
using Gdk;
using Gtk;
-using System.Threading.Tasks;
-
+
namespace Mono.TextEditor
{
[System.ComponentModel.Category("Mono.TextEditor")]
@@ -877,10 +876,10 @@ namespace Mono.TextEditor
/// <remarks>
/// The Key may be null if it has been handled by the IMContext. In such cases, the char is the value.
/// </remarks>
- protected internal virtual Task<bool> OnIMProcessedKeyPressEvent (Gdk.Key key, uint ch, Gdk.ModifierType state)
+ protected internal virtual bool OnIMProcessedKeyPressEvent (Gdk.Key key, uint ch, Gdk.ModifierType state)
{
SimulateKeyPress (key, ch, state);
- return Task.FromResult (true);
+ return true;
}
public void SimulateKeyPress (Gdk.Key key, uint unicodeChar, ModifierType modifier)
diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextArea.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextArea.cs
index ef32ab7282..269cfad5d3 100644
--- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextArea.cs
+++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextArea.cs
@@ -299,8 +299,6 @@ namespace Mono.TextEditor
// This is required to properly handle resizing and rendering of children
ResizeMode = ResizeMode.Queue;
snooperID = Gtk.Key.SnooperInstall (TooltipKeySnooper);
-
- KeyPressEvent += OnKeyPress;
}
uint snooperID;
@@ -599,7 +597,7 @@ namespace Mono.TextEditor
}
}
- async void IMCommit (object sender, Gtk.CommitArgs ca)
+ void IMCommit (object sender, Gtk.CommitArgs ca)
{
if (!IsRealized || !IsFocus)
return;
@@ -616,9 +614,9 @@ namespace Mono.TextEditor
//include the other pre-IM state *if* the post-IM char matches the pre-IM (key-mapped) one
if (lastIMEventMappedChar == utf32Char && lastIMEventMappedChar == (uint)lastIMEventMappedKey) {
- await editor.OnIMProcessedKeyPressEvent (lastIMEventMappedKey, lastIMEventMappedChar, lastIMEventMappedModifier);
+ editor.OnIMProcessedKeyPressEvent (lastIMEventMappedKey, lastIMEventMappedChar, lastIMEventMappedModifier);
} else {
- await editor.OnIMProcessedKeyPressEvent ((Gdk.Key)0, (uint)utf32Char, Gdk.ModifierType.None);
+ editor.OnIMProcessedKeyPressEvent ((Gdk.Key)0, (uint)utf32Char, Gdk.ModifierType.None);
}
}
@@ -1017,53 +1015,52 @@ namespace Mono.TextEditor
GdkWindow.Cursor = currentCursor = cursor;
}
- async void OnKeyPress (object sender, Gtk.KeyPressEventArgs args)
+ protected override bool OnKeyPressEvent (Gdk.EventKey evt)
{
- Gdk.EventKey evt = args.Event;
- args.RetVal = true;
-
Gdk.Key key;
Gdk.ModifierType mod;
- KeyboardShortcut [] accels;
- GtkWorkarounds.MapKeys (evt, out key, out mod, out accels);
- //HACK: we never call base.OnKeyPressEvent, so implement the popup key manually
+ KeyboardShortcut[] accels;
+ GtkWorkarounds.MapKeys (evt, out key, out mod, out accels);
+ //HACK: we never call base.OnKeyPressEvent, so implement the popup key manually
if (key == Gdk.Key.Menu || (key == Gdk.Key.F10 && mod.HasFlag (ModifierType.ShiftMask))) {
OnPopupMenu ();
- return;
+ return true;
}
uint keyVal = (uint)key;
CurrentMode.SelectValidShortcut (accels, out key, out mod);
if (key == Gdk.Key.F1 && (mod & (ModifierType.ControlMask | ModifierType.ShiftMask)) == ModifierType.ControlMask) {
var p = LocationToPoint (Caret.Location);
ShowTooltip (Gdk.ModifierType.None, Caret.Offset, p.X, p.Y);
- return;
+ return true;
}
if (key == Gdk.Key.F2 && textViewMargin.IsCodeSegmentPreviewWindowShown) {
textViewMargin.OpenCodeSegmentEditor ();
- return;
- }
-
- //FIXME: why are we doing this?
+ return true;
+ }
+
+ //FIXME: why are we doing this?
if ((key == Gdk.Key.space || key == Gdk.Key.parenleft || key == Gdk.Key.parenright) && (mod & Gdk.ModifierType.ShiftMask) == Gdk.ModifierType.ShiftMask)
- mod = Gdk.ModifierType.None;
-
- uint unicodeChar = Gdk.Keyval.ToUnicode (keyVal);
-
+ mod = Gdk.ModifierType.None;
+
+ uint unicodeChar = Gdk.Keyval.ToUnicode (keyVal);
+
if (CurrentMode.WantsToPreemptIM || CurrentMode.PreemptIM (key, unicodeChar, mod)) {
- ResetIMContext ();
- //FIXME: should call base.OnKeyPressEvent when SimulateKeyPress didn't handle the event
+ ResetIMContext ();
+ //FIXME: should call base.OnKeyPressEvent when SimulateKeyPress didn't handle the event
SimulateKeyPress (key, unicodeChar, mod);
- return;
+ return true;
}
bool filter = IMFilterKeyPress (evt, key, unicodeChar, mod);
if (filter)
- return;
-
- //FIXME: OnIMProcessedKeyPressEvent should return false when it didn't handle the event
- if (await editor.OnIMProcessedKeyPressEvent (key, unicodeChar, mod))
- return;
- args.RetVal = base.OnKeyPressEvent (evt);
+ return true;
+
+ //FIXME: OnIMProcessedKeyPressEvent should return false when it didn't handle the event
+ if (editor.OnIMProcessedKeyPressEvent (key, unicodeChar, mod))
+ return true;
+
+ return base.OnKeyPressEvent (evt);
}
+
protected override bool OnKeyReleaseEvent (EventKey evnt)
{
diff --git a/main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml b/main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml
index 874e07e1f2..24bf17ca41 100644
--- a/main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml
+++ b/main/src/core/Mono.Texteditor/SyntaxModes/FSharpSyntaxMode.xml
@@ -295,36 +295,38 @@
<Group color="User Types"/>
</Match>
- <Match expression="(let)(\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+)(\w+|``.*``)(?:\s[^=:])" ignorecase="False">
+ <Match expression="(let\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+\w+)(?:\s[^=:])" ignorecase="False">
<!-- let inline add x y = x + y -->
<Group color="Keyword(Iteration)"/>
- <Group color="Plain Text" />
<Group color="Keyword(Modifiers)"/>
<Group color="Plain Text" />
<Group color="Keyword(Modifiers)"/>
- <Group color="Plain Text" />
<Group color="User Method Declaration"/>
</Match>
- <Match expression="(let)(\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+)(\w+|``[^`]*``)(?:\s+[^=:])" ignorecase="False">
- <!-- let inline add x y = x + y -->
+ <Match expression="(let\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+``[^`]*``)(?:\s[^=:])" ignorecase="False">
+ <!-- let inline ``some id`` x y = x + y -->
<Group color="Keyword(Iteration)"/>
- <Group color="Plain Text" />
<Group color="Keyword(Modifiers)"/>
<Group color="Plain Text" />
+ <Group color="Keyword(Modifiers)"/>
<Group color="User Method Declaration"/>
</Match>
- <Match expression="(let)(\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+)(\w+|``[^`]*``)(?:\s*=)" ignorecase="False">
- <!-- let mutable x = 1 -->
+ <Match expression="(let\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+\w+)(?:\s+[^=:])" ignorecase="False">
+ <!-- let inline add x y = x + y -->
<Group color="Keyword(Iteration)"/>
- <Group color="Plain Text" />
<Group color="Keyword(Modifiers)"/>
- <Group color="Plain Text" />
- <Group color="User Field Declaration"/>
- <Group color="Plain Text" />
+ <Group color="User Method Declaration"/>
</Match>
-
+
+ <Match expression="(let\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)(\s+``[^`]*``)(?:\s+[^=:])" ignorecase="False">
+ <!-- let inline ``some id`` x y = x + y -->
+ <Group color="Keyword(Iteration)"/>
+ <Group color="Keyword(Modifiers)"/>
+ <Group color="User Method Declaration"/>
+ </Match>
+
<Match expression="(let\s+)(\w+|``[^`]*``)(?:\s+[^\s=:])" ignorecase="False">
<!-- let add x y = x + y -->
<Group color="Keyword(Iteration)"/>
@@ -373,7 +375,7 @@
<Group color="Plain Text"/>
</Match>
- <Match expression="(module|type)(\s+)(\w+|``[^`]*``)" ignorecase="False">
+ <Match expression="(module|type|and)(\s+)(\w+|``[^`]*``)" ignorecase="False">
<Group color="Keyword(Namespace)"/>
<Group color="Plain Text"/>
<Group color="User Types"/>
@@ -426,4 +428,10 @@
<Group color="User Property Declaration"/>
</Match>
+ <Match expression="(let)(\s+)(static|abstract|default|override|public|extern|internal|mutable|rec|inline|private)" ignorecase="False">
+ <!-- let mutable x = 1 -->
+ <Group color="Keyword(Iteration)"/>
+ <Group color="Plain Text" />
+ <Group color="Keyword(Modifiers)"/>
+ </Match>
</SyntaxMode>
diff --git a/main/src/core/Mono.Texteditor/SyntaxModes/VBNetSyntaxMode.xml b/main/src/core/Mono.Texteditor/SyntaxModes/VBNetSyntaxMode.xml
index e7627b3ca7..8190c28bb7 100644
--- a/main/src/core/Mono.Texteditor/SyntaxModes/VBNetSyntaxMode.xml
+++ b/main/src/core/Mono.Texteditor/SyntaxModes/VBNetSyntaxMode.xml
@@ -229,7 +229,6 @@
<Keywords color = "Keyword(Other)">
<Word>As</Word>
<Word>Of</Word>
- <Word>New</Word>
<Word>End</Word>
<Word>CBool</Word>
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetFramework.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetFramework.cs
index 0482e38480..ab96b7ac7a 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetFramework.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/TargetFramework.cs
@@ -378,10 +378,10 @@ namespace MonoDevelop.Core.Assemblies
ainfo.Update (an);
assemblies.Add (ainfo);
} catch (BadImageFormatException ex) {
- LoggingService.LogError ("Invalid assembly in framework '{0}': {1}", fx.Id, f);
+ LoggingService.LogError ("Invalid assembly in framework '{0}': {1}{2}{3}", fx.Id, f, Environment.NewLine, ex.ToString ());
} catch (Exception ex) {
- LoggingService.LogError ("Error reading assembly '{0}' in framework '{1}':\n{2}",
- f, fx.Id, ex.ToString ());
+ LoggingService.LogError ("Error reading assembly '{0}' in framework '{1}':{2}{3}",
+ f, fx.Id, Environment.NewLine, ex.ToString ());
}
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessWrapper.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessWrapper.cs
index 296f6d18e8..a033628f9a 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessWrapper.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessWrapper.cs
@@ -96,8 +96,12 @@ namespace MonoDevelop.Core.Execution
if (endEventErr != null)
endEventErr.WaitOne ();
- if (HasExited)
- operation.ExitCode = ExitCode;
+ try {
+ if (HasExited)
+ operation.ExitCode = ExitCode;
+ } catch {
+ // Ignore
+ }
try {
OnExited (this, EventArgs.Empty);
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Instrumentation/InstrumentationService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Instrumentation/InstrumentationService.cs
index ef02105107..78dc2bca5b 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Instrumentation/InstrumentationService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Instrumentation/InstrumentationService.cs
@@ -398,7 +398,7 @@ namespace MonoDevelop.Core.Instrumentation
{
if (enabled) {
AggregatedProgressMonitor mon = new AggregatedProgressMonitor (monitor);
- mon.AddSlaveMonitor (new IntrumentationMonitor (counter), MonitorAction.Tasks | MonitorAction.WriteLog);
+ mon.AddFollowerMonitor (new IntrumentationMonitor (counter), MonitorAction.Tasks | MonitorAction.WriteLog);
return mon;
} else
return monitor;
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/AggregatedProgressMonitor.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/AggregatedProgressMonitor.cs
index 57f9fd7e47..cef5943162 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/AggregatedProgressMonitor.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/AggregatedProgressMonitor.cs
@@ -46,13 +46,13 @@ namespace MonoDevelop.Core.ProgressMonitoring
Dispose = 0x10,
Tasks = 0x20,
Cancel = 0x40,
- SlaveCancel = 0x80, // when the slave is cancelled, the whole aggregated monitor is cancelled.
+ FollowerCancel = 0x80, // when the follower is cancelled, the whole aggregated monitor is cancelled.
All = 0xff
}
public class AggregatedProgressMonitor: ProgressMonitor
{
- ProgressMonitor masterMonitor;
+ ProgressMonitor leaderMonitor;
List<MonitorInfo> monitors = new List<MonitorInfo> ();
class MonitorInfo {
@@ -61,8 +61,8 @@ namespace MonoDevelop.Core.ProgressMonitoring
public CancellationTokenRegistration CancellationTokenRegistration;
}
- public ProgressMonitor MasterMonitor {
- get { return this.masterMonitor; }
+ public ProgressMonitor LeaderMonitor {
+ get { return this.leaderMonitor; }
}
@@ -70,32 +70,32 @@ namespace MonoDevelop.Core.ProgressMonitoring
{
}
- public AggregatedProgressMonitor (ProgressMonitor masterMonitor, params ProgressMonitor[] slaveMonitors): this (masterMonitor, null, slaveMonitors)
+ public AggregatedProgressMonitor (ProgressMonitor leaderMonitor, params ProgressMonitor[] followerMonitors): this (leaderMonitor, null, followerMonitors)
{
}
- internal AggregatedProgressMonitor (ProgressMonitor masterMonitor, CancellationTokenSource cancelSource, params ProgressMonitor[] slaveMonitors)
+ internal AggregatedProgressMonitor (ProgressMonitor leaderMonitor, CancellationTokenSource cancelSource, params ProgressMonitor[] followerMonitors)
{
CancellationTokenSource = cancelSource ?? new CancellationTokenSource ();
- this.masterMonitor = masterMonitor;
- AddSlaveMonitor (masterMonitor, MonitorAction.All);
- foreach (ProgressMonitor mon in slaveMonitors)
- AddSlaveMonitor (mon);
+ this.leaderMonitor = leaderMonitor;
+ AddFollowerMonitor (leaderMonitor, MonitorAction.All);
+ foreach (ProgressMonitor mon in followerMonitors)
+ AddFollowerMonitor (mon);
}
- public new void AddSlaveMonitor (ProgressMonitor slaveMonitor)
+ public new void AddFollowerMonitor (ProgressMonitor followerMonitor)
{
- AddSlaveMonitor (slaveMonitor, MonitorAction.All);
+ AddFollowerMonitor (followerMonitor, MonitorAction.All);
}
- public void AddSlaveMonitor (ProgressMonitor slaveMonitor, MonitorAction actionMask)
+ public void AddFollowerMonitor (ProgressMonitor followerMonitor, MonitorAction actionMask)
{
MonitorInfo smon = new MonitorInfo ();
smon.ActionMask = actionMask;
- smon.Monitor = slaveMonitor;
+ smon.Monitor = followerMonitor;
monitors.Add (smon);
- if ((actionMask & MonitorAction.SlaveCancel) != 0)
- smon.CancellationTokenRegistration = slaveMonitor.CancellationToken.Register (OnSlaveCancelRequested);
+ if ((actionMask & MonitorAction.FollowerCancel) != 0)
+ smon.CancellationTokenRegistration = followerMonitor.CancellationToken.Register (OnFollowerCancelRequested);
}
protected override void OnBeginTask (string name, int totalWork, int stepWork)
@@ -138,7 +138,7 @@ namespace MonoDevelop.Core.ProgressMonitoring
if ((info.ActionMask & MonitorAction.Tasks) != 0) {
var sm = info.Monitor.BeginAsyncStep (message, work);
sm.ReportGlobalDataToParent = false;
- am.AddSlaveMonitor (sm);
+ am.AddFollowerMonitor (sm);
}
}
@@ -183,12 +183,12 @@ namespace MonoDevelop.Core.ProgressMonitoring
foreach (MonitorInfo info in monitors) {
if ((info.ActionMask & MonitorAction.Dispose) != 0)
info.Monitor.Dispose ();
- if ((info.ActionMask & MonitorAction.SlaveCancel) != 0)
+ if ((info.ActionMask & MonitorAction.FollowerCancel) != 0)
info.CancellationTokenRegistration.Dispose ();
}
}
- void OnSlaveCancelRequested ()
+ void OnFollowerCancelRequested ()
{
CancellationTokenSource.Cancel ();
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/ConsoleProjectLoadProgressMonitor.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/ConsoleProjectLoadProgressMonitor.cs
index 22e3dce120..2251f9698f 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/ConsoleProjectLoadProgressMonitor.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/ConsoleProjectLoadProgressMonitor.cs
@@ -31,7 +31,7 @@ namespace MonoDevelop.Core.ProgressMonitoring
{
public ConsoleProjectLoadProgressMonitor (ConsoleProgressMonitor monitor)
{
- AddSlaveMonitor (monitor);
+ AddFollowerMonitor (monitor);
}
public override MonoDevelop.Projects.Extensions.MigrationType ShouldMigrateProject ()
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/FilteredProgressMonitor.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/FilteredProgressMonitor.cs
index 57fae2a68f..3d1a800824 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/FilteredProgressMonitor.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.ProgressMonitoring/FilteredProgressMonitor.cs
@@ -35,13 +35,13 @@ namespace MonoDevelop.Core.ProgressMonitoring
public class FilteredProgressMonitor: AggregatedProgressMonitor
{
public FilteredProgressMonitor (ProgressMonitor targetMonitor)
- : this (targetMonitor, MonitorAction.WriteLog | MonitorAction.ReportError | MonitorAction.ReportWarning | MonitorAction.ReportSuccess | MonitorAction.Cancel | MonitorAction.SlaveCancel)
+ : this (targetMonitor, MonitorAction.WriteLog | MonitorAction.ReportError | MonitorAction.ReportWarning | MonitorAction.ReportSuccess | MonitorAction.Cancel | MonitorAction.FollowerCancel)
{
}
public FilteredProgressMonitor (ProgressMonitor targetMonitor, MonitorAction actionMask)
{
- AddSlaveMonitor (targetMonitor, actionMask);
+ AddFollowerMonitor (targetMonitor, actionMask);
}
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
index 3631614976..00d711ef7e 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj
@@ -561,6 +561,7 @@
<Compile Include="MonoDevelop.Core.Execution\BinaryMessage.cs" />
<Compile Include="MonoDevelop.Core.Execution\RemoteProcessConnection.cs" />
<Compile Include="MonoDevelop.Core.Execution\RemoteProcessServer.cs" />
+ <Compile Include="MonoDevelop.Projects\AssemblyReference.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Makefile.am" />
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs
index 2eccacfa18..b5d5675c9f 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/BrandingService.cs
@@ -42,12 +42,44 @@ namespace MonoDevelop.Core
static XDocument brandingDocument;
static XDocument localizedBrandingDocument;
- public static string ApplicationName;
+ static string applicationName;
+ static string applicationLongName;
+
public static readonly string SuiteName;
public static readonly string ProfileDirectoryName;
public static readonly string StatusSteadyIconId;
public static readonly string HelpAboutIconId;
-
+
+ public static string ApplicationName {
+ get {
+ return applicationName;
+ }
+ set {
+ if (string.IsNullOrEmpty (value))
+ value = "MonoDevelop";
+
+ if (applicationName != value) {
+ applicationName = value;
+ OnApplicationNameChanged ();
+ }
+ }
+ }
+
+ public static string ApplicationLongName {
+ get {
+ return applicationLongName;
+ }
+ set {
+ if (string.IsNullOrEmpty (value))
+ value = "MonoDevelop";
+
+ if (applicationLongName != value) {
+ applicationLongName = value;
+ OnApplicationNameChanged ();
+ }
+ }
+ }
+
static BrandingService ()
{
try {
@@ -77,6 +109,7 @@ namespace MonoDevelop.Core
}
}
ApplicationName = GetString ("ApplicationName");
+ ApplicationLongName = GetString ("ApplicationLongName") ?? ApplicationName;
SuiteName = GetString ("SuiteName");
ProfileDirectoryName = GetString ("ProfileDirectoryName");
StatusSteadyIconId = GetString ("StatusAreaSteadyIcon");
@@ -84,9 +117,6 @@ namespace MonoDevelop.Core
} catch (Exception ex) {
LoggingService.LogError ("Could not read branding document", ex);
}
-
- if (string.IsNullOrEmpty (ApplicationName))
- ApplicationName = "MonoDevelop";
if (string.IsNullOrEmpty (SuiteName))
SuiteName = ApplicationName;
@@ -187,18 +217,11 @@ namespace MonoDevelop.Core
public static event EventHandler ApplicationNameChanged;
- public static void UpdateApplicationName (string name)
+ static void OnApplicationNameChanged ()
{
- if (string.IsNullOrEmpty (name))
- name = "MonoDevelop";
-
- if (ApplicationName != name) {
- ApplicationName = name;
-
- var handler = ApplicationNameChanged;
- if (handler != null)
- handler (null, new EventArgs ());
- }
+ var handler = ApplicationNameChanged;
+ if (handler != null)
+ handler (null, new EventArgs ());
}
}
} \ No newline at end of file
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/Gettext.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/Gettext.cs
index c022562ca3..6fe0fe6e4a 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/Gettext.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/Gettext.cs
@@ -28,32 +28,32 @@
using System;
using System.IO;
-
-using Mono.Unix;
-using System.Globalization;
-using System.Runtime.InteropServices;
-using System.Threading;
-
-namespace MonoDevelop.Core
-{
- public static class GettextCatalog
- {
- static Thread mainThread;
-
- [DllImport ("kernel32.dll", SetLastError = true)]
- static extern int SetThreadUILanguage (int LangId);
+
+using Mono.Unix;
+using System.Globalization;
+using System.Runtime.InteropServices;
+using System.Threading;
+
+namespace MonoDevelop.Core
+{
+ public static class GettextCatalog
+ {
+ static Thread mainThread;
+
+ [DllImport ("kernel32.dll", SetLastError = true)]
+ static extern int SetThreadUILanguage (int LangId);
const int LOCALE_CUSTOM_UNSPECIFIED = 4096;
-
- static GettextCatalog ()
- {
- mainThread = Thread.CurrentThread;
-
- //variable can be used to override where Gettext looks for the catalogues
- string catalog = Environment.GetEnvironmentVariable ("MONODEVELOP_LOCALE_PATH");
-
- // Set the user defined language
- string lang = Runtime.Preferences.UserInterfaceLanguage;
+
+ static GettextCatalog ()
+ {
+ mainThread = Thread.CurrentThread;
+
+ //variable can be used to override where Gettext looks for the catalogues
+ string catalog = Environment.GetEnvironmentVariable ("MONODEVELOP_LOCALE_PATH");
+
+ // Set the user defined language
+ string lang = Runtime.Preferences.UserInterfaceLanguage;
if (!string.IsNullOrEmpty (lang)) {
if (Platform.IsWindows) {
lang = lang.Replace("_", "-");
@@ -153,7 +153,7 @@ namespace MonoDevelop.Core
return Catalog.GetPluralString (singular, plural, number);
} catch (Exception e) {
LoggingService.LogError ("Failed to localize string", e);
- return number == 0 ? singular : plural;
+ return number == 1 ? singular : plural;
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/ProgressMonitor.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/ProgressMonitor.cs
index 94b8fae978..6aea01f2ce 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/ProgressMonitor.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/ProgressMonitor.cs
@@ -65,7 +65,7 @@ namespace MonoDevelop.Core
List<string> warnings = new List<string> ();
List<string> messages = new List<string> ();
- List<ProgressMonitor> slaveMonitors;
+ List<ProgressMonitor> followerMonitors;
List<Action> disposeCallbacks;
object localLock = new object ();
@@ -143,8 +143,8 @@ namespace MonoDevelop.Core
else
OnCompleted ();
- if (slaveMonitors != null) {
- foreach (var m in slaveMonitors)
+ if (followerMonitors != null) {
+ foreach (var m in followerMonitors)
m.Dispose ();
}
if (disposeCallbacks != null) {
@@ -154,20 +154,20 @@ namespace MonoDevelop.Core
}
}
- protected void AddSlaveMonitor (ProgressMonitor monitor)
+ protected void AddFollowerMonitor (ProgressMonitor monitor)
{
- if (slaveMonitors == null)
- slaveMonitors = new List<ProgressMonitor> ();
- slaveMonitors.Add (monitor);
+ if (followerMonitors == null)
+ followerMonitors = new List<ProgressMonitor> ();
+ followerMonitors.Add (monitor);
logWriter.ChainWriter (monitor.Log);
errorLogWriter.ChainWriter (monitor.ErrorLog);
}
- protected void RemoveSlaveMonitor (ProgressMonitor monitor)
+ protected void RemoveFollowerMonitor (ProgressMonitor monitor)
{
- if (slaveMonitors == null)
+ if (followerMonitors == null)
return;
- slaveMonitors.Remove (monitor);
+ followerMonitors.Remove (monitor);
logWriter.UnchainWriter (monitor.Log);
errorLogWriter.UnchainWriter (monitor.ErrorLog);
}
@@ -219,8 +219,8 @@ namespace MonoDevelop.Core
ReportProgressChanged ();
- if (slaveMonitors != null) {
- foreach (var m in slaveMonitors)
+ if (followerMonitors != null) {
+ foreach (var m in followerMonitors)
m.BeginTask (name, totalWork);
}
return t;
@@ -251,8 +251,8 @@ namespace MonoDevelop.Core
ReportProgressChanged ();
- if (slaveMonitors != null) {
- foreach (var m in slaveMonitors)
+ if (followerMonitors != null) {
+ foreach (var m in followerMonitors)
m.EndTask ();
}
}
@@ -291,8 +291,8 @@ namespace MonoDevelop.Core
ReportProgressChanged ();
}
- if (slaveMonitors != null) {
- foreach (var m in slaveMonitors)
+ if (followerMonitors != null) {
+ foreach (var m in followerMonitors)
m.Step (message, work);
}
}
@@ -325,8 +325,8 @@ namespace MonoDevelop.Core
ReportProgressChanged ();
}
- if (slaveMonitors != null) {
- foreach (var m in slaveMonitors)
+ if (followerMonitors != null) {
+ foreach (var m in followerMonitors)
m.BeginStep (message, work);
}
}
@@ -335,8 +335,8 @@ namespace MonoDevelop.Core
{
ConsumePendingWork ();
- if (slaveMonitors != null) {
- foreach (var m in slaveMonitors)
+ if (followerMonitors != null) {
+ foreach (var m in followerMonitors)
m.EndStep ();
}
}
@@ -383,9 +383,9 @@ namespace MonoDevelop.Core
ReportProgressChanged ();
}
- if (slaveMonitors != null) {
- foreach (var sm in slaveMonitors)
- m.AddSlaveMonitor (sm.BeginAsyncStep (message, work));
+ if (followerMonitors != null) {
+ foreach (var sm in followerMonitors)
+ m.AddFollowerMonitor (sm.BeginAsyncStep (message, work));
}
return m;
}
@@ -402,8 +402,8 @@ namespace MonoDevelop.Core
else
OnWarningReported (message);
- if (slaveMonitors != null) {
- foreach (var sm in slaveMonitors)
+ if (followerMonitors != null) {
+ foreach (var sm in followerMonitors)
sm.ReportWarning (message);
}
}
@@ -420,8 +420,8 @@ namespace MonoDevelop.Core
else
OnSuccessReported (message);
- if (slaveMonitors != null) {
- foreach (var sm in slaveMonitors)
+ if (followerMonitors != null) {
+ foreach (var sm in followerMonitors)
sm.ReportSuccess (message);
}
}
@@ -445,8 +445,8 @@ namespace MonoDevelop.Core
else
OnErrorReported (msg, exception);
- if (slaveMonitors != null) {
- foreach (var sm in slaveMonitors)
+ if (followerMonitors != null) {
+ foreach (var sm in followerMonitors)
sm.ReportError (message, exception);
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs
index 9b805ebeb5..5bd8f88fe8 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs
@@ -44,6 +44,7 @@ namespace MonoDevelop.Projects.MSBuild
class LoadedProjectInfo
{
public MSBuildProject Project;
+ public DateTime LastWriteTime;
public int ReferenceCount;
}
@@ -92,11 +93,16 @@ namespace MonoDevelop.Projects.MSBuild
LoadedProjectInfo pi;
if (loadedProjects.TryGetValue (fileName, out pi)) {
pi.ReferenceCount++;
+ var lastWriteTime = File.GetLastWriteTime (fileName);
+ if (pi.LastWriteTime != lastWriteTime) {
+ pi.LastWriteTime = lastWriteTime;
+ pi.Project.Load (fileName, new MSBuildXmlReader { ForEvaluation = true });
+ }
return pi.Project;
}
MSBuildProject p = new MSBuildProject (EngineManager);
p.Load (fileName, new MSBuildXmlReader { ForEvaluation = true });
- loadedProjects [fileName] = new LoadedProjectInfo { Project = p };
+ loadedProjects [fileName] = new LoadedProjectInfo { Project = p, LastWriteTime = File.GetLastWriteTime (fileName) };
//Console.WriteLine ("Loaded: " + fileName);
return p;
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs
index 909fb2a6d6..95dc677318 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs
@@ -486,7 +486,7 @@ namespace MonoDevelop.Projects.MSBuild
var aggregatedMonitor = monitor as AggregatedProgressMonitor;
if (aggregatedMonitor != null)
- return aggregatedMonitor.MasterMonitor as ProjectLoadProgressMonitor;
+ return aggregatedMonitor.LeaderMonitor as ProjectLoadProgressMonitor;
return null;
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildPropertyCore.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildPropertyCore.cs
index a4ebb44cdb..871aed962b 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildPropertyCore.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildPropertyCore.cs
@@ -97,7 +97,7 @@ namespace MonoDevelop.Projects.MSBuild
var res = MSBuildProjectService.FromMSBuildPath (baseDir, val, out path);
// Remove the trailing slash
- if (path.Length > 0 && path[path.Length - 1] == System.IO.Path.DirectorySeparatorChar && path != "." + System.IO.Path.DirectorySeparatorChar)
+ if (path != null && path.Length > 0 && path[path.Length - 1] == System.IO.Path.DirectorySeparatorChar && path != "." + System.IO.Path.DirectorySeparatorChar)
path = path.TrimEnd (System.IO.Path.DirectorySeparatorChar);
value = path;
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/RemoteProjectBuilder.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/RemoteProjectBuilder.cs
index e16eedf6b4..4870f1cba1 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/RemoteProjectBuilder.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/RemoteProjectBuilder.cs
@@ -182,7 +182,7 @@ namespace MonoDevelop.Projects.MSBuild
{
RemoteBuildEngine engine;
IProjectBuilder builder;
- Dictionary<string,string[]> referenceCache;
+ Dictionary<string,AssemblyReference[]> referenceCache;
AsyncCriticalSection referenceCacheLock = new AsyncCriticalSection ();
string file;
static int lastTaskId;
@@ -192,7 +192,7 @@ namespace MonoDevelop.Projects.MSBuild
this.file = file;
this.engine = engine;
builder = engine.LoadProject (file);
- referenceCache = new Dictionary<string, string[]> ();
+ referenceCache = new Dictionary<string, AssemblyReference[]> ();
}
public event EventHandler Disconnected;
@@ -263,9 +263,9 @@ namespace MonoDevelop.Projects.MSBuild
return t;
}
- public async Task<string[]> ResolveAssemblyReferences (ProjectConfigurationInfo[] configurations, CancellationToken cancellationToken)
+ public async Task<AssemblyReference[]> ResolveAssemblyReferences (ProjectConfigurationInfo[] configurations, CancellationToken cancellationToken)
{
- string[] refs = null;
+ AssemblyReference[] refs = null;
var id = configurations [0].Configuration + "|" + configurations [0].Platform;
using (await referenceCacheLock.EnterAsync ()) {
@@ -300,16 +300,17 @@ namespace MonoDevelop.Projects.MSBuild
} catch (Exception ex) {
CheckDisconnected ();
LoggingService.LogError ("ResolveAssemblyReferences failed", ex);
- return new string [0];
+ return new AssemblyReference [0];
} finally {
EndOperation ();
}
List<MSBuildEvaluatedItem> items;
if (result.Items.TryGetValue ("ReferencePath", out items) && items != null) {
- refs = items.Select (i => i.ItemSpec).ToArray ();
+ string aliases;
+ refs = items.Select (i => new AssemblyReference (i.ItemSpec, i.Metadata.TryGetValue ("Aliases", out aliases) ? aliases : "")).ToArray ();
} else
- refs = new string[0];
+ refs = new AssemblyReference [0];
referenceCache [id] = refs;
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/AssemblyReference.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/AssemblyReference.cs
new file mode 100644
index 0000000000..78c5ebbd4f
--- /dev/null
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/AssemblyReference.cs
@@ -0,0 +1,65 @@
+//
+// AssemblyReference.cs
+//
+// Author:
+// Lluis Sanchez Gual <lluis@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin, Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Collections.Generic;
+using MonoDevelop.Core;
+using System.Linq;
+
+namespace MonoDevelop.Projects
+{
+ public sealed class AssemblyReference
+ {
+ public AssemblyReference (FilePath path, string aliases = null)
+ {
+ FilePath = path;
+ Aliases = aliases ?? "";
+ }
+
+ public FilePath FilePath { get; private set; }
+ public string Aliases { get; private set; }
+
+ public override bool Equals (object obj)
+ {
+ var ar = obj as AssemblyReference;
+ return ar != null && ar.FilePath == FilePath && ar.Aliases == Aliases;
+ }
+
+ public override int GetHashCode ()
+ {
+ unchecked {
+ return FilePath.GetHashCode () ^ Aliases.GetHashCode ();
+ }
+ }
+
+ /// <summary>
+ /// Returns an enumerable collection of aliases.
+ /// </summary>
+ public IEnumerable<string> EnumerateAliases ()
+ {
+ return Aliases.Split (',', ';').Where (a => !string.IsNullOrEmpty (a));
+ }
+ }
+} \ No newline at end of file
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs
index d6afe1b4f3..87221de9f5 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs
@@ -292,7 +292,7 @@ namespace MonoDevelop.Projects
stopper.Dispose ();
if (oper.ExitCode != 0) {
- monitor.ReportError ("Custom command failed (exit code: " + oper.ExitCode + ")", null);
+ monitor.ReportError (GettextCatalog.GetString ("Custom command failed (exit code: {0})", oper.ExitCode), null);
}
} catch (Win32Exception w32ex) {
monitor.ReportError (GettextCatalog.GetString ("Failed to execute custom command '{0}': {1}",
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
index 4bcc7e1adf..4900c1567a 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
@@ -581,7 +581,7 @@ namespace MonoDevelop.Projects
internal void RenameReferences (string oldName, string newName)
{
- ArrayList toBeRenamed = new ArrayList ();
+ List<ProjectReference> toBeRenamed = new List<ProjectReference> ();
foreach (ProjectReference refInfo in this.References) {
if (refInfo.ReferenceType == ReferenceType.Project) {
@@ -832,7 +832,7 @@ namespace MonoDevelop.Projects
/// <param name="configuration">
/// Configuration for which to get the assemblies.
/// </param>
- public Task<IEnumerable<string>> GetReferencedAssemblies (ConfigurationSelector configuration)
+ public Task<IEnumerable<AssemblyReference>> GetReferencedAssemblies (ConfigurationSelector configuration)
{
return GetReferencedAssemblies (configuration, true);
}
@@ -847,15 +847,15 @@ namespace MonoDevelop.Projects
/// When set to true, it will include assemblies generated by referenced project. When set to false,
/// it will only include package and direct assembly references.
/// </param>
- public Task<IEnumerable<string>> GetReferencedAssemblies (ConfigurationSelector configuration, bool includeProjectReferences)
+ public Task<IEnumerable<AssemblyReference>> GetReferencedAssemblies (ConfigurationSelector configuration, bool includeProjectReferences)
{
- return BindTask<IEnumerable<string>> (async ct => {
+ return BindTask<IEnumerable<AssemblyReference>> (async ct => {
var res = await ProjectExtension.OnGetReferencedAssemblies (configuration);
if (includeProjectReferences) {
foreach (ProjectReference pref in References.Where (pr => pr.ReferenceType == ReferenceType.Project)) {
- foreach (string asm in pref.GetReferencedFileNames (configuration))
- res.Add (asm);
+ foreach (var asm in pref.GetReferencedFileNames (configuration))
+ res.Add (new AssemblyReference (asm, pref.Aliases));
}
}
return res;
@@ -872,16 +872,16 @@ namespace MonoDevelop.Projects
return ProjectExtension.OnGetReferencedAssemblyProjects (configuration);
}
- internal protected virtual async Task<List<string>> OnGetReferencedAssemblies (ConfigurationSelector configuration)
+ internal protected virtual async Task<List<AssemblyReference>> OnGetReferencedAssemblies (ConfigurationSelector configuration)
{
- List<string> result = new List<string> ();
+ List<AssemblyReference> result = new List<AssemblyReference> ();
if (CheckUseMSBuildEngine (configuration)) {
// Get the references list from the msbuild project
RemoteProjectBuilder builder = await GetProjectBuilder ();
try {
var configs = GetConfigurations (configuration, false);
- string [] refs;
+ AssemblyReference [] refs;
using (Counters.ResolveMSBuildReferencesTimer.BeginTiming (GetProjectEventMetadata (configuration)))
refs = await builder.ResolveAssemblyReferences (configs, CancellationToken.None);
foreach (var r in refs)
@@ -893,19 +893,19 @@ namespace MonoDevelop.Projects
foreach (ProjectReference pref in References) {
if (pref.ReferenceType != ReferenceType.Project) {
foreach (string asm in pref.GetReferencedFileNames (configuration))
- result.Add (asm);
+ result.Add (new AssemblyReference (asm, pref.Aliases));
}
}
var mscorlib = AssemblyContext.GetAssemblyFullName ("mscorlib", TargetFramework);
var mscorlibPath = AssemblyContext.GetAssemblyLocation (mscorlib, TargetFramework);
- if (!result.Contains (mscorlibPath))
- result.Add (mscorlibPath);
+ if (!result.Any (ar => ar.FilePath == mscorlibPath))
+ result.Add (new AssemblyReference (mscorlibPath));
var core = AssemblyContext.GetAssemblyFullName ("System.Core", TargetFramework);
var corePath = AssemblyContext.GetAssemblyLocation (core, TargetFramework);
if (!string.IsNullOrEmpty (corePath)) {
- if (!result.Contains (corePath))
- result.Add (corePath);
+ if (!result.Any (ar => ar.FilePath == corePath))
+ result.Add (new AssemblyReference (corePath));
}
}
@@ -917,8 +917,11 @@ namespace MonoDevelop.Projects
// System.Core is an implicit reference
if (!noStdLib) {
var sa = AssemblyContext.GetAssemblies (TargetFramework).FirstOrDefault (a => a.Name == "System.Core" && a.Package.IsFrameworkPackage);
- if (sa != null)
- result.Add (sa.Location);
+ if (sa != null) {
+ var ar = new AssemblyReference (sa.Location);
+ if (!result.Contains (ar))
+ result.Add (ar);
+ }
}
var addFacadeAssemblies = false;
foreach (var r in GetReferencedAssemblyProjects (configuration)) {
@@ -930,10 +933,10 @@ namespace MonoDevelop.Projects
if (!addFacadeAssemblies) {
foreach (var refFilename in result) {
string fullPath = null;
- if (!Path.IsPathRooted (refFilename)) {
- fullPath = Path.Combine (Path.GetDirectoryName (FileName), refFilename);
+ if (!Path.IsPathRooted (refFilename.FilePath)) {
+ fullPath = Path.Combine (Path.GetDirectoryName (FileName), refFilename.FilePath);
} else {
- fullPath = Path.GetFullPath (refFilename);
+ fullPath = Path.GetFullPath (refFilename.FilePath);
}
if (SystemAssemblyService.ContainsReferenceToSystemRuntime (fullPath)) {
addFacadeAssemblies = true;
@@ -948,7 +951,9 @@ namespace MonoDevelop.Projects
foreach (var facade in facades) {
if (!File.Exists (facade))
continue;
- result.Add (facade);
+ var ar = new AssemblyReference (facade);
+ if (!result.Contains (ar))
+ result.Add (ar);
}
}
return result;
@@ -1637,7 +1642,7 @@ namespace MonoDevelop.Projects
return Project.OnGetDefaultTargetPlatform (projectCreateInfo);
}
- internal protected override Task<List<string>> OnGetReferencedAssemblies (ConfigurationSelector configuration)
+ internal protected override Task<List<AssemblyReference>> OnGetReferencedAssemblies (ConfigurationSelector configuration)
{
return Project.OnGetReferencedAssemblies (configuration);
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs
index 1bf92a0cfb..51e5a24b4f 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectExtension.cs
@@ -72,7 +72,7 @@ namespace MonoDevelop.Projects
return next.OnGetDefaultTargetPlatform (projectCreateInfo);
}
- internal protected virtual Task<List<string>> OnGetReferencedAssemblies (ConfigurationSelector configuration)
+ internal protected virtual Task<List<AssemblyReference>> OnGetReferencedAssemblies (ConfigurationSelector configuration)
{
return next.OnGetReferencedAssemblies (configuration);
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs
index e08223f506..3258b9aca8 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/GenericProject.cs
@@ -29,6 +29,7 @@
using System.Xml;
using System.Collections.Generic;
using System.Collections.Immutable;
+using MonoDevelop.Core;
namespace MonoDevelop.Projects
{
@@ -60,6 +61,12 @@ namespace MonoDevelop.Projects
base.OnGetTypeTags (types);
types.Add ("GenericProject");
}
+
+ protected override void OnWriteConfiguration (ProgressMonitor monitor, ProjectConfiguration config, IPropertySet pset)
+ {
+ base.OnWriteConfiguration (monitor, config, pset);
+ pset.SetValue ("OutputPath", config.OutputDirectory);
+ }
}
[ProjectModelDataItem]
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs
index 6ffc5cb2e2..90890d57ff 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/PortableDotNetProjectFlavor.cs
@@ -76,10 +76,10 @@ namespace MonoDevelop.Projects
return new TargetFrameworkMoniker (".NETPortable", "4.5", "Profile78");
}
- internal protected override async Task<List<string>> OnGetReferencedAssemblies (ConfigurationSelector configuration)
+ internal protected override async Task<List<AssemblyReference>> OnGetReferencedAssemblies (ConfigurationSelector configuration)
{
var res = await base.OnGetReferencedAssemblies (configuration);
- var asms = Project.TargetRuntime.AssemblyContext.GetAssemblies (Project.TargetFramework).Where (a => a.Package.IsFrameworkPackage).Select (a => a.Location);
+ var asms = Project.TargetRuntime.AssemblyContext.GetAssemblies (Project.TargetFramework).Where (a => a.Package.IsFrameworkPackage).Select (a => new AssemblyReference (a.Location));
res.AddRange (asms);
return res;
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs
index c17a026bc0..dc3dff4ed1 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs
@@ -378,6 +378,7 @@ namespace MonoDevelop.Projects
foreach (var projectFile in projectFiles) {
var info = new FileInfo (projectFile.FilePath);
infoList.Add (info);
+ info.Refresh ();
}
return infoList;
@@ -1436,7 +1437,7 @@ namespace MonoDevelop.Projects
//copy references and files marked to "CopyToOutputDirectory"
CopySupportFiles (monitor, configuration);
- monitor.Log.WriteLine ("Performing main compilation...");
+ monitor.Log.WriteLine (GettextCatalog.GetString ("Performing main compilation…"));
BuildResult res = await DoBuild (monitor, configuration);
@@ -2128,7 +2129,7 @@ namespace MonoDevelop.Projects
string itemGuid = msproject.EvaluatedProperties.GetValue ("ProjectGuid");
if (itemGuid == null)
- throw new UserException ("Project file doesn't have a valid ProjectGuid");
+ throw new UserException (GettextCatalog.GetString ("Project file doesn't have a valid ProjectGuid"));
// Workaround for a VS issue. VS doesn't include the curly braces in the ProjectGuid
// of shared projects.
@@ -2744,7 +2745,7 @@ namespace MonoDevelop.Projects
var include = GetPrefixedInclude (pathPrefix, item.UnevaluatedInclude ?? item.Include);
MSBuildItem buildItem;
- if (item.BackingItem != null && item.BackingItem.Name == item.ItemName) {
+ if (item.BackingItem?.ParentObject != null && item.BackingItem.Name == item.ItemName) {
buildItem = item.BackingItem;
} else {
buildItem = msproject.AddNewItem (item.ItemName, include);
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectService.cs
index 8c0dc3ec33..9ec1fe38f6 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectService.cs
@@ -238,9 +238,9 @@ namespace MonoDevelop.Projects
foreach (FilePath f in newFiles) {
if (!f.IsChildPathOf (resolvedTargetPath)) {
if (obj is Solution)
- monitor.ReportError ("The solution '" + obj.Name + "' is referencing the file '" + f.FileName + "' which is located outside the root solution directory.", null);
+ monitor.ReportError (GettextCatalog.GetString ("The solution '{0}' is referencing the file '{1}' which is located outside the root solution directory.", obj.Name, f.FileName), null);
else
- monitor.ReportError ("The project '" + obj.Name + "' is referencing the file '" + f.FileName + "' which is located outside the project directory.", null);
+ monitor.ReportError (GettextCatalog.GetString ("The project '{0}' is referencing the file '{1}' which is located outside the project directory.", obj.Name, f.FileName), null);
}
oldFiles.Remove (f);
}
@@ -308,9 +308,9 @@ namespace MonoDevelop.Projects
if (ignoreExternalFiles)
continue;
if (obj is Solution)
- monitor.ReportError ("The solution '" + obj.Name + "' is referencing the file '" + Path.GetFileName (file) + "' which is located outside the root solution directory.", null);
+ monitor.ReportError (GettextCatalog.GetString ("The solution '{0}' is referencing the file '{1}' which is located outside the root solution directory.", obj.Name, Path.GetFileName (file)), null);
else
- monitor.ReportError ("The project '" + obj.Name + "' is referencing the file '" + Path.GetFileName (file) + "' which is located outside the project directory.", null);
+ monitor.ReportError (GettextCatalog.GetString ("The project '{0}' is referencing the file '{1}' which is located outside the project directory.", obj.Name, Path.GetFileName (file)), null);
return false;
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs
index 23f0870053..05a406c308 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Solution.cs
@@ -750,7 +750,7 @@ namespace MonoDevelop.Projects
if (!it.CanExecute (context, configuration))
continue;
AggregatedProgressMonitor mon = new AggregatedProgressMonitor ();
- mon.AddSlaveMonitor (monitor, MonitorAction.ReportError | MonitorAction.ReportWarning | MonitorAction.SlaveCancel);
+ mon.AddFollowerMonitor (monitor, MonitorAction.ReportError | MonitorAction.ReportWarning | MonitorAction.FollowerCancel);
monitors.Add (mon);
tasks.Add (it.Execute (mon, context, configuration));
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs
index 4e7fb71428..26ca11893d 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs
@@ -638,6 +638,10 @@ namespace MonoDevelop.Projects
BuildResult cres = new BuildResult ();
cres.BuildCount = 0;
+ // Limit the number of concurrent builders to processors / 2
+
+ var slotScheduler = new TaskSlotScheduler (Environment.ProcessorCount / 2);
+
// Create a dictionary with the status objects of all items
var buildStatus = ImmutableDictionary<SolutionItem, BuildStatus>.Empty;
@@ -672,7 +676,8 @@ namespace MonoDevelop.Projects
if (!ignoreFailed && (refStatus.Any (bs => bs.Failed) || t.IsFaulted)) {
myStatus.Failed = true;
} else {
- myStatus.Result = await buildAction (myMonitor, item);
+ using (await slotScheduler.GetTaskSlot ())
+ myStatus.Result = await buildAction (myMonitor, item);
myStatus.Failed = myStatus.Result != null && myStatus.Result.ErrorCount > 0;
}
myMonitor.Dispose ();
@@ -1111,4 +1116,64 @@ namespace MonoDevelop.Projects
get { return this.file; }
}
}
+
+ /// <summary>
+ /// Keeps track of slots available for executing an operation
+ /// </summary>
+ class TaskSlotScheduler
+ {
+ int freeSlots;
+ Queue<TaskCompletionSource<IDisposable>> waitQueue = new Queue<TaskCompletionSource<IDisposable>> ();
+
+ class Slot: IDisposable
+ {
+ public TaskSlotScheduler TaskSlotScheduler;
+
+ public void Dispose ()
+ {
+ if (TaskSlotScheduler != null) {
+ TaskSlotScheduler.FreeSlot ();
+ TaskSlotScheduler = null;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="T:MonoDevelop.Projects.TaskSlotScheduler"/> class.
+ /// </summary>
+ /// <param name="slots">Initial number of slots available</param>
+ public TaskSlotScheduler (int slots)
+ {
+ freeSlots = Math.Max (slots, 1);
+ }
+
+ /// <summary>
+ /// Gets a slot, to be disposed when done with the operation
+ /// </summary>
+ /// <returns>The task slot.</returns>
+ public Task<IDisposable> GetTaskSlot ()
+ {
+ lock (waitQueue) {
+ if (freeSlots > 0) {
+ freeSlots--;
+ return Task.FromResult ((IDisposable)new Slot { TaskSlotScheduler = this });
+ } else {
+ var cs = new TaskCompletionSource<IDisposable> ();
+ waitQueue.Enqueue (cs);
+ return cs.Task;
+ }
+ }
+ }
+
+ void FreeSlot ()
+ {
+ lock (waitQueue) {
+ if (waitQueue.Count > 0) {
+ var cs = waitQueue.Dequeue ();
+ cs.SetResult (new Slot { TaskSlotScheduler = this });
+ } else
+ freeSlots++;
+ }
+ }
+ }
}
diff --git a/main/src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml b/main/src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml
index c657d97264..7a20215bb0 100644
--- a/main/src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml
+++ b/main/src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml
@@ -40,6 +40,13 @@
<Description>A subclass of MonoDevelop.Components.Commands.CommandHandler</Description>
</ExtensionNode>
</ExtensionPoint>
+
+ <ExtensionPoint path = "/MonoDevelop/Ide/PreStartupHandlers" name = "Pre-startup handlers">
+ <Description>Commands to be automatically executed before the IDE UI is initialized. </Description>>
+ <ExtensionNode name="Class" objectType="MonoDevelop.Components.Commands.CommandHandler" customAttributeType="MonoDevelop.Ide.Extensions.StartupHandlerExtensionAttribute">
+ <Description>A subclass of MonoDevelop.Components.Commands.CommandHandler</Description>
+ </ExtensionNode>
+ </ExtensionPoint>
<ExtensionPoint path = "/MonoDevelop/Ide/InitCompleteHandlers" name = "Post inialization handlers">
<Description>Commands to be automatically executed when the IDE finishes initalization.</Description>
@@ -170,11 +177,6 @@
<ExtensionNode name="Templates" type="MonoDevelop.Ide.Editor.Highlighting.TemplateCodon"/>
</ExtensionPoint>
- <ExtensionPoint path = "/MonoDevelop/SourceEditor2/CustomModes" name = "Text editor custom syntax modes">
- <Description>Styles</Description>
- <ExtensionNode name="SyntaxMode" type="MonoDevelop.Ide.Editor.Highlighting.SyntaxModeCodon"/>
- </ExtensionPoint>
-
<ExtensionPoint path = "/MonoDevelop/SourceEditor2/EditorFactory" name = "Editor factories">
<Description>Allows providing a platform-specific implementation for the text editor</Description>
<ExtensionNode name="Class" />
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/GtkWidgetResult.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/GtkWidgetResult.cs
index 629a3e2eeb..60f7c13e17 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/GtkWidgetResult.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/GtkWidgetResult.cs
@@ -257,6 +257,44 @@ namespace MonoDevelop.Components.AutoTest.Results
return true;
}
+ void SendButtonEvent (Widget target, Gdk.EventType eventType, double x, double y, Gdk.ModifierType state, uint button)
+ {
+ Gdk.Window win = target.GdkWindow;
+
+ int rx, ry;
+ win.GetRootOrigin (out rx, out ry);
+
+ var nativeEvent = new NativeEventButtonStruct {
+ type = eventType,
+ send_event = 1,
+ window = win.Handle,
+ state = (uint)state,
+ button = button,
+ x = x,
+ y = y,
+ axes = IntPtr.Zero,
+ device = IntPtr.Zero,
+ time = Global.CurrentEventTime,
+ x_root = x + rx,
+ y_root = y + ry
+ };
+
+ IntPtr ptr = GLib.Marshaller.StructureToPtrAlloc (nativeEvent);
+ try {
+ Gdk.EventHelper.Put (new Gdk.EventButton (ptr));
+ } finally {
+ Marshal.FreeHGlobal (ptr);
+ }
+ }
+
+ public override bool Click (double x, double y)
+ {
+ SendButtonEvent (resultWidget, Gdk.EventType.ButtonPress, x, y, 0, 1);
+ SendButtonEvent (resultWidget, Gdk.EventType.ButtonRelease, x, y, 0, 1);
+
+ return true;
+ }
+
void SendKeyEvent (Gtk.Widget target, uint keyval, Gdk.ModifierType state, Gdk.EventType eventType, string subWindow)
{
Gdk.KeymapKey[] keyms = Gdk.Keymap.Default.GetEntriesForKeyval (keyval);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs
index bcd17d7f81..ea5a214bd8 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs
@@ -181,6 +181,11 @@ namespace MonoDevelop.Components.AutoTest.Results
return true;
}
+ public override bool Click (double x, double y)
+ {
+ return Click ();
+ }
+
NSEvent MakeEvent (string c, NSEventType type, double epochTime, nint winID)
{
return NSEvent.KeyEvent (type, CoreGraphics.CGPoint.Empty,
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/ObjectResult.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/ObjectResult.cs
index fc276a5394..b96c6978e0 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/ObjectResult.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/ObjectResult.cs
@@ -98,6 +98,11 @@ namespace MonoDevelop.Components.AutoTest.Results
return false;
}
+ public override bool Click (double x, double y)
+ {
+ return false;
+ }
+
public override bool TypeKey (char key, string state = "")
{
return false;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AppResult.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AppResult.cs
index df759e541b..1f7becc830 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AppResult.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AppResult.cs
@@ -59,6 +59,7 @@ namespace MonoDevelop.Components.AutoTest
// Actions
public abstract bool Select ();
public abstract bool Click ();
+ public abstract bool Click (double x, double y);
public abstract bool TypeKey (char key, string state = "");
public abstract bool TypeKey (string keyString, string state = "");
public abstract bool EnterText (string text);
@@ -151,6 +152,7 @@ namespace MonoDevelop.Components.AutoTest
{
var propertiesObject = new ObjectProperties ();
if (resultObject != null) {
+ propertiesObject.Add ("ToString", new ObjectResult (resultObject.ToString ()), null);
var properties = resultObject.GetType ().GetProperties (
BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
foreach (var property in properties) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs
index e3251563aa..6e2fc2052e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs
@@ -304,6 +304,16 @@ namespace MonoDevelop.Components.AutoTest
return false;
}
+ public bool ClickElement (Func<AppQuery, AppQuery> query, double x, double y, bool wait = true)
+ {
+ AppResult [] results = Query (query);
+ if (results.Length > 0) {
+ return session.Click (results [0], x, y, wait);
+ }
+
+ return false;
+ }
+
public bool EnterText (Func<AppQuery, AppQuery> query, string text)
{
AppResult[] results = Query (query);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestSession.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestSession.cs
index 66072db1b4..01dd6adfe7 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestSession.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestSession.cs
@@ -512,6 +512,21 @@ namespace MonoDevelop.Components.AutoTest
return success;
}
+ public bool Click (AppResult result, double x, double y, bool wait = true)
+ {
+ bool success = false;
+
+ try {
+ ExecuteOnIdle (() => {
+ success = result.Click (x, y);
+ }, wait);
+ } catch (TimeoutException e) {
+ ThrowOperationTimeoutException ("Click", result.SourceQuery, result, e);
+ }
+
+ return success;
+ }
+
public bool EnterText (AppResult result, string text)
{
try {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs
index 951492df32..922553141d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs
@@ -31,6 +31,7 @@ using System;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
+using System.Diagnostics;
using System.Linq;
using MonoDevelop.Components.Commands.ExtensionNodes;
@@ -2245,24 +2246,24 @@ namespace MonoDevelop.Components.Commands
if (customHandlerChain != null) {
info.UpdateHandlerData = Method;
- DateTime t = DateTime.Now;
+ var sw = Stopwatch.StartNew ();
customHandlerChain.CommandUpdate (cmdTarget, info);
- var time = DateTime.Now - t;
- if (time.TotalMilliseconds > CommandManager.SlowCommandWarningTime)
- LoggingService.LogWarning ("Slow command update ({0}ms): Command:{1}, CustomUpdater:{2}", (int)time.TotalMilliseconds, CommandId, customHandlerChain);
+ sw.Stop ();
+ if (sw.ElapsedMilliseconds > CommandManager.SlowCommandWarningTime)
+ LoggingService.LogWarning ("Slow command update ({0}ms): Command:{1}, CustomUpdater:{2}, CommandTargetType:{3}", (int)sw.ElapsedMilliseconds, CommandId, customHandlerChain, cmdTarget.GetType ());
} else {
if (Method == null)
throw new InvalidOperationException ("Invalid custom update handler. An implementation of ICommandUpdateHandler was expected.");
if (isArray)
throw new InvalidOperationException ("Invalid signature for command update handler: " + Method.DeclaringType + "." + Method.Name + "()");
- DateTime t = DateTime.Now;
+ var sw = Stopwatch.StartNew ();
Method.Invoke (cmdTarget, new object[] {info} );
- var time = DateTime.Now - t;
- if (time.TotalMilliseconds > CommandManager.SlowCommandWarningTime)
- LoggingService.LogWarning ("Slow command update ({0}ms): Command:{1}, Method:{2}", (int)time.TotalMilliseconds, CommandId, Method.DeclaringType + "." + Method.Name);
+ sw.Stop ();
+ if (sw.ElapsedMilliseconds > CommandManager.SlowCommandWarningTime)
+ LoggingService.LogWarning ("Slow command update ({0}ms): Command:{1}, Method:{2}, CommandTargetType:{3}", (int)sw.ElapsedMilliseconds, CommandId, Method.DeclaringType + "." + Method.Name, cmdTarget.GetType ());
}
}
@@ -2277,13 +2278,13 @@ namespace MonoDevelop.Components.Commands
if (!isArray)
throw new InvalidOperationException ("Invalid signature for command update handler: " + Method.DeclaringType + "." + Method.Name + "()");
- DateTime t = DateTime.Now;
+ var sw = Stopwatch.StartNew ();
- Method.Invoke (cmdTarget, new object[] {info} );
-
- var time = DateTime.Now - t;
- if (time.TotalMilliseconds > CommandManager.SlowCommandWarningTime)
- LoggingService.LogWarning ("Slow command update ({0}ms): Command:{1}, Method:{2}", (int)time.TotalMilliseconds, CommandId, Method.DeclaringType + "." + Method.Name);
+ Method.Invoke (cmdTarget, new object[] {info} );
+
+ sw.Stop ();
+ if (sw.ElapsedMilliseconds > CommandManager.SlowCommandWarningTime)
+ LoggingService.LogWarning ("Slow command update ({0}ms): Command:{1}, Method:{2}, CommandTargetType:{3}", (int)sw.ElapsedMilliseconds, CommandId, Method.DeclaringType + "." + Method.Name, cmdTarget.GetType ());
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/DockNotebook.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/DockNotebook.cs
index 3635a07a71..cb54ea9035 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/DockNotebook.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/DockNotebook.cs
@@ -238,7 +238,6 @@ namespace MonoDevelop.Components.DockNotebook
void OnDragDataReceived (object o, Gtk.DragDataReceivedArgs args)
{
- Console.WriteLine ("received");
if (args.Info != (uint) TargetList.UriList)
return;
string fullData = System.Text.Encoding.UTF8.GetString (args.SelectionData.Data);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/TabStrip.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/TabStrip.cs
index c8ef193d46..62874505e5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/TabStrip.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.DockNotebook/TabStrip.cs
@@ -73,14 +73,12 @@ namespace MonoDevelop.Components.DockNotebook
public Button NextButton;
public MenuButton DropDownButton;
- static readonly double PixelScale = GtkWorkarounds.GetPixelScale ();
- static readonly int TotalHeight = (int)(32 * PixelScale);
+ static readonly int TotalHeight = 32;
static readonly Xwt.WidgetSpacing TabPadding;
static readonly Xwt.WidgetSpacing TabActivePadding;
- static readonly int LeftBarPadding = (int)(44 * PixelScale);
- static readonly int RightBarPadding = (int)(22 * PixelScale);
- static readonly int VerticalTextSize = (int)(11 * PixelScale);
- // static readonly int ButtonSize = (int)(16 * PixelScale);
+ static readonly int LeftBarPadding = 44;
+ static readonly int RightBarPadding = 22;
+ static readonly int VerticalTextSize = 11;
const int TabSpacing = 0;
const int LeanWidth = 12;
const double CloseButtonMarginRight = 0;
@@ -166,6 +164,7 @@ namespace MonoDevelop.Components.DockNotebook
var alignment = new Alignment (0.5f, 1, 0.0f, 0.0f);
alignment.Add (arr.ToGtkWidget ());
PreviousButton = new Button (alignment);
+ PreviousButton.TooltipText = Core.GettextCatalog.GetString ("Switch to previous document");
PreviousButton.Relief = ReliefStyle.None;
PreviousButton.CanDefault = PreviousButton.CanFocus = false;
@@ -175,10 +174,12 @@ namespace MonoDevelop.Components.DockNotebook
alignment = new Alignment (0.5f, 1, 0.0f, 0.0f);
alignment.Add (arr.ToGtkWidget ());
NextButton = new Button (alignment);
+ NextButton.TooltipText = Core.GettextCatalog.GetString ("Switch to next document");
NextButton.Relief = ReliefStyle.None;
NextButton.CanDefault = NextButton.CanFocus = false;
DropDownButton = new MenuButton ();
+ DropDownButton.TooltipText = Core.GettextCatalog.GetString ("Document List");
DropDownButton.Relief = ReliefStyle.None;
DropDownButton.CanDefault = DropDownButton.CanFocus = false;
@@ -836,8 +837,8 @@ namespace MonoDevelop.Components.DockNotebook
ctx.SetSource (lg);
Pango.CairoHelper.ShowLayout (ctx, la.GetLine (0).Layout);
}
- }
- la.Dispose ();
+ }
+ la.Dispose ();
}
static void DrawTabBackground (Widget widget, Context ctx, Gdk.Rectangle allocation, int contentWidth, int px, bool active = true)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs
index b4cb07dfd6..94ced4e57d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockBarItem.cs
@@ -362,7 +362,7 @@ namespace MonoDevelop.Components.Docking
if (autoHideTimeout == uint.MaxValue) {
autoHideTimeout = GLib.Timeout.Add (force ? 0 : bar.Frame.AutoHideDelay, delegate {
// Don't hide if the context menu for the item is being shown.
- if (it.ShowingContextMemu)
+ if (it.ShowingContextMenu)
return true;
// Don't hide the item if it has the focus. Try again later.
if (it.Widget.FocusChild != null && !force && autoShowFrame != null && ((Gtk.Window)autoShowFrame.Toplevel).HasToplevelFocus)
@@ -437,7 +437,7 @@ namespace MonoDevelop.Components.Docking
if (bar.Frame.OverlayWidgetVisible)
return false;
if (evnt.TriggersContextMenu ()) {
- it.ShowDockPopupMenu (evnt.Time);
+ it.ShowDockPopupMenu (this, evnt);
} else if (evnt.Button == 1) {
if (evnt.Type == Gdk.EventType.TwoButtonPress) {
// Instead of changing the state of the pad here, do it when the button is released.
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs
index c1054eec77..ceec861e19 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItem.cs
@@ -526,54 +526,47 @@ namespace MonoDevelop.Components.Docking
}
}
- internal bool ShowingContextMemu { get ; set; }
-
- internal void ShowDockPopupMenu (uint time)
+ internal bool ShowingContextMenu { get ; set; }
+
+ internal void ShowDockPopupMenu (Gtk.Widget parent, Gdk.EventButton evt)
{
- Gtk.Menu menu = new Gtk.Menu ();
-
+ var menu = new ContextMenu ();
+ ContextMenuItem citem;
+
// Hide menuitem
if ((Behavior & DockItemBehavior.CantClose) == 0) {
- Gtk.MenuItem mitem = new Gtk.MenuItem (Catalog.GetString("Hide"));
- mitem.Activated += delegate { Visible = false; };
- menu.Append (mitem);
+ citem = new ContextMenuItem (Catalog.GetString ("Hide"));
+ citem.Clicked += delegate { Visible = false; };
+ menu.Add (citem);
}
- Gtk.MenuItem citem;
-
// Auto Hide menuitem
if ((Behavior & DockItemBehavior.CantAutoHide) == 0 && Status != DockItemStatus.AutoHide) {
- citem = new Gtk.MenuItem (Catalog.GetString("Minimize"));
- citem.Activated += delegate { Status = DockItemStatus.AutoHide; };
- menu.Append (citem);
+ citem = new ContextMenuItem (Catalog.GetString ("Minimize"));
+ citem.Clicked += delegate { Status = DockItemStatus.AutoHide; };
+ menu.Add (citem);
}
if (Status != DockItemStatus.Dockable) {
// Dockable menuitem
- citem = new Gtk.MenuItem (Catalog.GetString("Dock"));
- citem.Activated += delegate { Status = DockItemStatus.Dockable; };
- menu.Append (citem);
+ citem = new ContextMenuItem (Catalog.GetString ("Dock"));
+ citem.Clicked += delegate { Status = DockItemStatus.Dockable; };
+ menu.Add (citem);
}
// Floating menuitem
if ((Behavior & DockItemBehavior.NeverFloating) == 0 && Status != DockItemStatus.Floating) {
- citem = new Gtk.MenuItem (Catalog.GetString("Undock"));
- citem.Activated += delegate { Status = DockItemStatus.Floating; };
- menu.Append (citem);
+ citem = new ContextMenuItem (Catalog.GetString ("Undock"));
+ citem.Clicked += delegate { Status = DockItemStatus.Floating; };
+ menu.Add (citem);
}
- if (menu.Children.Length == 0) {
- menu.Destroy ();
+ if (menu.Items.Count == 0) {
return;
}
- ShowingContextMemu = true;
-
- menu.ShowAll ();
- menu.Hidden += (o,e) => {
- ShowingContextMemu = false;
- };
- menu.Popup (null, null, null, 3, time);
+ ShowingContextMenu = true;
+ menu.Show (parent, evt, () => { ShowingContextMenu = true; });
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs
index f28e569089..b2c08ec19b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemTitleTab.cs
@@ -65,8 +65,6 @@ namespace MonoDevelop.Components.Docking
static Xwt.Drawing.Image pixAutoHide;
static Xwt.Drawing.Image pixDock;
- static double PixelScale = GtkWorkarounds.GetPixelScale ();
-
static readonly Xwt.WidgetSpacing TabPadding;
static readonly Xwt.WidgetSpacing TabActivePadding;
@@ -129,7 +127,7 @@ namespace MonoDevelop.Components.Docking
{
double inactiveIconAlpha;
- if (IdeApp.Preferences == null || IdeApp.Preferences.UserInterfaceSkin == Skin.Light)
+ if (IdeApp.Preferences == null || IdeApp.Preferences.UserInterfaceTheme == Theme.Light)
inactiveIconAlpha = 0.8;
else
inactiveIconAlpha = 0.6;
@@ -164,7 +162,7 @@ namespace MonoDevelop.Components.Docking
WidthRequest = r;
if (visualStyle != null)
- HeightRequest = visualStyle.PadTitleHeight != null ? (int)(visualStyle.PadTitleHeight.Value * PixelScale) : -1;
+ HeightRequest = visualStyle.PadTitleHeight != null ? (int)(visualStyle.PadTitleHeight.Value) : -1;
}
public void SetLabel (Gtk.Widget page, Xwt.Drawing.Image icon, string label)
@@ -190,6 +188,7 @@ namespace MonoDevelop.Components.Docking
if (!string.IsNullOrEmpty (label)) {
labelWidget = new ExtendedLabel (label);
labelWidget.UseMarkup = true;
+ labelWidget.Name = label;
var alignLabel = new Alignment (0.0f, 0.5f, 1, 1);
alignLabel.BottomPadding = 0;
alignLabel.RightPadding = 15;
@@ -207,6 +206,7 @@ namespace MonoDevelop.Components.Docking
btnDock.Clicked += OnClickDock;
btnDock.ButtonPressEvent += (o, args) => args.RetVal = true;
btnDock.WidthRequest = btnDock.SizeRequest ().Width;
+ btnDock.Name = string.Format("btnDock_{0}", label ?? string.Empty);
btnClose = new ImageButton ();
btnClose.Image = pixClose;
@@ -218,6 +218,7 @@ namespace MonoDevelop.Components.Docking
item.Visible = false;
};
btnClose.ButtonPressEvent += (o, args) => args.RetVal = true;
+ btnClose.Name = string.Format ("btnClose_{0}", label ?? string.Empty);
Gtk.Alignment al = new Alignment (0, 0.5f, 1, 1);
HBox btnBox = new HBox (false, 0);
@@ -300,7 +301,7 @@ namespace MonoDevelop.Components.Docking
protected override bool OnButtonPressEvent (Gdk.EventButton evnt)
{
if (evnt.TriggersContextMenu ()) {
- item.ShowDockPopupMenu (evnt.Time);
+ item.ShowDockPopupMenu (this, evnt);
return false;
} else if (evnt.Button == 1) {
if (evnt.Type == Gdk.EventType.ButtonPress) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Extensions/ErrorDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Extensions/ErrorDialog.cs
deleted file mode 100644
index c93c8376a9..0000000000
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Extensions/ErrorDialog.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// ErrorDialog.cs
-//
-// Author:
-// Michael Hutchinson <mhutchinson@novell.com>
-//
-// Copyright (c) 2010 Novell, Inc.
-//
-// 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.Ide;
-
-namespace MonoDevelop.Components.Extensions
-{
- public interface IExceptionDialogHandler : IDialogHandler<ExceptionDialogData>
- {
- }
-
- public class ExceptionDialogData : PlatformDialogData
- {
- public AlertButton[] Buttons { get; set; }
- public string Message { get; set; }
- public Exception Exception { get; set; }
- public AlertButton ResultButton { get; set; }
- }
-
- public class ExceptionDialog : PlatformDialog<ExceptionDialogData>
- {
- public AlertButton[] Buttons {
- get { return data.Buttons; }
- set { data.Buttons = value; }
- }
-
- public string Message {
- get { return data.Message; }
- set { data.Message = value; }
- }
-
- public Exception Exception {
- get { return data.Exception; }
- set { data.Exception = value; }
- }
-
- public AlertButton ResultButton {
- get { return data.ResultButton; }
- private set { data.ResultButton = value; }
- }
-
- protected override bool RunDefault ()
- {
- using (var errorDialog = new MonoDevelop.Ide.Gui.Dialogs.GtkErrorDialog (TransientFor, Title, Message, Buttons)) {
- errorDialog.AddDetails (Exception.ToString (), false);
- int result = MonoDevelop.Ide.MessageService.ShowCustomDialog (errorDialog);
- ResultButton = result >= 0 ? Buttons [result] : null;
- }
- return true;
- }
- }
-} \ No newline at end of file
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FirstCategory.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FirstCategory.cs
deleted file mode 100644
index 2c483538df..0000000000
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FirstCategory.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace MonoDevelop.Components.MainToolbar
-{
- class FirstCategory
- {
- }
-} \ No newline at end of file
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs
index 1c2d601edf..38ed0648e0 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbar.cs
@@ -182,12 +182,10 @@ namespace MonoDevelop.Components.MainToolbar
if (toplevel == null)
return;
- var pixel_scale = GtkWorkarounds.GetPixelScale ();
-
int windowWidth = toplevel.Allocation.Width;
int center = windowWidth / 2;
- int left = Math.Max (center - (int)(300 * pixel_scale), args.Allocation.Left);
- int right = Math.Min (left + (int)(600 * pixel_scale), args.Allocation.Right);
+ int left = Math.Max (center - 300, args.Allocation.Left);
+ int right = Math.Min (left + 600, args.Allocation.Right);
uint left_padding = (uint) (left - args.Allocation.Left);
uint right_padding = (uint) (args.Allocation.Right - right);
@@ -229,7 +227,7 @@ namespace MonoDevelop.Components.MainToolbar
align.Add (contentBox);
Add (align);
- SetDefaultSizes (-1, (int)(21 * GtkWorkarounds.GetPixelScale ()));
+ SetDefaultSizes (-1, 21);
configurationCombo.Changed += (o, e) => {
if (ConfigurationChanged != null)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
index c6fd6fd3c2..56712743e5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs
@@ -594,7 +594,7 @@ namespace MonoDevelop.Components.MainToolbar
IdeApp.Workbench.Present ();
var text = lastSearchText;
var actDoc = IdeApp.Workbench.ActiveDocument;
- if (actDoc != null && actDoc.Editor.IsSomethingSelected) {
+ if (actDoc != null && actDoc.Editor != null && actDoc.Editor.IsSomethingSelected) {
string selected = actDoc.Editor.SelectedText;
int whitespaceIndex = selected.TakeWhile (c => !char.IsWhiteSpace (c)).Count ();
text = selected.Substring (0, whitespaceIndex);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs
index c4a1afe7e9..a76ccc18ed 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs
@@ -90,7 +90,7 @@ namespace MonoDevelop.Components.MainToolbar
var options = new FilterOptions ();
if (PropertyService.Get ("AutoSetPatternCasing", true))
options.CaseSensitive = pattern.Pattern.Any (c => char.IsUpper (c));
- FindInFilesDialog.SearchReplace (pattern.Pattern, null, new WholeSolutionScope (), options, null);
+ FindInFilesDialog.SearchReplace (pattern.Pattern, null, new WholeSolutionScope (), options, null, null);
}
public override string GetMarkupText (bool selected)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/StatusArea.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/StatusArea.cs
index bd083c55ee..f1e61b9ec1 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/StatusArea.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/StatusArea.cs
@@ -347,7 +347,7 @@ namespace MonoDevelop.Components.MainToolbar
TaskService.Errors.TasksAdded += updateHandler;
TaskService.Errors.TasksRemoved += updateHandler;
- currentApplicationName = BrandingService.ApplicationName;
+ currentApplicationName = BrandingService.ApplicationLongName;
BrandingService.ApplicationNameChanged += ApplicationNameChanged;
box.Destroyed += delegate {
@@ -375,11 +375,11 @@ namespace MonoDevelop.Components.MainToolbar
void ApplicationNameChanged (object sender, EventArgs e)
{
if (renderArg.CurrentText == currentApplicationName) {
- LoadText (BrandingService.ApplicationName, false);
+ LoadText (BrandingService.ApplicationLongName, false);
LoadPixbuf (null);
QueueDraw ();
}
- currentApplicationName = BrandingService.ApplicationName;
+ currentApplicationName = BrandingService.ApplicationLongName;
}
protected override void OnRealized ()
@@ -436,6 +436,7 @@ namespace MonoDevelop.Components.MainToolbar
public void ShowReady ()
{
ShowMessage ("");
+ SetMessageSourcePad (null);
}
public void SetMessageSourcePad (Pad pad)
@@ -721,7 +722,7 @@ namespace MonoDevelop.Components.MainToolbar
void LoadText (string message, bool isMarkup)
{
if (string.IsNullOrEmpty(message))
- message = BrandingService.ApplicationName;
+ message = BrandingService.ApplicationLongName;
message = message ?? "";
renderArg.LastText = renderArg.CurrentText;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs
index 14b676134e..4152f67dd1 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs
@@ -143,7 +143,7 @@ namespace MonoDevelop.Components.PropertyGrid
base.PackEnd (vpaned);
base.FocusChain = new Gtk.Widget [] { vpaned };
- Populate ();
+ Populate (saveEditSession: false);
UpdateTabs ();
}
@@ -188,7 +188,7 @@ namespace MonoDevelop.Components.PropertyGrid
TabRadioToolButton button = (TabRadioToolButton) sender;
if (selectedTab == button.Tab) return;
selectedTab = button.Tab;
- Populate ();
+ Populate (saveEditSession: true);
}
// If the tree is re-populated while a value is being edited, the focus that the value editor had
// is not returned back to the tree. We need to explicitly get it.
@@ -200,7 +200,7 @@ namespace MonoDevelop.Components.PropertyGrid
set {
if (value != propertySort) {
propertySort = value;
- Populate ();
+ Populate (saveEditSession: true);
}
}
}
@@ -262,7 +262,7 @@ namespace MonoDevelop.Components.PropertyGrid
this.currentObject = obj;
this.propertyProviders = propertyProviders;
UpdateTabs ();
- Populate();
+ Populate(saveEditSession: false);
}
public void CommitPendingChanges ()
@@ -287,11 +287,13 @@ namespace MonoDevelop.Components.PropertyGrid
QueueDraw ();
}
- internal void Populate ()
+ internal void Populate (bool saveEditSession)
{
PropertyDescriptorCollection properties;
- tree.SaveStatus ();
+ tree.SaveStatus ();
+ if (saveEditSession)
+ tree.SaveEditSession ();
tree.Clear ();
tree.PropertySort = propertySort;
@@ -304,8 +306,9 @@ namespace MonoDevelop.Components.PropertyGrid
properties = selectedTab.GetProperties (prov);
tree.Populate (properties, prov);
}
- }
+ }
tree.RestoreStatus ();
+ tree.RestoreEditSession ();
}
void Update ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGridTable.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGridTable.cs
index 30feb1e47f..57bed7052a 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGridTable.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGridTable.cs
@@ -162,6 +162,8 @@ namespace MonoDevelop.Components.PropertyGrid
}
Dictionary<object,List<string>> expandedStatus;
+ PropertyDescriptor lastEditedProperty;
+ EditSession lastEditSession;
class ReferenceEqualityComparer<T> : IEqualityComparer<T>
{
@@ -181,6 +183,7 @@ namespace MonoDevelop.Components.PropertyGrid
//since the tree can be built dynamically, and there can be multiple instances of each type.
//make a best attempt using reference equality to match objects and the name to match their properties.
expandedStatus = new Dictionary<object,List<string>>(new ReferenceEqualityComparer<object> ());
+
foreach (var r in rows.Where (r => r.IsExpandable)) {
object key;
string val;
@@ -234,6 +237,49 @@ namespace MonoDevelop.Components.PropertyGrid
QueueResize ();
}
+ internal void SaveEditSession ()
+ {
+ if (editSession == null)
+ return;
+
+ lastEditedProperty = editSession.Property;
+ lastEditSession = editSession;
+
+ // Set the edit session to null explicitly so Clear does not end the edit session.
+ editSession = null;
+ }
+
+ internal void RestoreEditSession ()
+ {
+ if (lastEditedProperty == null || lastEditSession == null)
+ return;
+
+ var newEditRow = FindRow (rows, lastEditedProperty);
+ if (newEditRow != null) {
+ currentEditorRow = newEditRow;
+ editSession = lastEditSession;
+ } else {
+ editSession = lastEditSession;
+ EndEditing ();
+ }
+
+ lastEditedProperty = null;
+ lastEditSession = null;
+ }
+
+ static TableRow FindRow (IEnumerable<TableRow> rows, PropertyDescriptor property)
+ {
+ foreach (var row in rows) {
+ if (row.Property == property)
+ return row;
+
+ var childRes = FindRow (row.ChildRows, property);
+ if (childRes != null)
+ return childRes;
+ }
+ return null;
+ }
+
public virtual void Clear ()
{
heightMeasured = false;
@@ -782,7 +828,7 @@ namespace MonoDevelop.Components.PropertyGrid
base.OnDragLeave (context, time_);
}
- void EndEditing ()
+ internal void EndEditing ()
{
if (editSession != null) {
Remove (currentEditor);
@@ -818,7 +864,7 @@ namespace MonoDevelop.Components.PropertyGrid
if (refresh == RefreshProperties.Repaint) {
parentGrid.Refresh ();
} else if (refresh == RefreshProperties.All) {
- parentGrid.Populate();
+ parentGrid.Populate(saveEditSession: true);
}
if (Changed != null)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ConsoleView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ConsoleView.cs
index 743b2fe187..7a51a958e7 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ConsoleView.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ConsoleView.cs
@@ -28,7 +28,7 @@
using System;
using System.Collections.Generic;
-using System.Threading.Tasks;
+
using Gtk;
using MonoDevelop.Core;
@@ -105,9 +105,9 @@ namespace MonoDevelop.Components
public string PromptMultiLineString { get; set; }
[GLib.ConnectBeforeAttribute]
- async void TextViewKeyPressEvent (object o, KeyPressEventArgs args)
+ void TextViewKeyPressEvent (object o, KeyPressEventArgs args)
{
- if (await ProcessKeyPressEvent (args))
+ if (ProcessKeyPressEvent (args))
args.RetVal = true;
}
@@ -198,12 +198,12 @@ namespace MonoDevelop.Components
return true;
}
- protected virtual Task<bool> ProcessKeyPressEvent (KeyPressEventArgs args)
+ protected virtual bool ProcessKeyPressEvent (KeyPressEventArgs args)
{
// Short circuit to avoid getting moved back to the input line
// when paging up and down in the shell output
if (args.Event.Key == Gdk.Key.Page_Up || args.Event.Key == Gdk.Key.Page_Down)
- return Task.FromResult (false);
+ return false;
// Needed so people can copy and paste, but always end up
// typing in the prompt.
@@ -213,7 +213,7 @@ namespace MonoDevelop.Components
}
if (!TextView.Editable) {
- return Task.FromResult (false);
+ return false;
}
// if (ev.State == Gdk.ModifierType.ControlMask && ev.Key == Gdk.Key.space)
@@ -222,13 +222,13 @@ namespace MonoDevelop.Components
switch (args.Event.Key) {
case Gdk.Key.KP_Enter:
case Gdk.Key.Return:
- return Task.FromResult (ProcessReturn ());
+ return ProcessReturn ();
case Gdk.Key.KP_Up:
case Gdk.Key.Up:
- return Task.FromResult (ProcessCommandHistoryUp ());
+ return ProcessCommandHistoryUp ();
case Gdk.Key.KP_Down:
case Gdk.Key.Down:
- return Task.FromResult (ProcessCommandHistoryDown ());
+ return ProcessCommandHistoryDown ();
case Gdk.Key.KP_Left:
case Gdk.Key.Left:
// On Mac, when using a small keyboard, Home is Command+Left
@@ -239,12 +239,12 @@ namespace MonoDevelop.Components
if (!args.Event.State.HasFlag (Gdk.ModifierType.ShiftMask))
Buffer.MoveMark (Buffer.SelectionBound, InputLineBegin);
- return Task.FromResult (true);
+ return true;
}
// Keep our cursor inside the prompt area
if (Cursor.Compare (InputLineBegin) <= 0)
- return Task.FromResult (true);
+ return true;
break;
case Gdk.Key.KP_Home:
@@ -255,7 +255,7 @@ namespace MonoDevelop.Components
if (!args.Event.State.HasFlag (Gdk.ModifierType.ShiftMask))
Buffer.MoveMark (Buffer.SelectionBound, InputLineBegin);
- return Task.FromResult (true);
+ return true;
case Gdk.Key.a:
if (args.Event.State.HasFlag (Gdk.ModifierType.ControlMask)) {
Buffer.MoveMark (Buffer.InsertMark, InputLineBegin);
@@ -264,16 +264,16 @@ namespace MonoDevelop.Components
if (!args.Event.State.HasFlag (Gdk.ModifierType.ShiftMask))
Buffer.MoveMark (Buffer.SelectionBound, InputLineBegin);
- return Task.FromResult (true);
+ return true;
}
break;
case Gdk.Key.period:
- return Task.FromResult (false);
+ return false;
default:
- return Task.FromResult (false);
+ return false;
}
- return Task.FromResult (false);
+ return false;
}
public TextIter InputLineBegin {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ContextMenuTreeView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ContextMenuTreeView.cs
index c1ec98b799..8c4bef84e5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ContextMenuTreeView.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ContextMenuTreeView.cs
@@ -54,6 +54,18 @@ namespace MonoDevelop.Components
base.OnDragBegin (context);
}
+ protected override void OnRowActivated (Gtk.TreePath path, Gtk.TreeViewColumn column)
+ {
+ // This is to work around an issue in ContextMenuTreeView, when we set the
+ // SelectFunction to block selection then it doesn't seem to always get
+ // properly unset.
+ // https://bugzilla.xamarin.com/show_bug.cgi?id=40469
+ this.Selection.SelectFunction = (s, m, p, b) => {
+ return true;
+ };
+ base.OnRowActivated (path, column);
+ }
+
protected override bool OnButtonPressEvent (Gdk.EventButton evnt)
{
selectOnRelease = false;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs
index 8fd9b418a1..73dcd72b2b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs
@@ -173,6 +173,8 @@ namespace MonoDevelop.Components
public void GrabFocus ()
{
+ if (nativeWidget is Gtk.Widget)
+ ((Gtk.Widget)nativeWidget).GrabFocus ();
// TODO
}
@@ -192,6 +194,7 @@ namespace MonoDevelop.Components
var gtkWidget = nativeWidget as Gtk.Widget;
if (gtkWidget != null) {
gtkWidget.Destroy ();
+ gtkWidget.Dispose ();
}
#if MAC
else if (nativeWidget is NSView)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs
index 13e9a1419f..7c7cc2361d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs
@@ -65,7 +65,10 @@ namespace MonoDevelop.Components
public static string GetHex (this Gdk.Color color)
{
- return String.Format("#{0:x2}{1:x2}{2:x2}", (byte)(color.Red), (byte)(color.Green), (byte)(color.Blue));
+ return String.Format("#{0:x2}{1:x2}{2:x2}",
+ (byte)(((double)color.Red / ushort.MaxValue) * 255),
+ (byte)(((double)color.Green / ushort.MaxValue) * 255),
+ (byte)(((double)color.Blue / ushort.MaxValue) * 255));
}
public static Gdk.Color ToGdkColor (this Cairo.Color color)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkWorkarounds.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkWorkarounds.cs
index 668a592c9b..5046ee0b41 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkWorkarounds.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkWorkarounds.cs
@@ -39,6 +39,9 @@ using System.Text.RegularExpressions;
using AppKit;
using MonoDevelop.Components.Mac;
#endif
+#if WIN32
+using System.Windows.Input;
+#endif
namespace MonoDevelop.Components
{
@@ -83,9 +86,6 @@ namespace MonoDevelop.Components
[DllImport (PangoUtil.LIBQUARTZ)]
static extern IntPtr gdk_quartz_window_get_nswindow (IntPtr window);
- [DllImport (PangoUtil.LIBQUARTZ)]
- static extern bool gdk_window_has_embedded_nsview_focus (IntPtr window);
-
struct CGRect32
{
public float X, Y, Width, Height;
@@ -379,6 +379,19 @@ namespace MonoDevelop.Components
public static Gdk.ModifierType GetCurrentKeyModifiers ()
{
+ #if WIN32
+ Gdk.ModifierType mtype = Gdk.ModifierType.None;
+ ModifierKeys mod = Keyboard.Modifiers;
+ if ((mod & ModifierKeys.Shift) > 0)
+ mtype |= Gdk.ModifierType.ShiftMask;
+ if ((mod & ModifierKeys.Control) > 0)
+ mtype |= Gdk.ModifierType.ControlMask;
+ if ((mod & ModifierKeys.Alt) > 0)
+ mtype |= Gdk.ModifierType.Mod1Mask; // Alt key
+ if ((mod & ModifierKeys.Windows) > 0)
+ mtype |= Gdk.ModifierType.Mod2Mask; // Command key
+ return mtype;
+ #else
if (Platform.IsMac) {
Gdk.ModifierType mtype = Gdk.ModifierType.None;
ulong mod;
@@ -402,6 +415,7 @@ namespace MonoDevelop.Components
Gtk.Global.GetCurrentEventState (out mtype);
return mtype;
}
+ #endif
}
public static void GetPageScrollPixelDeltas (this Gdk.EventScroll evt, double pageSizeX, double pageSizeY,
@@ -851,19 +865,6 @@ namespace MonoDevelop.Components
objc_msgSend_IntPtr (ptr, sel_invalidateShadow);
}
- public static bool HasNSTextFieldFocus (Gdk.Window window)
- {
- if (Platform.IsMac) {
- try {
- return gdk_window_has_embedded_nsview_focus (window.Handle);
- } catch (Exception) {
- return false;
- }
- } else {
- return false;
- }
- }
-
[DllImport (PangoUtil.LIBGTKGLUE, CallingConvention = CallingConvention.Cdecl)]
static extern void gtksharp_container_leak_fixed_marker ();
@@ -1230,21 +1231,6 @@ namespace MonoDevelop.Components
return GetScaleFactor (Gdk.Screen.Default, 0);
}
- public static double GetPixelScale ()
- {
- if (Platform.IsWindows)
- return GetScaleFactor ();
- else
- return 1d;
- }
-
- public static int ConvertToPixelScale (int size)
- {
- double scale = GetPixelScale ();
-
- return (int)(size * scale);
- }
-
public static Gdk.Pixbuf RenderIcon (this Gtk.IconSet iconset, Gtk.Style style, Gtk.TextDirection direction, Gtk.StateType state, Gtk.IconSize size, Gtk.Widget widget, string detail, double scale)
{
if (scale == 1d)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/IdeTheme.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/IdeTheme.cs
index 11c939e6a5..2e93119087 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/IdeTheme.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/IdeTheme.cs
@@ -45,7 +45,7 @@ namespace MonoDevelop.Components
internal static string DefaultGtkDataFolder;
internal static string DefaultGtk2RcFiles;
- public static Skin UserInterfaceSkin { get; private set; }
+ public static Theme UserInterfaceTheme { get; private set; }
static IdeTheme ()
{
@@ -100,7 +100,7 @@ namespace MonoDevelop.Components
if (Platform.IsLinux) {
DefaultTheme = Gtk.Settings.Default.ThemeName;
- string theme = IdeApp.Preferences.UserInterfaceTheme;
+ string theme = IdeApp.Preferences.UserInterfaceThemeName;
if (string.IsNullOrEmpty (theme))
theme = DefaultTheme;
ValidateGtkTheme (ref theme);
@@ -123,12 +123,12 @@ namespace MonoDevelop.Components
if (DefaultTheme == null)
SetupGtkTheme ();
- string current_theme = IdeApp.Preferences.UserInterfaceTheme;
+ string current_theme = IdeApp.Preferences.UserInterfaceThemeName;
if (!Platform.IsLinux) {
- UserInterfaceSkin = IdeApp.Preferences.UserInterfaceTheme == "Dark" ? Skin.Dark : Skin.Light;
- if (current_theme != UserInterfaceSkin.ToString ()) // Only Skin names allowed on Win/Mac
- current_theme = UserInterfaceSkin.ToString ();
+ UserInterfaceTheme = IdeApp.Preferences.UserInterfaceThemeName == "Dark" ? Theme.Dark : Theme.Light;
+ if (current_theme != UserInterfaceTheme.ToString ()) // Only theme names allowed on Win/Mac
+ current_theme = UserInterfaceTheme.ToString ();
}
var use_bundled_theme = false;
@@ -183,7 +183,7 @@ namespace MonoDevelop.Components
} else if (Platform.IsMac) {
var gtkrc = "gtkrc.mac";
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Dark)
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Dark)
gtkrc += "-dark";
gtkrc = PropertyService.EntryAssemblyPath.Combine (gtkrc);
@@ -219,10 +219,10 @@ namespace MonoDevelop.Components
if (Platform.IsLinux) {
var defaultStyle = Gtk.Rc.GetStyle (IdeApp.Workbench.RootWindow);
var bgColor = defaultStyle.Background (Gtk.StateType.Normal);
- UserInterfaceSkin = HslColor.Brightness (bgColor) < 0.5 ? Skin.Dark : Skin.Light;
+ UserInterfaceTheme = HslColor.Brightness (bgColor) < 0.5 ? Theme.Dark : Theme.Light;
}
- if (UserInterfaceSkin == Skin.Dark)
+ if (UserInterfaceTheme == Theme.Dark)
Xwt.Drawing.Context.SetGlobalStyle ("dark");
else
Xwt.Drawing.Context.ClearGlobalStyle ("dark");
@@ -287,12 +287,12 @@ namespace MonoDevelop.Components
static void SetTheme (NSWindow window)
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light)
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light)
window.Appearance = NSAppearance.GetAppearance (NSAppearance.NameAqua);
else
window.Appearance = NSAppearance.GetAppearance (NSAppearance.NameVibrantDark);
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light) {
window.StyleMask &= ~NSWindowStyle.TexturedBackground;
return;
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs
index 166f3e401b..dccc878c76 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageLoader.cs
@@ -184,8 +184,9 @@ namespace MonoDevelop.Components
lock (mutex) {
if (Downloading)
completed += value;
+ else
+ value (this, EventArgs.Empty);
}
- value (this, EventArgs.Empty);
}
remove {
lock (mutex) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageView.cs
index efe7bf474f..6760f647d5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageView.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/ImageView.cs
@@ -90,17 +90,13 @@ namespace MonoDevelop.Components
}
}
- double IconScale {
- get { return GtkWorkarounds.GetPixelScale (); }
- }
-
protected override void OnSizeRequested (ref Gtk.Requisition requisition)
{
requisition.Width = Xpad * 2;
requisition.Height = Ypad * 2;
if (image != null) {
- requisition.Width += (int)(image.Width * IconScale);
- requisition.Height += (int)(image.Height * IconScale);
+ requisition.Width += (int)(image.Width);
+ requisition.Height += (int)(image.Height);
}
}
@@ -125,11 +121,10 @@ namespace MonoDevelop.Components
var alloc = Allocation;
alloc.Inflate (-Xpad, -Ypad);
using (var ctx = CairoHelper.Create (evnt.Window)) {
- var x = Math.Round (alloc.X + (alloc.Width - image.Width * IconScale) * Xalign);
- var y = Math.Round (alloc.Y + (alloc.Height - image.Height * IconScale) * Yalign);
+ var x = Math.Round (alloc.X + (alloc.Width - image.Width) * Xalign);
+ var y = Math.Round (alloc.Y + (alloc.Height - image.Height) * Yalign);
ctx.Save ();
- ctx.Scale (IconScale, IconScale);
- ctx.DrawImage (this, IsParentDisabled () ? image.WithAlpha (0.4) : image, x / IconScale, y / IconScale);
+ ctx.DrawImage (this, IsParentDisabled () ? image.WithAlpha (0.4) : image, x, y);
ctx.Restore ();
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/SearchEntry.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/SearchEntry.cs
index 98669371fa..eed709a2ae 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/SearchEntry.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/SearchEntry.cs
@@ -150,12 +150,7 @@ namespace MonoDevelop.Components
private void BuildWidget ()
{
- var yscale = 0f;
-
- if (Platform.IsWindows)
- yscale = (float)GtkWorkarounds.GetScaleFactor (this);
-
- alignment = new Alignment (0.5f, 0.5f, 1f, yscale);
+ alignment = new Alignment (0.5f, 0.5f, 1f, 0f);
alignment.SetPadding (1, 1, 3, 3);
VisibleWindow = false;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Windows/GtkWPFWidget.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Windows/GtkWPFWidget.cs
index 60370b13db..f48c95b7d1 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Windows/GtkWPFWidget.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Windows/GtkWPFWidget.cs
@@ -65,7 +65,13 @@ namespace MonoDevelop.Components.Windows
WidgetFlags |= WidgetFlags.NoWindow;
}
- void RepositionWpfWindow ()
+ protected virtual void RepositionWpfWindow ()
+ {
+ int scale = (int)MonoDevelop.Components.GtkWorkarounds.GetScaleFactor(this);
+ RepositionWpfWindow (scale, scale);
+ }
+
+ protected void RepositionWpfWindow (int hscale, int vscale)
{
int x, y;
if (TranslateCoordinates (Toplevel, 0, 0, out x, out y)) {
@@ -75,8 +81,8 @@ namespace MonoDevelop.Components.Windows
wpfWidgetHost.Left = Allocation.Left;
wpfWidgetHost.Top = Allocation.Top;
}
- wpfWidgetHost.Width = Allocation.Width + 1;
- wpfWidgetHost.Height = Allocation.Height + 1;
+ wpfWidgetHost.Width = (Allocation.Width + 1) * hscale;
+ wpfWidgetHost.Height = (Allocation.Height + 1) * vscale;
}
protected override void OnRealized ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs
index a19073f47e..d7b25cf2f8 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionData.cs
@@ -135,11 +135,10 @@ namespace MonoDevelop.Ide.CodeCompletion
return result;
}
- public virtual Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public virtual void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
var currentWord = GetCurrentWord (window, descriptor);
window.CompletionWidget.SetCompletionText (window.CodeCompletionContext, currentWord, CompletionText);
- return Task.FromResult (ka);
}
public override string ToString ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs
index 97026ae2b2..1f4217dae0 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs
@@ -35,11 +35,314 @@ using System.Linq;
using MonoDevelop.Ide.Editor.Extension;
using System.ComponentModel;
using System.Threading;
-using System.Threading.Tasks;
-
+using Xwt.Drawing;
+
namespace MonoDevelop.Ide.CodeCompletion
{
- public class CompletionListWindow : ListWindow, IListDataProvider
+ public class CompletionListWindow : IListDataProvider
+ {
+ CompletionListWindowGtk window;
+
+ public CompletionListWindow ()
+ {
+ window = new CompletionListWindowGtk (this);
+ }
+
+ CompletionListWindow (Gtk.WindowType type)
+ {
+ window = new CompletionListWindowGtk (this, type);
+ }
+
+ internal static CompletionListWindow CreateAsDialog ()
+ {
+ var w = new CompletionListWindow (Gtk.WindowType.Toplevel);
+ w.window.TypeHint = Gdk.WindowTypeHint.Dialog;
+ w.window.Decorated = false;
+ return w;
+ }
+
+ int IListDataProvider.ItemCount {
+ get {
+ return window.ItemCount;
+ }
+ }
+
+ int IListDataProvider.CompareTo (int n, int m)
+ {
+ return window.CompareTo (n, m);
+ }
+
+ CompletionCategory IListDataProvider.GetCompletionCategory (int n)
+ {
+ return window.GetCompletionCategory (n);
+ }
+
+ CompletionData IListDataProvider.GetCompletionData (int n)
+ {
+ return window.GetCompletionData (n);
+ }
+
+ string IListDataProvider.GetCompletionText (int n)
+ {
+ return window.GetCompletionText (n);
+ }
+
+ string IListDataProvider.GetDescription (int n, bool isSelected)
+ {
+ return window.GetDescription (n, isSelected);
+ }
+
+ Xwt.Drawing.Image IListDataProvider.GetIcon (int n)
+ {
+ return window.GetIcon (n);
+ }
+
+ string IListDataProvider.GetMarkup (int n)
+ {
+ return window.GetMarkup (n);
+ }
+
+ string IListDataProvider.GetRightSideDescription (int n, bool isSelected)
+ {
+ return window.GetRightSideDescription (n, isSelected);
+ }
+
+ string IListDataProvider.GetText (int n)
+ {
+ return window.GetText (n);
+ }
+
+ bool IListDataProvider.HasMarkup (int n)
+ {
+ return window.HasMarkup (n);
+ }
+
+ public ICompletionDataList CompletionDataList {
+ get { return window.CompletionDataList; }
+ set { window.CompletionDataList = value; }
+ }
+
+ public Xwt.Rectangle Allocation {
+ get {
+ var r = window.Allocation;
+ return new Xwt.Rectangle (r.X, r.Y, r.Width, r.Height);
+ }
+ }
+
+ public CodeCompletionContext CodeCompletionContext {
+ get { return window.CodeCompletionContext; }
+ set { window.CodeCompletionContext = value; }
+ }
+
+ internal int StartOffset {
+ get { return window.StartOffset; }
+ set { window.StartOffset = value; }
+ }
+
+ public int EndOffset {
+ get { return window.EndOffset; }
+ set { window.EndOffset = value; }
+ }
+
+ internal ICompletionWidget CompletionWidget {
+ get { return window.CompletionWidget; }
+ set { window.CompletionWidget = value; }
+ }
+
+ public bool Visible {
+ get { return window.Visible; }
+ }
+
+ public int X {
+ get { return window.X; }
+ }
+
+ public int Y {
+ get { return window.Y; }
+ }
+
+ public bool AutoSelect {
+ get { return window.AutoSelect; }
+ set { window.AutoSelect = value; }
+ }
+
+ public bool SelectionEnabled {
+ get { return window.SelectionEnabled; }
+ }
+
+ public bool AutoCompleteEmptyMatch {
+ get { return window.AutoCompleteEmptyMatch; }
+ set { window.AutoCompleteEmptyMatch = value; }
+ }
+
+ public bool AutoCompleteEmptyMatchOnCurlyBrace {
+ get { return window.AutoCompleteEmptyMatchOnCurlyBrace; }
+ set { window.AutoCompleteEmptyMatchOnCurlyBrace = value; }
+ }
+
+ public string CompletionString {
+ get { return window.List.CompletionString; }
+ set { window.List.CompletionString = value; }
+ }
+
+ public string DefaultCompletionString {
+ get { return window.DefaultCompletionString; }
+ set { window.DefaultCompletionString = value; }
+ }
+
+ public bool CloseOnSquareBrackets {
+ get { return window.CloseOnSquareBrackets; }
+ set { window.CloseOnSquareBrackets = value; }
+ }
+
+ public int InitialWordLength {
+ get { return window.InitialWordLength; }
+ }
+
+ public event EventHandler<CodeCompletionContextEventArgs> WordCompleted {
+ add { window.WordCompleted += value; }
+ remove { window.WordCompleted -= value; }
+ }
+
+ /// <summary>
+ /// For unit test purposes.
+ /// </summary>
+ [EditorBrowsableAttribute (EditorBrowsableState.Never)]
+ internal event EventHandler WindowClosed {
+ add { window.WindowClosed += value; }
+ remove { window.WindowClosed -= value; }
+ }
+
+ internal Gtk.Window TransientFor {
+ get { return window.TransientFor; }
+ set { window.TransientFor = value; }
+ }
+
+ public CompletionTextEditorExtension Extension {
+ get { return window.Extension; }
+ set { window.Extension = value; }
+ }
+
+ internal void InitializeListWindow (ICompletionWidget completionWidget, CodeCompletionContext completionContext)
+ {
+ window.InitializeListWindow (completionWidget, completionContext);
+ }
+
+ internal bool ShowListWindow (char firstChar, ICompletionDataList list, ICompletionWidget completionWidget, CodeCompletionContext completionContext)
+ {
+ return window.ShowListWindow (firstChar, list, completionWidget, completionContext);
+ }
+
+ internal bool ShowListWindow (ICompletionDataList list, CodeCompletionContext completionContext)
+ {
+ return window.ShowListWindow (list, completionContext);
+ }
+
+ public void Show ()
+ {
+ window.Show ();
+ DesktopService.RemoveWindowShadow (window);
+ }
+
+ public void Destroy ()
+ {
+ window.Destroy ();
+ }
+
+ public string PartialWord {
+ get {
+ return window.PartialWord;
+ }
+ }
+
+ public string CurrentPartialWord {
+ get {
+ return window.CurrentPartialWord;
+ }
+ }
+
+ public bool IsUniqueMatch {
+ get {
+ return window.IsUniqueMatch;
+ }
+ }
+
+ public bool PreProcessKeyEvent (KeyDescriptor descriptor)
+ {
+ return window.PreProcessKeyEvent (descriptor);
+ }
+
+ public void PostProcessKeyEvent (KeyDescriptor descriptor)
+ {
+ window.PostProcessKeyEvent (descriptor);
+ }
+
+ internal bool IsInCompletion {
+ get {
+ return window.IsInCompletion;
+ }
+ }
+
+ public void UpdateWordSelection ()
+ {
+ window.UpdateWordSelection ();
+ }
+
+ public void RepositionWindow (Xwt.Rectangle? newCaret = null)
+ {
+ var r = newCaret != null ? new Gdk.Rectangle ((int)newCaret.Value.X, (int)newCaret.Value.Y, (int)newCaret.Value.Width, (int)newCaret.Value.Height) : (Gdk.Rectangle?)null;
+ window.RepositionWindow (r);
+ }
+
+ public void HideWindow ()
+ {
+ window.HideWindow ();
+ }
+
+ public void ToggleCategoryMode ()
+ {
+ window.ToggleCategoryMode ();
+ }
+
+ /// <summary>
+ /// Gets or sets a value indicating that shift was pressed during enter.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if was shift pressed; otherwise, <c>false</c>.
+ /// </value>
+ public bool WasShiftPressed {
+ get { return window.WasShiftPressed; }
+ }
+
+ // Used by tests
+ internal void FilterWords ()
+ {
+ window.List.FilterWords ();
+ }
+
+ public void ResetSizes ()
+ {
+ window.ResetSizes ();
+ }
+
+ public List<int> FilteredItems {
+ get {
+ return window.FilteredItems;
+ }
+ }
+
+ internal void ResetState ()
+ {
+ window.ResetState ();
+ }
+
+ public bool CompleteWord ()
+ {
+ return window.CompleteWord ();
+ }
+ }
+
+ class CompletionListWindowGtk : ListWindow
{
const int declarationWindowMargin = 3;
@@ -50,6 +353,8 @@ namespace MonoDevelop.Ide.CodeCompletion
int initialWordLength;
int previousWidth = -1, previousHeight = -1;
+ CompletionListWindow facade;
+
public CodeCompletionContext CodeCompletionContext {
get;
set;
@@ -123,22 +428,33 @@ namespace MonoDevelop.Ide.CodeCompletion
}
}
- public CompletionListWindow (WindowType type = WindowType.Popup) : base(type)
+ public CompletionListWindowGtk (CompletionListWindow facade, WindowType type = WindowType.Popup) : base(type)
{
+ this.facade = facade;
+
if (IdeApp.Workbench != null)
this.TransientFor = IdeApp.Workbench.RootWindow;
TypeHint = Gdk.WindowTypeHint.Combo;
SizeAllocated += new SizeAllocatedHandler (ListSizeChanged);
Events = Gdk.EventMask.PropertyChangeMask;
WindowTransparencyDecorator.Attach (this);
- DataProvider = this;
+ DataProvider = facade;
HideDeclarationView ();
+ VisibilityNotifyEvent += (object sender, VisibilityNotifyEventArgs e) => {
+ if (!Visible)
+ HideDeclarationView ();
+ };
List.ListScrolled += (object sender, EventArgs e) => {
HideDeclarationView ();
UpdateDeclarationView ();
};
List.WordsFiltered += delegate {
- RepositionDeclarationViewWindow ();
+ HideDeclarationView ();
+ UpdateDeclarationView ();
+ };
+ List.VisibilityNotifyEvent += (object sender, VisibilityNotifyEventArgs e) => {
+ if (!List.Visible)
+ HideDeclarationView ();
};
}
@@ -192,13 +508,13 @@ namespace MonoDevelop.Ide.CodeCompletion
base.OnDestroyed ();
}
- public async Task PostProcessKeyEvent (KeyDescriptor descriptor)
+ public void PostProcessKeyEvent (KeyDescriptor descriptor)
{
KeyActions ka = KeyActions.None;
bool keyHandled = false;
if (CompletionDataList != null) {
foreach (var handler in CompletionDataList.KeyHandler) {
- if (handler.PostProcessKey (this, descriptor, out ka)) {
+ if (handler.PostProcessKey (facade, descriptor, out ka)) {
keyHandled = true;
break;
}
@@ -207,10 +523,8 @@ namespace MonoDevelop.Ide.CodeCompletion
if (!keyHandled)
ka = PostProcessKey (descriptor);
- if ((ka & KeyActions.Complete) != 0) {
- var res = await CompleteWord (ka, descriptor);
- ka = res.Item1;
- }
+ if ((ka & KeyActions.Complete) != 0)
+ CompleteWord (ref ka, descriptor);
if ((ka & KeyActions.CloseWindow) != 0) {
CompletionWindowManager.HideWindow ();
OnWindowClosed (EventArgs.Empty);
@@ -238,7 +552,7 @@ namespace MonoDevelop.Ide.CodeCompletion
List.QueueDraw ();
}
- public async Task<bool> PreProcessKeyEvent (KeyDescriptor descriptor)
+ public bool PreProcessKeyEvent (KeyDescriptor descriptor)
{
if (descriptor.SpecialKey == SpecialKey.Escape) {
CompletionWindowManager.HideWindow ();
@@ -249,7 +563,7 @@ namespace MonoDevelop.Ide.CodeCompletion
bool keyHandled = false;
if (CompletionDataList != null) {
foreach (ICompletionKeyHandler handler in CompletionDataList.KeyHandler) {
- if (handler.PreProcessKey (this, descriptor, out ka)) {
+ if (handler.PreProcessKey (facade, descriptor, out ka)) {
keyHandled = true;
break;
}
@@ -257,10 +571,8 @@ namespace MonoDevelop.Ide.CodeCompletion
}
if (!keyHandled)
ka = PreProcessKey (descriptor);
- if ((ka & KeyActions.Complete) != 0) {
- var res = await CompleteWord (ka, descriptor);
- ka = res.Item1;
- }
+ if ((ka & KeyActions.Complete) != 0)
+ CompleteWord (ref ka, descriptor);
if ((ka & KeyActions.CloseWindow) != 0) {
CompletionWindowManager.HideWindow ();
@@ -485,35 +797,35 @@ namespace MonoDevelop.Ide.CodeCompletion
Reposition (true);
}
- public async Task<bool> CompleteWord ()
+ public bool CompleteWord ()
{
- var res = await CompleteWord (KeyActions.None, KeyDescriptor.Empty);
- return res.Item2;
+ KeyActions ka = KeyActions.None;
+ return CompleteWord (ref ka, KeyDescriptor.Empty);
}
internal bool IsInCompletion { get; set; }
- public async Task<Tuple<KeyActions, bool>> CompleteWord (KeyActions ka, KeyDescriptor descriptor)
+ public bool CompleteWord (ref KeyActions ka, KeyDescriptor descriptor)
{
if (SelectedItem == -1 || completionDataList == null)
- return Tuple.Create (ka, false);
+ return false;
var item = completionDataList [SelectedItem];
if (item == null)
- return Tuple.Create (ka, false);
+ return false;
IsInCompletion = true;
- try {
- // first close the completion list, then insert the text.
- // this is required because that's the logical event chain, otherwise things could be messed up
+ try {
+ // first close the completion list, then insert the text.
+ // this is required because that's the logical event chain, otherwise things could be messed up
CloseCompletionList ();
/* var cdItem = (CompletionData)item;
cdItem.InsertCompletionText (this, ref ka, closeChar, keyChar, modifier);
AddWordToHistory (PartialWord, cdItem.CompletionText);
OnWordCompleted (new CodeCompletionContextEventArgs (CompletionWidget, CodeCompletionContext, cdItem.CompletionText));
- */
+ */
if (item.HasOverloads && declarationviewwindow.CurrentOverload >= 0 && declarationviewwindow.CurrentOverload < item.OverloadedData.Count) {
- ka = await item.OverloadedData[declarationviewwindow.CurrentOverload].InsertCompletionText (this, ka, descriptor);
+ item.OverloadedData[declarationviewwindow.CurrentOverload].InsertCompletionText (facade, ref ka, descriptor);
} else {
- ka = await item.InsertCompletionText (this, ka, descriptor);
+ item.InsertCompletionText (facade, ref ka, descriptor);
}
cache.CommitCompletionData (item);
OnWordCompleted (new CodeCompletionContextEventArgs (CompletionWidget, CodeCompletionContext, item.DisplayText));
@@ -521,7 +833,7 @@ namespace MonoDevelop.Ide.CodeCompletion
IsInCompletion = false;
CompletionWindowManager.HideWindow ();
}
- return Tuple.Create (ka, true);
+ return true;
}
protected virtual void OnWordCompleted (CodeCompletionContextEventArgs e)
@@ -644,8 +956,15 @@ namespace MonoDevelop.Ide.CodeCompletion
base.GdkWindow.GetOrigin (out ox, out oy);
declarationviewwindow.MaximumYTopBound = oy;
int y = rect.Y + Theme.Padding - (int)List.vadj.Value;
- declarationviewwindow.ShowPopup (this, new Gdk.Rectangle (0, Math.Min (Allocation.Height, Math.Max (0, y)), Allocation.Width, rect.Height), PopupPosition.Left);
- declarationViewHidden = false;
+ if (!declarationViewHidden && Visible && List.Visible && completionDataList != null &&
+ List.SelectionFilterIndex < completionDataList.Count && List.SelectionFilterIndex != -1)
+ declarationviewwindow.ShowPopup (
+ this,
+ new Gdk.Rectangle (0, Math.Min (Allocation.Height, Math.Max (0, y)), Allocation.Width, rect.Height),
+ PopupPosition.Left);
+ if (declarationViewHidden || !Visible || !List.Visible || completionDataList == null ||
+ List.SelectionFilterIndex >= completionDataList.Count || List.SelectionFilterIndex == -1)
+ HideDeclarationView();
}
bool DelayedTooltipShow ()
@@ -706,6 +1025,7 @@ namespace MonoDevelop.Ide.CodeCompletion
}
if (declarationViewHidden && Visible) {
+ declarationViewHidden = false;
RepositionDeclarationViewWindow ();
}
@@ -722,63 +1042,63 @@ namespace MonoDevelop.Ide.CodeCompletion
#region IListDataProvider
- int IListDataProvider.ItemCount
+ internal int ItemCount
{
get { return completionDataList != null ? completionDataList.Count : 0; }
}
- CompletionCategory IListDataProvider.GetCompletionCategory (int n)
+ internal CompletionCategory GetCompletionCategory (int n)
{
return completionDataList[n].CompletionCategory;
}
- string IListDataProvider.GetText (int n)
+ internal string GetText (int n)
{
return completionDataList[n].DisplayText;
}
- string IListDataProvider.GetDescription (int n, bool isSelected)
+ internal string GetDescription (int n, bool isSelected)
{
return ((CompletionData)completionDataList[n]).GetDisplayDescription (isSelected);
}
- string IListDataProvider.GetRightSideDescription (int n, bool isSelected)
+ internal string GetRightSideDescription (int n, bool isSelected)
{
return ((CompletionData)completionDataList[n]).GetRightSideDescription (isSelected);
}
- bool IListDataProvider.HasMarkup (int n)
+ internal bool HasMarkup (int n)
{
return true;
}
//NOTE: we only ever return markup for items marked as obsolete
- string IListDataProvider.GetMarkup (int n)
+ internal string GetMarkup (int n)
{
var completionData = completionDataList[n];
return completionData.GetDisplayTextMarkup ();
}
- string IListDataProvider.GetCompletionText (int n)
+ internal string GetCompletionText (int n)
{
return ((CompletionData)completionDataList[n]).CompletionText;
}
- CompletionData IListDataProvider.GetCompletionData (int n)
+ internal CompletionData GetCompletionData (int n)
{
return completionDataList[n];
}
IComparer<CompletionData> defaultComparer;
- int IListDataProvider.CompareTo (int n, int m)
+ internal int CompareTo (int n, int m)
{
var item1 = completionDataList [n];
var item2 = completionDataList [m];
return (defaultComparer ?? (defaultComparer = GetComparerForCompletionList (completionDataList))).Compare (item1, item2);
}
- Xwt.Drawing.Image IListDataProvider.GetIcon (int n)
+ internal Xwt.Drawing.Image GetIcon (int n)
{
string iconName = ((CompletionData)completionDataList[n]).Icon;
if (string.IsNullOrEmpty (iconName))
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs
index d9cd9667ba..b693a28e9f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs
@@ -28,8 +28,7 @@ using System;
using MonoDevelop.Core;
using MonoDevelop.Ide.Gui.Content;
using MonoDevelop.Ide.Editor.Extension;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.Ide.CodeCompletion
{
public class CompletionWindowManager
@@ -130,7 +129,6 @@ namespace MonoDevelop.Ide.CodeCompletion
if (IdeApp.Preferences.ForceSuggestionMode)
wnd.AutoSelect = false;
wnd.Show ();
- DesktopService.RemoveWindowShadow (wnd);
OnWindowShown (EventArgs.Empty);
return true;
} catch (Exception ex) {
@@ -159,10 +157,10 @@ namespace MonoDevelop.Ide.CodeCompletion
OnWindowClosed (EventArgs.Empty);
}
- public static Task<bool> PreProcessKeyEvent (KeyDescriptor descriptor)
+ public static bool PreProcessKeyEvent (KeyDescriptor descriptor)
{
if (!IsVisible)
- return Task.FromResult (false);
+ return false;
if (descriptor.KeyChar != '\0') {
wnd.EndOffset = wnd.StartOffset + wnd.CurrentPartialWord.Length + 1;
}
@@ -184,16 +182,16 @@ namespace MonoDevelop.Ide.CodeCompletion
public static void UpdateWordSelection (string text)
{
if (IsVisible) {
- wnd.List.CompletionString = text;
+ wnd.CompletionString = text;
wnd.UpdateWordSelection ();
}
}
- public static Task PostProcessKeyEvent (KeyDescriptor descriptor)
+ public static void PostProcessKeyEvent (KeyDescriptor descriptor)
{
if (!IsVisible)
- return TaskUtil.Default<object> ();
- return wnd.PostProcessKeyEvent (descriptor);
+ return;
+ wnd.PostProcessKeyEvent (descriptor);
}
public static void RepositionWindow ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWidget.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWidget.cs
index 53d756e2ad..54da3bad1f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWidget.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWidget.cs
@@ -43,7 +43,7 @@ using MonoDevelop.Ide.Gui;
namespace MonoDevelop.Ide.CodeCompletion
{
- public class ListWidget : Gtk.DrawingArea
+ class ListWidget : Gtk.DrawingArea
{
int listWidth = minSize;
const int minSize = 400;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWindow.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWindow.cs
index dfd9a1927f..20d26fdb51 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWindow.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWindow.cs
@@ -49,7 +49,7 @@ namespace MonoDevelop.Ide.CodeCompletion
Complete = 8
}
- public class ListWindow : PopoverWindow
+ class ListWindow : PopoverWindow
{
const int WindowWidth = 400;
@@ -105,11 +105,11 @@ namespace MonoDevelop.Ide.CodeCompletion
Theme.Padding = 0;
UpdateStyle ();
- Gui.Styles.Changed += HandleSkinChanged;
- IdeApp.Preferences.ColorScheme.Changed += HandleSkinChanged;
+ Gui.Styles.Changed += HandleThemeChanged;
+ IdeApp.Preferences.ColorScheme.Changed += HandleThemeChanged;
}
- void HandleSkinChanged (object sender, EventArgs e)
+ void HandleThemeChanged (object sender, EventArgs e)
{
UpdateStyle ();
}
@@ -125,8 +125,8 @@ namespace MonoDevelop.Ide.CodeCompletion
protected override void OnDestroyed ()
{
base.OnDestroyed ();
- Gui.Styles.Changed -= HandleSkinChanged;
- IdeApp.Preferences.ColorScheme.Changed -= HandleSkinChanged;
+ Gui.Styles.Changed -= HandleThemeChanged;
+ IdeApp.Preferences.ColorScheme.Changed -= HandleThemeChanged;
}
protected virtual void DoubleClick ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindow.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindow.cs
index 9a042f0066..fd5fbfd6de 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindow.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindow.cs
@@ -97,8 +97,8 @@ namespace MonoDevelop.Ide.CodeCompletion
ContentBox.Add (vb2);
UpdateStyle ();
- Styles.Changed += HandleSkinChanged;
- IdeApp.Preferences.ColorScheme.Changed += HandleSkinChanged;
+ Styles.Changed += HandleThemeChanged;
+ IdeApp.Preferences.ColorScheme.Changed += HandleThemeChanged;
ShowAll ();
DesktopService.RemoveWindowShadow (this);
@@ -107,8 +107,8 @@ namespace MonoDevelop.Ide.CodeCompletion
void UpdateStyle ()
{
var scheme = SyntaxModeService.GetColorStyle (IdeApp.Preferences.ColorScheme);
- if (!scheme.FitsIdeSkin (IdeApp.Preferences.UserInterfaceSkin))
- scheme = SyntaxModeService.GetDefaultColorStyle (IdeApp.Preferences.UserInterfaceSkin);
+ if (!scheme.FitsIdeTheme (IdeApp.Preferences.UserInterfaceTheme))
+ scheme = SyntaxModeService.GetDefaultColorStyle (IdeApp.Preferences.UserInterfaceTheme);
Theme.SetSchemeColors (scheme);
Theme.Font = FontService.SansFont.CopyModified (Styles.FontScale11);
@@ -122,7 +122,7 @@ namespace MonoDevelop.Ide.CodeCompletion
QueueDraw ();
}
- void HandleSkinChanged (object sender, EventArgs e)
+ void HandleThemeChanged (object sender, EventArgs e)
{
UpdateStyle ();
}
@@ -130,8 +130,8 @@ namespace MonoDevelop.Ide.CodeCompletion
protected override void OnDestroyed ()
{
base.OnDestroyed ();
- Styles.Changed -= HandleSkinChanged;
- IdeApp.Preferences.ColorScheme.Changed -= HandleSkinChanged;
+ Styles.Changed -= HandleThemeChanged;
+ IdeApp.Preferences.ColorScheme.Changed -= HandleThemeChanged;
}
int lastParam = -2;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs
index b5aebce226..3949b5b5a6 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs
@@ -289,12 +289,12 @@ namespace MonoDevelop.Ide.CodeCompletion
}
if (CompletionWindowManager.IsVisible) {
- var completionWindow = new Rectangle (CompletionWindowManager.X, CompletionWindowManager.Y, CompletionWindowManager.Wnd.Allocation.Width, CompletionWindowManager.Wnd.Allocation.Height);
- if (completionWindow.IntersectsWith (new Rectangle (X, Y, allocation.Width, allocation.Height))) {
- X = completionWindow.X;
- Y = completionWindow.Y - allocation.Height - 6;
+ var completionWindow = new Xwt.Rectangle (CompletionWindowManager.X, CompletionWindowManager.Y, CompletionWindowManager.Wnd.Allocation.Width, CompletionWindowManager.Wnd.Allocation.Height);
+ if (completionWindow.IntersectsWith (new Xwt.Rectangle (X, Y, allocation.Width, allocation.Height))) {
+ X = (int) completionWindow.X;
+ Y = (int)completionWindow.Y - allocation.Height - 6;
if (Y < 0)
- Y = completionWindow.Bottom + 6;
+ Y = (int)completionWindow.Bottom + 6;
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/TooltipInformationWindow.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/TooltipInformationWindow.cs
index 0891cae652..9db0f75515 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/TooltipInformationWindow.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/TooltipInformationWindow.cs
@@ -257,8 +257,8 @@ namespace MonoDevelop.Ide.CodeCompletion
internal void SetDefaultScheme ()
{
var scheme = SyntaxModeService.GetColorStyle (IdeApp.Preferences.ColorScheme);
- if (!scheme.FitsIdeSkin (IdeApp.Preferences.UserInterfaceSkin))
- scheme = SyntaxModeService.GetDefaultColorStyle (IdeApp.Preferences.UserInterfaceSkin);
+ if (!scheme.FitsIdeTheme (IdeApp.Preferences.UserInterfaceTheme))
+ scheme = SyntaxModeService.GetDefaultColorStyle (IdeApp.Preferences.UserInterfaceTheme);
Theme.SetSchemeColors (scheme);
foreColor = Styles.PopoverWindow.DefaultTextColor.ToCairoColor ();
@@ -304,8 +304,8 @@ namespace MonoDevelop.Ide.CodeCompletion
vb2.ShowAll ();
SetDefaultScheme ();
- Styles.Changed += HandleSkinChanged;
- IdeApp.Preferences.ColorScheme.Changed += HandleSkinChanged;
+ Styles.Changed += HandleThemeChanged;
+ IdeApp.Preferences.ColorScheme.Changed += HandleThemeChanged;
}
public override void RepositionWindow(Gdk.Rectangle? newCaret = null)
@@ -331,7 +331,7 @@ namespace MonoDevelop.Ide.CodeCompletion
base.OnPagerRightClicked ();
}
- void HandleSkinChanged (object sender, EventArgs e)
+ void HandleThemeChanged (object sender, EventArgs e)
{
SetDefaultScheme ();
}
@@ -339,8 +339,8 @@ namespace MonoDevelop.Ide.CodeCompletion
protected override void OnDestroyed ()
{
base.OnDestroyed ();
- Styles.Changed -= HandleSkinChanged;
- IdeApp.Preferences.ColorScheme.Changed -= HandleSkinChanged;
+ Styles.Changed -= HandleThemeChanged;
+ IdeApp.Preferences.ColorScheme.Changed -= HandleThemeChanged;
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateCompletionData.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateCompletionData.cs
index 2348949c41..f3c254cc0c 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateCompletionData.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateCompletionData.cs
@@ -30,8 +30,7 @@ using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Core;
using MonoDevelop.Ide.Editor.Extension;
using MonoDevelop.Ide.Editor;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.Ide.CodeTemplates
{
public interface ICodeTemplateHandler
@@ -54,10 +53,9 @@ namespace MonoDevelop.Ide.CodeTemplates
this.Description = template.Shortcut + Environment.NewLine + GettextCatalog.GetString (template.Description);
}
- public override Task<KeyActions> InsertCompletionText (CompletionListWindow window, KeyActions ka, KeyDescriptor descriptor)
+ public override void InsertCompletionText (CompletionListWindow window, ref KeyActions ka, KeyDescriptor descriptor)
{
- template.Insert (doc.Editor, doc.DocumentContext);
- return Task.FromResult (ka);
+ template.Insert (doc.Editor, doc.DocumentContext);
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplatePanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplatePanel.cs
index 2a6cf53298..db454bff9e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplatePanel.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplatePanel.cs
@@ -149,31 +149,33 @@ namespace MonoDevelop.Ide.CodeTemplates
CodeTemplateService.Templates = templates;
}
- void RenderIcon (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
+ static void RenderIcon (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
{
- CodeTemplate template = (CodeTemplate)templateStore.GetValue (iter, 0);
-
+ CodeTemplate template = (CodeTemplate)model.GetValue (iter, 0);
+
+ var cri = (CellRendererImage)cell;
if (template == null) {
- pixbufCellRenderer.Image = ImageService.GetIcon (treeviewCodeTemplates.GetRowExpanded (templateStore.GetPath (iter)) ? MonoDevelop.Ide.Gui.Stock.OpenFolder : MonoDevelop.Ide.Gui.Stock.ClosedFolder, IconSize.Menu);
+ cri.Image = ImageService.GetIcon (((TreeView)column.TreeView).GetRowExpanded (model.GetPath (iter)) ? MonoDevelop.Ide.Gui.Stock.OpenFolder : MonoDevelop.Ide.Gui.Stock.ClosedFolder, IconSize.Menu);
} else {
- pixbufCellRenderer.Image = ImageService.GetIcon (template.Icon, IconSize.Menu);
+ cri.Image = ImageService.GetIcon (template.Icon, IconSize.Menu);
}
}
void RenderTemplateName (Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
{
- CodeTemplate template = (CodeTemplate)templateStore.GetValue (iter, 0);
+ CodeTemplate template = (CodeTemplate)model.GetValue (iter, 0);
+ var crt = (CellRendererText)cell;
if (template == null) {
- templateCellRenderer.Markup = (string)templateStore.GetValue (iter, 2);
+ crt.Markup = (string)model.GetValue (iter, 2);
return;
}
- if (treeviewCodeTemplates.Selection.IterIsSelected (iter)) {
- templateCellRenderer.Markup = GLib.Markup.EscapeText (template.Shortcut) + " (" +
+ if (((TreeView)column.TreeView).Selection.IterIsSelected (iter)) {
+ crt.Markup = GLib.Markup.EscapeText (template.Shortcut) + " (" +
GLib.Markup.EscapeText (GettextCatalog.GetString (template.Description)) + ")";
} else {
- templateCellRenderer.Markup = GLib.Markup.EscapeText (template.Shortcut) + " <span foreground=\"" +
+ crt.Markup = GLib.Markup.EscapeText (template.Shortcut) + " <span foreground=\"" +
GetColorString (Style.Text (StateType.Insensitive)) + "\">("
+ GLib.Markup.EscapeText (GettextCatalog.GetString (template.Description)) + ")</span>";
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/PadCodon.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/PadCodon.cs
index 15608d9ec5..66a3d52aef 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/PadCodon.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Codons/PadCodon.cs
@@ -88,13 +88,12 @@ namespace MonoDevelop.Ide.Codons
{
if (content == null) {
content = CreatePad ();
+ }
+ if (!initializeCalled) {
content.Init (window);
ApplyPreferences ();
- } else if (!initializeCalled) {
- content.Init (window);
- ApplyPreferences ();
+ initializeCalled = true;
}
- initializeCalled = true;
return content;
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/EditCommands.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/EditCommands.cs
index 103f572e76..22211b010e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/EditCommands.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/EditCommands.cs
@@ -376,6 +376,7 @@ namespace MonoDevelop.Ide.Commands
{
object focus = IdeApp.Workbench.RootWindow.HasToplevelFocus ? IdeApp.Workbench.RootWindow.Focus : null;
info.Enabled = (focus is Gtk.Editable || focus is Gtk.TextView);
+ info.Bypass = !IdeApp.Workbench.RootWindow.HasToplevelFocus;
#if MAC
var macfocus = AppKit.NSApplication.SharedApplication?.KeyWindow?.FirstResponder;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentFileStorage.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentFileStorage.cs
index a2f3db5129..44fce11e2d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentFileStorage.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentFileStorage.cs
@@ -40,6 +40,7 @@ using System.Threading;
using System.Xml;
using System.Linq;
using MonoDevelop.Core;
+using System.Threading.Tasks;
namespace MonoDevelop.Ide.Desktop
{
@@ -55,7 +56,8 @@ namespace MonoDevelop.Ide.Desktop
string filePath;
FileSystemWatcher watcher;
- List<RecentItem> cachedItemList;
+ object cacheLock = new object ();
+ List<RecentItem> cachedItemList = new List<RecentItem> ();
public static string DefaultPath {
get {
@@ -66,6 +68,25 @@ namespace MonoDevelop.Ide.Desktop
public RecentFileStorage (string filePath)
{
this.filePath = filePath;
+
+ // Kick off loading the recent item store in the background in the background.
+ AcquireFileExclusive (filePath).ContinueWith (t => {
+ if (t.IsFaulted) {
+ Exception ex = t.Exception;
+ while (ex is AggregateException && ex.InnerException != null) {
+ ex = ex.InnerException;
+ }
+
+ LoggingService.LogError ("Failed to acquire recent items lock", t.Exception);
+ return;
+ }
+
+ var stream = t.Result;
+ lock (cacheLock) {
+ cachedItemList = ReadStore (stream);
+ cachedItemList.Sort ();
+ }
+ });
}
void EnableWatching ()
@@ -98,12 +119,12 @@ namespace MonoDevelop.Ide.Desktop
void FileChanged (object sender, FileSystemEventArgs e)
{
- OnRecentFilesChanged (null);
+ OnRecentFilesChanged (cachedItemList);
}
void HandleWatcherRenamed (object sender, RenamedEventArgs e)
{
- OnRecentFilesChanged (null);
+ OnRecentFilesChanged (cachedItemList);
}
public bool RemoveItem (string uri)
@@ -144,15 +165,10 @@ namespace MonoDevelop.Ide.Desktop
if (!File.Exists (filePath)) {
return new RecentItem[0];
}
-
- var c = cachedItemList;
- if (c == null) {
- using (var fs = AcquireFileExclusive (filePath)) {
- c = cachedItemList = ReadStore (fs);
- }
+
+ lock (cacheLock) {
+ return cachedItemList.Where (item => item.IsInGroup (group)).ToArray ();
}
- c.Sort ();
- return c.Where (item => item.IsInGroup (group)).ToArray ();
}
public void RemoveMissingFiles (params string[] groups)
@@ -191,6 +207,7 @@ namespace MonoDevelop.Ide.Desktop
if (list[i].IsInGroup (group) && (++count > limit)) {
list.RemoveAt (i);
i--;
+ modified = true;
}
}
return modified;
@@ -207,22 +224,59 @@ namespace MonoDevelop.Ide.Desktop
}
return modified;
}
-
+
+ Task recentSaveTask;
+ List<Func<List<RecentItem>, bool>> modifyList = new List<Func<List<RecentItem>, bool>> ();
+ object modifyListLock = new object ();
bool ModifyStore (Func<List<RecentItem>,bool> modify)
{
- List<RecentItem> list;
- using (var fs = AcquireFileExclusive (filePath)) {
- list = ReadStore (fs);
- if (!modify (list)) {
- return false;
+ lock (modifyListLock) {
+ modifyList.Add (modify);
+
+ // This makes recent file changed event to happen as late as possible, but it shouldn't be a problem.
+ // We keep both multiple-instance concurrency via AcquireFileExclusive lock
+ // And we batch as many modifications as possible in a 1 second window.
+ if (recentSaveTask == null) {
+ recentSaveTask = Task.Run (async () => {
+ await Task.Delay (1000);
+ await SaveRecentFiles ();
+ });
+ }
+ }
+ lock (cacheLock) {
+ return modify (cachedItemList);
+ }
+ }
+
+ async Task SaveRecentFiles ()
+ {
+ List<Func<List<RecentItem>, bool>> localModifyList;
+
+ lock (modifyListLock) {
+ localModifyList = modifyList;
+ modifyList = new List<Func<List<RecentItem>, bool>> ();
+ recentSaveTask = null;
+ }
+
+ using (var fs = await AcquireFileExclusive (filePath)) {
+ var list = ReadStore (fs);
+ bool modified = false;
+
+ foreach (var modify in localModifyList) {
+ if (!modify (list)) {
+ continue;
+ }
+
+ modified = true;
+ }
+
+ if (modified) {
+ fs.Position = 0;
+ fs.SetLength (0);
+ WriteStore (fs, list);
+ OnRecentFilesChanged (list);
}
- fs.Position = 0;
- fs.SetLength (0);
- WriteStore (fs, list);
}
- //TODO: can we suppress duplicate event from the FSW?
- OnRecentFilesChanged (list);
- return true;
}
static List<RecentItem> ReadStore (FileStream file)
@@ -266,7 +320,7 @@ namespace MonoDevelop.Ide.Desktop
}
//FIXME: should we P/Invoke lockf on POSIX or is Mono's FileShare.None sufficient?
- static FileStream AcquireFileExclusive (string filePath)
+ static async Task<FileStream> AcquireFileExclusive (string filePath)
{
const int MAX_WAIT_TIME = 1000;
const int RETRY_WAIT = 50;
@@ -279,7 +333,7 @@ namespace MonoDevelop.Ide.Desktop
} catch (Exception ex) {
//FIXME: will it work on Mono if we check that it's an access conflict, i.e. HResult is 0x80070020?
if (ex is IOException && remainingTries > 0) {
- Thread.Sleep (RETRY_WAIT);
+ await Task.Delay (RETRY_WAIT);
remainingTries--;
continue;
}
@@ -293,9 +347,12 @@ namespace MonoDevelop.Ide.Desktop
return fileName.StartsWith ("file://") ? fileName : "file://" + fileName;
}
- void OnRecentFilesChanged (List<RecentItem> cachedItemList)
+ void OnRecentFilesChanged (List<RecentItem> list)
{
- this.cachedItemList = cachedItemList;
+ lock (cacheLock) {
+ cachedItemList = list;
+ }
+
Runtime.RunInMainThread (() => {
if (changed != null)
changed (this, EventArgs.Empty);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentOpen.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentOpen.cs
index 7675e92b7c..939b9dcd10 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentOpen.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Desktop/RecentOpen.cs
@@ -118,37 +118,31 @@ namespace MonoDevelop.Ide.Desktop
void Add (string grp, string fileName, string displayName)
{
var mime = DesktopService.GetMimeTypeForUri (fileName);
- System.Threading.ThreadPool.QueueUserWorkItem (_ => {
- try {
- var uri = RecentFileStorage.ToUri (fileName);
- var recentItem = new RecentItem (uri, mime, grp) { Private = displayName };
- recentFiles.AddWithLimit (recentItem, grp, ItemLimit);
- } catch (Exception e) {
- LoggingService.LogError ("Failed to add item to recent files list.", e);
- }
- });
+ try {
+ var uri = RecentFileStorage.ToUri (fileName);
+ var recentItem = new RecentItem (uri, mime, grp) { Private = displayName };
+ recentFiles.AddWithLimit (recentItem, grp, ItemLimit);
+ } catch (Exception e) {
+ LoggingService.LogError ("Failed to add item to recent files list.", e);
+ }
}
public override void NotifyFileRemoved (string fileName)
{
- System.Threading.ThreadPool.QueueUserWorkItem (_ => {
- try {
- recentFiles.RemoveItem (RecentFileStorage.ToUri (fileName));
- } catch (Exception e) {
- LoggingService.LogError ("Can't remove from recent files list.", e);
- }
- });
+ try {
+ recentFiles.RemoveItem (RecentFileStorage.ToUri (fileName));
+ } catch (Exception e) {
+ LoggingService.LogError ("Can't remove from recent files list.", e);
+ }
}
public override void NotifyFileRenamed (string oldName, string newName)
{
- System.Threading.ThreadPool.QueueUserWorkItem (_ => {
- try {
- recentFiles.RenameItem (RecentFileStorage.ToUri (oldName), RecentFileStorage.ToUri (newName));
- } catch (Exception e) {
- LoggingService.LogError ("Can't rename file in recent files list.", e);
- }
- });
+ try {
+ recentFiles.RenameItem (RecentFileStorage.ToUri (oldName), RecentFileStorage.ToUri (newName));
+ } catch (Exception e) {
+ LoggingService.LogError ("Can't rename file in recent files list.", e);
+ }
}
public void Dispose ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AutoInsertBracketTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AutoInsertBracketTextEditorExtension.cs
index 0b2291200a..96181de06f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AutoInsertBracketTextEditorExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/AutoInsertBracketTextEditorExtension.cs
@@ -26,7 +26,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
using Mono.Addins;
namespace MonoDevelop.Ide.Editor.Extension
@@ -57,9 +56,9 @@ namespace MonoDevelop.Ide.Editor.Extension
});
}
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
- var result = await base.KeyPress (descriptor);
+ var result = base.KeyPress (descriptor);
if (DefaultSourceEditorOptions.Instance.AutoInsertMatchingBracket && !Editor.IsSomethingSelected) {
var handler = allHandlers.FirstOrDefault(h => h.CanHandle (Editor));
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/BraceMatcherTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/BraceMatcherTextEditorExtension.cs
index a372c6386c..456cc91f4e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/BraceMatcherTextEditorExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/BraceMatcherTextEditorExtension.cs
@@ -65,6 +65,7 @@ namespace MonoDevelop.Ide.Editor.Extension
if ((Editor.TextEditorType & TextEditorType.Invisible) != 0)
return;
DefaultSourceEditorOptions.Instance.highlightMatchingBracket.Changed += HighlightMatchingBracket_Changed;
+ HighlightMatchingBracket_Changed (this, EventArgs.Empty);
}
void HighlightMatchingBracket_Changed (object sender, EventArgs e)
@@ -89,6 +90,7 @@ namespace MonoDevelop.Ide.Editor.Extension
public override void Dispose ()
{
src.Cancel ();
+ DefaultSourceEditorOptions.Instance.highlightMatchingBracket.Changed -= HighlightMatchingBracket_Changed;
if (isSubscribed) {
Editor.CaretPositionChanged -= Editor_CaretPositionChanged;
DocumentContext.DocumentParsed -= HandleDocumentParsed;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs
index 2bc04531f2..5d90308e68 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs
@@ -93,12 +93,12 @@ namespace MonoDevelop.Ide.Editor.Extension
// When a key is pressed, and before the key is processed by the editor, this method will be invoked.
// Return true if the key press should be processed by the editor.
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
bool res;
if (CurrentCompletionContext != null) {
- if (await CompletionWindowManager.PreProcessKeyEvent (descriptor)) {
- await CompletionWindowManager.PostProcessKeyEvent (descriptor);
+ if (CompletionWindowManager.PreProcessKeyEvent (descriptor)) {
+ CompletionWindowManager.PostProcessKeyEvent (descriptor);
autoHideCompletionWindow = true;
// in named parameter case leave the parameter window open.
autoHideParameterWindow = descriptor.KeyChar != ':';
@@ -124,9 +124,9 @@ namespace MonoDevelop.Ide.Editor.Extension
if (descriptor.SpecialKey == SpecialKey.BackSpace && Editor.CaretOffset > 0)
deleteOrBackspaceTriggerChar = Editor.GetCharAt (Editor.CaretOffset - 1);
- res = await base.KeyPress (descriptor);
+ res = base.KeyPress (descriptor);
- await CompletionWindowManager.PostProcessKeyEvent (descriptor);
+ CompletionWindowManager.PostProcessKeyEvent (descriptor);
var ignoreMods = ModifierKeys.Control | ModifierKeys.Alt
| ModifierKeys.Command;
@@ -158,26 +158,28 @@ namespace MonoDevelop.Ide.Editor.Extension
completionTokenSrc.Cancel ();
};
CompletionWindowManager.WindowClosed += windowClosed;
-
- var result = await task;
- CompletionWindowManager.WindowClosed -= windowClosed;
- if (!token.IsCancellationRequested) {
+
+ task.ContinueWith (t => {
+ CompletionWindowManager.WindowClosed -= windowClosed;
+ if (token.IsCancellationRequested)
+ return;
+ var result = t.Result;
if (result != null) {
int triggerWordLength = result.TriggerWordLength + (Editor.CaretOffset - caretOffset);
- if (triggerWordLength > 0 && (triggerWordLength < Editor.CaretOffset
- || (triggerWordLength == 1 && Editor.CaretOffset == 1))) {
+ if (triggerWordLength > 0 && (triggerWordLength < Editor.CaretOffset
+ || (triggerWordLength == 1 && Editor.CaretOffset == 1))) {
CurrentCompletionContext = CompletionWidget.CreateCodeCompletionContext (Editor.CaretOffset - triggerWordLength);
CurrentCompletionContext.TriggerWordLength = triggerWordLength;
- }
- // Now show the window for real.
+ }
+ // Now show the window for real.
if (!CompletionWindowManager.ShowWindow (result, CurrentCompletionContext))
CurrentCompletionContext = null;
} else {
CompletionWindowManager.HideWindow ();
CurrentCompletionContext = null;
}
- }
+ }, Runtime.MainTaskScheduler);
} else {
CurrentCompletionContext = null;
}
@@ -214,9 +216,11 @@ namespace MonoDevelop.Ide.Editor.Extension
};
CompletionWindowManager.WindowClosed += windowClosed;
- var result = await task;
- CompletionWindowManager.WindowClosed -= windowClosed;
- if (!token.IsCancellationRequested) {
+ task.ContinueWith (t => {
+ CompletionWindowManager.WindowClosed -= windowClosed;
+ if (token.IsCancellationRequested)
+ return;
+ var result = t.Result;
if (result != null) {
int triggerWordLength = result.TriggerWordLength + (Editor.CaretOffset - caretOffset);
@@ -236,7 +240,7 @@ namespace MonoDevelop.Ide.Editor.Extension
CompletionWindowManager.HideWindow ();
CurrentCompletionContext = null;
}
- }
+ }, Runtime.MainTaskScheduler);
} else {
CurrentCompletionContext = null;
}
@@ -255,9 +259,10 @@ namespace MonoDevelop.Ide.Editor.Extension
try {
var task = HandleParameterCompletionAsync (ctx, descriptor.KeyChar, token);
if (task != null) {
- var result = await task;
- if (!token.IsCancellationRequested && result != null)
- ParameterInformationWindowManager.ShowWindow (this, CompletionWidget, ctx, result);
+ task.ContinueWith (t => {
+ if (!token.IsCancellationRequested && t.Result != null)
+ ParameterInformationWindowManager.ShowWindow (this, CompletionWidget, ctx, t.Result);
+ }, Runtime.MainTaskScheduler);
}
} catch (TaskCanceledException) {
} catch (AggregateException) {
@@ -363,11 +368,7 @@ namespace MonoDevelop.Ide.Editor.Extension
if (completionList == null) {
return;
}
- var wnd = new CompletionListWindow (Gtk.WindowType.Toplevel);
- wnd.TypeHint = Gdk.WindowTypeHint.Dialog;
- wnd.SkipPagerHint = true;
- wnd.SkipTaskbarHint = true;
- wnd.Decorated = false;
+ var wnd = CompletionListWindow.CreateAsDialog ();
wnd.Extension = this;
wnd.ShowListWindow ((char)0, completionList, CompletionWidget, ctx);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/ErrorHandlerTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/ErrorHandlerTextEditorExtension.cs
index 9632185c24..1d4e5b77ef 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/ErrorHandlerTextEditorExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/ErrorHandlerTextEditorExtension.cs
@@ -141,7 +141,7 @@ namespace MonoDevelop.Ide.Editor.Extension
async Task UpdateErrorUndelines (DocumentContext ctx, ParsedDocument parsedDocument, CancellationToken token)
{
- if (!DefaultSourceEditorOptions.Instance.UnderlineErrors || parsedDocument == null || isDisposed)
+ if (parsedDocument == null || isDisposed)
return;
try {
var errors = await parsedDocument.GetErrorsAsync(token).ConfigureAwait (false);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextEditorExtension.cs
index 272888894e..a6b4cf594c 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextEditorExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/TextEditorExtension.cs
@@ -32,8 +32,7 @@ using MonoDevelop.Ide.Gui;
using MonoDevelop.Ide.TypeSystem;
using System.Collections;
using System.Collections.Generic;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.Ide.Editor.Extension
{
public abstract class TextEditorExtension : ICommandRouter, IDisposable
@@ -79,9 +78,9 @@ namespace MonoDevelop.Ide.Editor.Extension
/// Return true if the key press should be processed by the editor.
/// When a key is pressed, and before the key is processed by the editor, this method will be invoked.
/// </summary>
- public virtual async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public virtual bool KeyPress (KeyDescriptor descriptor)
{
- return Next == null || await Next.KeyPress (descriptor);
+ return Next == null || Next.KeyPress (descriptor);
}
public virtual void Dispose ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxModeService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxModeService.cs
index d0392f96a8..1bd4d60191 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxModeService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Highlighting/SyntaxModeService.cs
@@ -66,37 +66,37 @@ namespace MonoDevelop.Ide.Editor.Highlighting
}
}
- public static ColorScheme GetDefaultColorStyle (this Skin skin)
+ public static ColorScheme GetDefaultColorStyle (this Theme theme)
{
- return GetColorStyle (GetDefaultColorStyleName (skin));
+ return GetColorStyle (GetDefaultColorStyleName (theme));
}
public static string GetDefaultColorStyleName ()
{
- return GetDefaultColorStyleName (IdeApp.Preferences.UserInterfaceSkin);
+ return GetDefaultColorStyleName (IdeApp.Preferences.UserInterfaceTheme);
}
- public static string GetDefaultColorStyleName (this Skin skin)
+ public static string GetDefaultColorStyleName (this Theme theme)
{
- switch (skin) {
- case Skin.Light:
+ switch (theme) {
+ case Theme.Light:
return IdePreferences.DefaultLightColorScheme;
- case Skin.Dark:
+ case Theme.Dark:
return IdePreferences.DefaultDarkColorScheme;
default:
throw new InvalidOperationException ();
}
}
- public static ColorScheme GetUserColorStyle (this Skin skin)
+ public static ColorScheme GetUserColorStyle (this Theme theme)
{
- var schemeName = IdeApp.Preferences.ColorScheme.ValueForSkin (skin);
+ var schemeName = IdeApp.Preferences.ColorScheme.ValueForTheme (theme);
return GetColorStyle (schemeName);
}
- public static bool FitsIdeSkin (this ColorScheme scheme, Skin skin)
+ public static bool FitsIdeTheme (this ColorScheme scheme, Theme theme)
{
- if (skin == Skin.Dark)
+ if (theme == Theme.Dark)
return (scheme.PlainText.Background.L <= 0.5);
return (scheme.PlainText.Background.L > 0.5);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs
index fa316c9f49..26202b4ceb 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/DefaultSourceEditorOptions.cs
@@ -359,17 +359,6 @@ namespace MonoDevelop.Ide.Editor
OnChanged (EventArgs.Empty);
}
}
-
- ConfigurationProperty<bool> underlineErrors = ConfigurationProperty.Create ("UnderlineErrors", true);
- public bool UnderlineErrors {
- get {
- return underlineErrors;
- }
- set {
- if (underlineErrors.Set (value))
- OnChanged (EventArgs.Empty);
- }
- }
ConfigurationProperty<IndentStyle> indentStyle = ConfigurationProperty.Create ("IndentStyle", IndentStyle.Smart);
public IndentStyle IndentStyle {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedCompletionExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedCompletionExtension.cs
index 73e807a2be..741fabe3c2 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedCompletionExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedCompletionExtension.cs
@@ -319,16 +319,16 @@ namespace MonoDevelop.Ide.Editor.Projection
return projectedExtension.HandleParameterCompletionAsync (ConvertContext (completionContext), completionChar, token);
}
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
var task = ctx.GetPartialProjectionsAsync ();
if (task != null)
- projections = await task;
+ projections = task.Result;
var projectedExtension = GetCurrentExtension();
if (projectedExtension != null) {
- return await projectedExtension.KeyPress (descriptor);
+ return projectedExtension.KeyPress (descriptor);
}
- return await base.KeyPress (descriptor);
+ return base.KeyPress (descriptor);
}
public override Task<ParameterHintingResult> ParameterCompletionCommand (MonoDevelop.Ide.CodeCompletion.CodeCompletionContext completionContext)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedFilterCompletionTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedFilterCompletionTextEditorExtension.cs
index 4560596b85..8174b221ce 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedFilterCompletionTextEditorExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedFilterCompletionTextEditorExtension.cs
@@ -67,11 +67,11 @@ namespace MonoDevelop.Ide.Editor.Projection
return false;
}
- public override async Task<bool> KeyPress (KeyDescriptor descriptor)
+ public override bool KeyPress (KeyDescriptor descriptor)
{
if (!IsActiveExtension())
- return Next == null || await Next.KeyPress (descriptor);
- return await completionTextEditorExtension.KeyPress (descriptor);
+ return Next == null || Next.KeyPress (descriptor);
+ return completionTextEditorExtension.KeyPress (descriptor);
}
public override bool IsValidInContext (DocumentContext context)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs
index 7e3d633814..4fa307c305 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs
@@ -743,8 +743,10 @@ namespace MonoDevelop.Ide.Editor
public string GetTextAt (int offset, int length)
{
- if (offset < 0 || offset >= Length)
- throw new ArgumentOutOfRangeException (nameof (offset), "offset needs to be >= 0 && < " + Length + ", was :" + offset);
+ if (offset < 0 || offset > Length)
+ throw new ArgumentOutOfRangeException (nameof (offset), "offset needs to be >= 0 && <= " + Length + ", was :" + offset);
+ if (offset + length > Length)
+ throw new ArgumentOutOfRangeException (nameof (Length), "Length needs to <= " + (Length - offset) + ", was :" + length);
return ReadOnlyTextDocument.GetTextAt (offset, length);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorViewContent.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorViewContent.cs
index 82e0592c1e..c8e52d6540 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorViewContent.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorViewContent.cs
@@ -72,6 +72,19 @@ namespace MonoDevelop.Ide.Editor
this.textEditorImpl = textEditorImpl;
this.textEditor.MimeTypeChanged += UpdateTextEditorOptions;
DefaultSourceEditorOptions.Instance.Changed += UpdateTextEditorOptions;
+ textEditorImpl.ViewContent.ContentNameChanged += ViewContent_ContentNameChanged;
+ textEditorImpl.ViewContent.DirtyChanged += ViewContent_DirtyChanged; ;
+
+ }
+
+ void ViewContent_ContentNameChanged (object sender, EventArgs e)
+ {
+ this.ContentName = textEditorImpl.ViewContent.ContentName;
+ }
+
+ void ViewContent_DirtyChanged (object sender, EventArgs e)
+ {
+ OnDirtyChanged ();
}
void HandleDirtyChanged (object sender, EventArgs e)
@@ -181,13 +194,6 @@ namespace MonoDevelop.Ide.Editor
}
}
- protected override void OnContentNameChanged ()
- {
- base.OnContentNameChanged ();
- textEditorImpl.ContentName = ContentName;
- }
-
-
#region IViewFContent implementation
public override async Task Load (FileOpenInformation fileOpenInformation)
@@ -290,6 +296,14 @@ namespace MonoDevelop.Ide.Editor
}
}
+ public override bool IsDirty {
+ get { return textEditorImpl.ViewContent.IsDirty; }
+ set {
+ textEditorImpl.ViewContent.IsDirty = value;
+ }
+ }
+
+
#endregion
#region IDisposable implementation
@@ -307,6 +321,8 @@ namespace MonoDevelop.Ide.Editor
textEditorImpl.ViewContent.DirtyChanged -= HandleDirtyChanged;
textEditor.MimeTypeChanged -= UpdateTextEditorOptions;
textEditor.TextChanged -= HandleTextChanged;
+ textEditorImpl.ViewContent.ContentNameChanged -= ViewContent_ContentNameChanged;
+ textEditorImpl.ViewContent.DirtyChanged -= ViewContent_DirtyChanged; ;
DefaultSourceEditorOptions.Instance.Changed -= UpdateTextEditorOptions;
RemovePolicyChangeHandler ();
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Extensions/MimeTypeNode.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Extensions/MimeTypeNode.cs
index 0cfa96e16b..97bdf6ae03 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Extensions/MimeTypeNode.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Extensions/MimeTypeNode.cs
@@ -109,7 +109,7 @@ namespace MonoDevelop.Ide.Extensions
globalPattern.Append ('|');
globalPattern.Append (pattern);
}
- return new Regex (globalPattern.ToString ());
+ return new Regex (globalPattern.ToString (), RegexOptions.IgnoreCase);
}
public bool SupportsFile (string fileName)
{
@@ -140,7 +140,7 @@ namespace MonoDevelop.Ide.Extensions
public bool SupportsFile (string fileName)
{
foreach (var ending in endings)
- if (fileName.EndsWith (ending, StringComparison.Ordinal))
+ if (fileName.EndsWith (ending, StringComparison.OrdinalIgnoreCase))
return true;
return false;
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FileProvider.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FileProvider.cs
index 23698d4a63..a0267de29e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FileProvider.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FileProvider.cs
@@ -76,22 +76,15 @@ namespace MonoDevelop.Ide.FindInFiles
SelectionEndPosition = selectionEndPosition;
}
- public string ReadString ()
+ public TextReader ReadString ()
{
return ReadString (false);
}
- WeakReference cachedText;
-
- public string ReadString (bool readBinaryFiles)
+ public TextReader ReadString (bool readBinaryFiles)
{
- string result = cachedText != null ? cachedText.Target as string : null;
- if (result != null) {
- return result;
- }
-
if (buffer != null) {
- result = buffer.ToString ();
+ return new StringReader (buffer.ToString ());
} else {
Document doc = null;
@@ -100,25 +93,20 @@ namespace MonoDevelop.Ide.FindInFiles
doc = task.Result;
if (doc != null && doc.Editor != null) {
- result = doc.Editor.Text;
- encoding = doc.Editor.Encoding;
- hadBom = doc.Editor.UseBOM;
+ return doc.Editor.CreateReader ();
} else {
try {
if (!File.Exists (FileName))
return null;
- var content = File.ReadAllBytes (FileName);
- if (!readBinaryFiles && TextFileUtility.IsBinary (content))
+ if (!readBinaryFiles && TextFileUtility.IsBinary (FileName))
return null;
- result = TextFileUtility.GetText (content, out encoding, out hadBom);
+ return TextFileUtility.OpenStream (FileName);
} catch (Exception e) {
LoggingService.LogError ("Error while opening " + FileName, e);
return null;
}
}
}
- cachedText = new WeakReference (result);
- return result;
}
async Task<Document> SearchDocument ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs
index cd974b4cdb..e083aaf58f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindInFilesDialog.cs
@@ -679,7 +679,14 @@ namespace MonoDevelop.Ide.FindInFiles
}
protected override void OnDestroyed ()
- {
+ {
+ if (resultPad != null) {
+ var resultWidget = resultPad.Control.GetNativeWidget<SearchResultWidget> ();
+ if (resultWidget.ResultCount > 0) {
+ resultPad.Window.Activate (true);
+ }
+ }
+
if (updateTimer != 0) {
GLib.Source.Remove (updateTimer);
updateTimer = 0;
@@ -772,29 +779,35 @@ namespace MonoDevelop.Ide.FindInFiles
static FindReplace find;
void HandleReplaceClicked (object sender, EventArgs e)
{
- SearchReplace (comboboxentryFind.Entry.Text, comboboxentryReplace.Entry.Text ?? "", GetScope (), GetFilterOptions (), () => UpdateStopButton ());
+ SearchReplace (comboboxentryFind.Entry.Text, comboboxentryReplace.Entry.Text ?? "", GetScope (), GetFilterOptions (), () => UpdateStopButton (), UpdateResultPad);
}
void HandleSearchClicked (object sender, EventArgs e)
{
- SearchReplace (comboboxentryFind.Entry.Text, null, GetScope (), GetFilterOptions (), () => UpdateStopButton ());
+ SearchReplace (comboboxentryFind.Entry.Text, null, GetScope (), GetFilterOptions (), () => UpdateStopButton (), UpdateResultPad);
}
static CancellationTokenSource searchTokenSource = new CancellationTokenSource ();
static Task currentTask;
uint updateTimer;
+ SearchResultPad resultPad;
void UpdateStopButton ()
{
buttonStop.Sensitive = currentTask != null && !currentTask.IsCompleted;
}
+ void UpdateResultPad (SearchResultPad pad)
+ {
+ resultPad = pad;
+ }
+
void ButtonStopClicked (object sender, EventArgs e)
{
searchTokenSource.Cancel ();
}
- internal static void SearchReplace (string findPattern, string replacePattern, Scope scope, FilterOptions options, System.Action UpdateStopButton)
+ internal static void SearchReplace (string findPattern, string replacePattern, Scope scope, FilterOptions options, System.Action UpdateStopButton, System.Action<SearchResultPad> UpdateResultPad)
{
if (find != null && find.IsRunning) {
if (!MessageService.Confirm (GettextCatalog.GetString ("There is a search already in progress. Do you want to stop it?"), AlertButton.Stop))
@@ -823,10 +836,16 @@ namespace MonoDevelop.Ide.FindInFiles
searchTokenSource = cancelSource;
var token = cancelSource.Token;
currentTask = Task.Run (delegate {
- using (SearchProgressMonitor searchMonitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, cancellationTokenSource:cancelSource)) {
+ using (SearchProgressMonitor searchMonitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true)) {
searchMonitor.PathMode = scope.PathMode;
+ if (UpdateResultPad != null) {
+ Application.Invoke (delegate {
+ UpdateResultPad (searchMonitor.ResultPad);
+ });
+ }
+
searchMonitor.ReportStatus (scope.GetDescription (options, pattern, null));
if (UpdateStopButton != null) {
Application.Invoke (delegate {
@@ -850,20 +869,18 @@ namespace MonoDevelop.Ide.FindInFiles
LoggingService.LogError ("Error while search", ex);
}
- string message;
+ string message = null;
if (errorMessage != null) {
message = GettextCatalog.GetString ("The search could not be finished: {0}", errorMessage);
searchMonitor.ReportError (message, null);
- } else if (searchMonitor.CancellationToken.IsCancellationRequested) {
- message = GettextCatalog.GetString ("Search cancelled.");
- searchMonitor.ReportWarning (message);
- } else {
+ } else if (!searchMonitor.CancellationToken.IsCancellationRequested) {
string matches = string.Format (GettextCatalog.GetPluralString ("{0} match found", "{0} matches found", find.FoundMatchesCount), find.FoundMatchesCount);
string files = string.Format (GettextCatalog.GetPluralString ("in {0} file.", "in {0} files.", find.SearchedFilesCount), find.SearchedFilesCount);
message = GettextCatalog.GetString ("Search completed.") + Environment.NewLine + matches + " " + files;
searchMonitor.ReportSuccess (message);
}
- searchMonitor.ReportStatus (message);
+ if (message != null)
+ searchMonitor.ReportStatus (message);
searchMonitor.Log.WriteLine (GettextCatalog.GetString ("Search time: {0} seconds."), (DateTime.Now - timer).TotalSeconds);
}
if (UpdateStopButton != null) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs
index aaae54a669..1d94b9bf22 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FindReplace.cs
@@ -79,6 +79,22 @@ namespace MonoDevelop.Ide.FindInFiles
return true;
}
+ class FileSearchResult
+ {
+ public FileProvider Provider;
+ public TextReader Reader;
+ public List<SearchResult> Results;
+ public string Text { get; internal set; }
+
+ public FileSearchResult (FileProvider provider, TextReader reader, List<SearchResult> results)
+ {
+ Provider = provider;
+ Reader = reader;
+ Results = results;
+ }
+ }
+
+
public IEnumerable<SearchResult> FindAll (Scope scope, ProgressMonitor monitor, string pattern, string replacePattern, FilterOptions filter, CancellationToken token)
{
if (filter.RegexSearch) {
@@ -95,13 +111,13 @@ namespace MonoDevelop.Ide.FindInFiles
int step = Math.Max (1, totalWork / 50);
- var contents = new List<Tuple<FileProvider, string, List<SearchResult>>>();
+ var contents = new List<FileSearchResult>();
foreach (var provider in scope.GetFiles (monitor, filter)) {
if (token.IsCancellationRequested)
return Enumerable.Empty<SearchResult> ();
try {
searchedFilesCount++;
- contents.Add(Tuple.Create (provider, provider.ReadString (), new List<SearchResult> ()));
+ contents.Add(new FileSearchResult (provider, provider.ReadString (), new List<SearchResult> ()));
if (searchedFilesCount % step == 0)
monitor.Step (2);
} catch (FileNotFoundException) {
@@ -114,7 +130,7 @@ namespace MonoDevelop.Ide.FindInFiles
foreach (var content in contents) {
if (token.IsCancellationRequested)
return Enumerable.Empty<SearchResult> ();
- results.AddRange (RegexSearch (monitor, content.Item1, content.Item2, replacePattern, filter));
+ results.AddRange (RegexSearch (monitor, content.Provider, content.Reader, replacePattern, filter));
}
} else {
var options = new ParallelOptions ();
@@ -125,11 +141,15 @@ namespace MonoDevelop.Ide.FindInFiles
return;
try {
Interlocked.Increment (ref searchedFilesCount);
- content.Item3.AddRange(FindAll (monitor, content.Item1, content.Item2, pattern, replacePattern, filter));
+ if (replacePattern != null) {
+ content.Text = content.Reader.ReadToEnd ();
+ content.Reader = new StringReader (content.Text);
+ }
+ content.Results.AddRange(FindAll (monitor, content.Provider, content.Reader, pattern, replacePattern, filter));
lock (results) {
- results.AddRange (content.Item3);
+ results.AddRange (content.Results);
}
- FoundMatchesCount += content.Item3.Count;
+ FoundMatchesCount += content.Results.Count;
if (searchedFilesCount % step == 0)
monitor.Step (1);
} catch (Exception e) {
@@ -141,12 +161,12 @@ namespace MonoDevelop.Ide.FindInFiles
foreach (var content in contents) {
if (token.IsCancellationRequested)
return Enumerable.Empty<SearchResult> ();
- if (content.Item3.Count == 0)
+ if (content.Results.Count == 0)
continue;
try {
- content.Item1.BeginReplace (content.Item2);
- Replace (content.Item1, content.Item3, replacePattern);
- content.Item1.EndReplace ();
+ content.Provider.BeginReplace (content.Text);
+ Replace (content.Provider, content.Results, replacePattern);
+ content.Provider.EndReplace ();
} catch (Exception e) {
LoggingService.LogError("Exception during replace.", e);
}
@@ -161,7 +181,9 @@ namespace MonoDevelop.Ide.FindInFiles
}
}
- IEnumerable<SearchResult> FindAll (ProgressMonitor monitor, FileProvider provider, string content, string pattern, string replacePattern, FilterOptions filter)
+ // Took: 17743
+
+ IEnumerable<SearchResult> FindAll (ProgressMonitor monitor, FileProvider provider, TextReader content, string pattern, string replacePattern, FilterOptions filter)
{
if (string.IsNullOrEmpty (pattern))
return Enumerable.Empty<SearchResult> ();
@@ -172,8 +194,9 @@ namespace MonoDevelop.Ide.FindInFiles
return Search (provider, content, pattern, filter);
}
- IEnumerable<SearchResult> RegexSearch (ProgressMonitor monitor, FileProvider provider, string content, string replacePattern, FilterOptions filter)
+ IEnumerable<SearchResult> RegexSearch (ProgressMonitor monitor, FileProvider provider, TextReader reader, string replacePattern, FilterOptions filter)
{
+ string content = reader.ReadToEnd ();
var results = new List<SearchResult> ();
if (replacePattern == null) {
foreach (Match match in regex.Matches (content)) {
@@ -212,18 +235,86 @@ namespace MonoDevelop.Ide.FindInFiles
return results;
}
- public IEnumerable<SearchResult> Search (FileProvider provider, string content, string pattern, FilterOptions filter)
+ class RingBufferReader
{
- if (string.IsNullOrEmpty (content))
+ int i, l;
+ char [] buffer;
+ TextReader reader;
+
+ public RingBufferReader (TextReader reader, int bufferSize)
+ {
+ this.reader = reader;
+ buffer = new char [bufferSize];
+ }
+
+ public int Next ()
+ {
+ if (l == 0) {
+ int ch = reader.Read ();
+ buffer [i] = (char)ch;
+ i = (i + 1) % buffer.Length;
+ return ch;
+ }
+ l--;
+ var result = buffer [i];
+ i = (i + 1) % buffer.Length;
+ return result;
+ }
+
+ public void TakeBack (int num)
+ {
+ l += num;
+ i = (i + buffer.Length - num) % buffer.Length;
+ }
+ }
+
+ public IEnumerable<SearchResult> Search (FileProvider provider, TextReader reader, string pattern, FilterOptions filter)
+ {
+ if (reader == null)
yield break;
- int idx = provider.SelectionStartPosition < 0 ? 0 : Math.Max (0, provider.SelectionStartPosition);
- var comparison = filter.CaseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
- int end = provider.SelectionEndPosition < 0 ? content.Length : Math.Min (content.Length, provider.SelectionEndPosition);
- while ((idx = content.IndexOf (pattern, idx, end - idx, comparison)) >= 0) {
- if (!filter.WholeWordsOnly || FilterOptions.IsWholeWordAt (content, idx, pattern.Length)) {
- yield return new SearchResult (provider, idx, pattern.Length);
+ int i = provider.SelectionStartPosition < 0 ? 0 : Math.Max (0, provider.SelectionStartPosition);
+ var buffer = new RingBufferReader(reader, pattern.Length + 2);
+ bool wasSeparator = true;
+ if (!filter.CaseSensitive)
+ pattern = pattern.ToUpperInvariant ();
+ while (true) {
+ int next = buffer.Next ();
+ if (next < 0)
+ yield break;
+ char ch = (char)next;
+ if ((filter.CaseSensitive ? ch : char.ToUpperInvariant (ch)) == pattern [0] &&
+ (!filter.WholeWordsOnly || wasSeparator)) {
+ bool isMatch = true;
+ for (int j = 1; j < pattern.Length; j++) {
+ next = buffer.Next ();
+ if (next < 0)
+ yield break;
+ if ((filter.CaseSensitive ? next : char.ToUpperInvariant ((char)next)) != pattern [j]) {
+ buffer.TakeBack (j);
+ isMatch = false;
+ break;
+ }
+ }
+ if (isMatch) {
+ if (filter.WholeWordsOnly) {
+ next = buffer.Next ();
+ if (next >= 0 && !FilterOptions.IsWordSeparator ((char)next)) {
+ buffer.TakeBack (pattern.Length);
+ i++;
+ continue;
+ }
+ buffer.TakeBack (1);
+ }
+
+ yield return new SearchResult (provider, i, pattern.Length);
+ i += pattern.Length - 1;
+ }
+ }
+
+ i++;
+ if (filter.WholeWordsOnly) {
+ wasSeparator = FilterOptions.IsWordSeparator ((char)ch);
}
- idx += pattern.Length;
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs
index d7dcacd46d..f504105b48 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchProgressMonitor.cs
@@ -37,11 +37,17 @@ namespace MonoDevelop.Ide.FindInFiles
{
public class SearchProgressMonitor : ProgressMonitor, ISearchProgressMonitor
{
- SearchResultPad outputPad;
+ SearchResultPad outputPad;
+
+ internal SearchResultPad ResultPad {
+ get {
+ return outputPad;
+ }
+ }
internal SearchProgressMonitor (Pad pad, CancellationTokenSource cancellationTokenSource = null): base (Runtime.MainSynchronizationContext, cancellationTokenSource)
{
- AddSlaveMonitor (IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor (GettextCatalog.GetString ("Searching..."), Stock.StatusSearch, false, true, false, pad));
+ AddFollowerMonitor (IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor (GettextCatalog.GetString ("Searching..."), Stock.StatusSearch, false, true, false, pad));
outputPad = (SearchResultPad) pad.Content;
outputPad.CancellationTokenSource = CancellationTokenSource;
@@ -93,14 +99,18 @@ namespace MonoDevelop.Ide.FindInFiles
protected override void OnCompleted ()
{
if (outputPad == null) throw GetDisposedException ();
+
outputPad.WriteText ("\n");
foreach (string msg in SuccessMessages)
outputPad.WriteText (msg + "\n");
+ if (CancellationToken.IsCancellationRequested)
+ ReportWarning (GettextCatalog.GetString ("Search operation canceled"));
+
foreach (string msg in Warnings)
outputPad.WriteText (msg + "\n");
-
+
foreach (var msg in Errors)
outputPad.WriteText (msg.Message + "\n");
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultPad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultPad.cs
index c57389edd9..b1cb2d9cf5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultPad.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultPad.cs
@@ -33,7 +33,8 @@ using MonoDevelop.Components.Commands;
using MonoDevelop.Ide.Commands;
using System.Threading;
using MonoDevelop.Components;
-
+using System;
+
namespace MonoDevelop.Ide.FindInFiles
{
public class SearchResultPad : PadContent
@@ -100,9 +101,20 @@ namespace MonoDevelop.Ide.FindInFiles
{
window.Icon = Stock.FindIcon;
- IdeApp.Workspace.LastWorkspaceItemClosed += (sender, e) => widget.Reset ();
+ IdeApp.Workspace.LastWorkspaceItemClosed += OnLastWorkspaceItemClosed;
base.Initialize (window);
}
+
+ public override void Dispose ()
+ {
+ IdeApp.Workspace.LastWorkspaceItemClosed -= OnLastWorkspaceItemClosed;
+ base.Dispose ();
+ }
+
+ void OnLastWorkspaceItemClosed (object sender, EventArgs args)
+ {
+ widget.Reset ();
+ }
public void BeginProgress (string title)
{
@@ -114,8 +126,12 @@ namespace MonoDevelop.Ide.FindInFiles
public void EndProgress ()
{
Window.IsWorking = false;
- widget.ShowStatus (" " + GettextCatalog.GetString("Search completed") + " - " +
- string.Format (GettextCatalog.GetPluralString("{0} match.", "{0} matches.", widget.ResultCount), widget.ResultCount));
+ if (CancellationTokenSource.Token.IsCancellationRequested) {
+ widget.ShowStatus (" " + GettextCatalog.GetString ("Search cancelled"));
+ } else {
+ widget.ShowStatus (" " + GettextCatalog.GetString ("Search completed") + " - " +
+ string.Format (GettextCatalog.GetPluralString ("{0} match.", "{0} matches.", widget.ResultCount), widget.ResultCount));
+ }
widget.EndProgress ();
if (FocusPad)
widget.FocusPad ();
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs
index 1012420af4..e77549f160 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs
@@ -216,8 +216,8 @@ namespace MonoDevelop.Ide.FindInFiles
void UpdateStyles (object sender = null, EventArgs e = null)
{
highlightStyle = SyntaxModeService.GetColorStyle (IdeApp.Preferences.ColorScheme);
- if (!highlightStyle.FitsIdeSkin (IdeApp.Preferences.UserInterfaceSkin))
- highlightStyle = SyntaxModeService.GetDefaultColorStyle (Ide.IdeApp.Preferences.UserInterfaceSkin);
+ if (!highlightStyle.FitsIdeTheme (IdeApp.Preferences.UserInterfaceTheme))
+ highlightStyle = SyntaxModeService.GetDefaultColorStyle (Ide.IdeApp.Preferences.UserInterfaceTheme);
if (markupCache != null)
markupCache = new List<Tuple<SearchResult, string>> ();
@@ -323,10 +323,10 @@ namespace MonoDevelop.Ide.FindInFiles
double delta = Math.Abs (b1 - b2);
if (delta < 0.1) {
HslColor color1 = color;
- color1.L += IdeApp.Preferences.UserInterfaceSkin == Skin.Light ? -0.5 : 0.5;
+ color1.L += IdeApp.Preferences.UserInterfaceTheme == Theme.Light ? -0.5 : 0.5;
if (Math.Abs (HslColor.Brightness (color1) - b2) < delta) {
color1 = color;
- color1.L += IdeApp.Preferences.UserInterfaceSkin == Skin.Light ? 0.5 : -0.5;
+ color1.L += IdeApp.Preferences.UserInterfaceTheme == Theme.Light ? 0.5 : -0.5;
}
return color1;
}
@@ -677,7 +677,7 @@ namespace MonoDevelop.Ide.FindInFiles
if (content == null)
return null;
- doc = TextEditorFactory.CreateNewEditor (TextEditorFactory.CreateNewReadonlyDocument (new StringTextSource (content), result.FileName, DesktopService.GetMimeTypeForUri (result.FileName)));
+ doc = TextEditorFactory.CreateNewEditor (TextEditorFactory.CreateNewReadonlyDocument (new StringTextSource (content.ReadToEnd ()), result.FileName, DesktopService.GetMimeTypeForUri (result.FileName)));
documents [result.FileName] = doc;
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs
index ad7c0c503c..32fa9375c1 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs
@@ -299,7 +299,7 @@ namespace MonoDevelop.Ide.Gui.Components
}
#endif
- void SetIconCellData (Gtk.TreeViewColumn col, Gtk.CellRenderer renderer, Gtk.TreeModel model, Gtk.TreeIter it)
+ static void SetIconCellData (Gtk.TreeViewColumn col, Gtk.CellRenderer renderer, Gtk.TreeModel model, Gtk.TreeIter it)
{
if (model == null)
return;
@@ -317,7 +317,7 @@ namespace MonoDevelop.Ide.Gui.Components
cell.OverlayTopRight = info.OverlayTopRight;
}
- void SetTextCellData (Gtk.TreeViewColumn col, Gtk.CellRenderer renderer, Gtk.TreeModel model, Gtk.TreeIter it)
+ static void SetTextCellData (Gtk.TreeViewColumn col, Gtk.CellRenderer renderer, Gtk.TreeModel model, Gtk.TreeIter it)
{
if (model == null)
return;
@@ -325,10 +325,8 @@ namespace MonoDevelop.Ide.Gui.Components
var info = (NodeInfo)model.GetValue (it, NodeInfoColumn);
var cell = (CustomCellRendererText)renderer;
- if (info.DisabledStyle)
- cell.TextMarkup = "<span foreground='gray'>" + info.Label + "</span>";
- else
- cell.TextMarkup = info.Label;
+ cell.DisabledStyle = info.DisabledStyle;
+ cell.TextMarkup = info.Label;
cell.StatusIcon = info.StatusIconInternal;
}
@@ -540,15 +538,6 @@ namespace MonoDevelop.Ide.Gui.Components
HideStatusMessage ();
}
- void HandleMenuHidden (object sender, EventArgs e)
- {
- if (sender is Gtk.Menu) {
- ((Gtk.Menu)sender).Hidden -= HandleMenuHidden;
- }
- text_render.Pushed = false;
- widget.QueueDraw ();
- }
-
internal void LockUpdates ()
{
if (++updateLockCount == 1)
@@ -2386,6 +2375,8 @@ namespace MonoDevelop.Ide.Gui.Components
set { Markup = markup = value; }
}
+ public bool DisabledStyle { get; set; }
+
[GLib.Property ("status-icon")]
public Xwt.Drawing.Image StatusIcon { get; set; }
@@ -2419,8 +2410,7 @@ namespace MonoDevelop.Ide.Gui.Components
return icon.WithSize (size);
}
-
- void SetupLayout (Gtk.Widget widget)
+ void SetupLayout (Gtk.Widget widget, Gtk.CellRendererState flags = 0)
{
if (scaledFont == null) {
if (scaledFont != null)
@@ -2438,7 +2428,15 @@ namespace MonoDevelop.Ide.Gui.Components
layout.FontDescription = scaledFont;
}
- layout.SetMarkup (TextMarkup);
+ if (DisabledStyle) {
+ Gdk.Color fgColor;
+ if (Platform.IsMac && flags.HasFlag (Gtk.CellRendererState.Selected))
+ fgColor = widget.Style.Text (IdeTheme.UserInterfaceTheme == Theme.Light ? Gtk.StateType.Selected : Gtk.StateType.Normal);
+ else
+ fgColor = widget.Style.Text (Gtk.StateType.Insensitive);
+ layout.SetMarkup ("<span foreground='" + fgColor.GetHex () + "'>" + TextMarkup + "</span>");
+ } else
+ layout.SetMarkup (TextMarkup);
}
protected override void Render (Gdk.Drawable window, Gtk.Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gdk.Rectangle expose_area, Gtk.CellRendererState flags)
@@ -2453,7 +2451,7 @@ namespace MonoDevelop.Ide.Gui.Components
if ((flags & Gtk.CellRendererState.Selected) != 0)
st = widget.HasFocus ? Gtk.StateType.Selected : Gtk.StateType.Active;
- SetupLayout (widget);
+ SetupLayout (widget, flags);
int w, h;
layout.GetPixelSize (out w, out h);
@@ -2493,7 +2491,13 @@ namespace MonoDevelop.Ide.Gui.Components
public override void GetSize (Gtk.Widget widget, ref Gdk.Rectangle cell_area, out int x_offset, out int y_offset, out int width, out int height)
{
- base.GetSize (widget, ref cell_area, out x_offset, out y_offset, out width, out height);
+ SetupLayout (widget);
+
+ x_offset = y_offset = 0;
+
+ layout.GetPixelSize (out width, out height);
+ width += (int)Xpad * 2;
+
if (StatusIcon != CellRendererImage.NullImage && StatusIcon != null) {
var iconSize = GetZoomedIconSize (StatusIcon, zoom);
width += (int)iconSize.Width + StatusIconSpacing;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs
index 909dccb19f..adfc9c6e41 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs
@@ -487,6 +487,9 @@ namespace MonoDevelop.Ide.Gui.Components
void addQueuedUpdate (QueuedUpdate update)
{
lock (updates) {
+ if (destroyed)
+ return;
+
updates.Enqueue (update);
if (!outputDispatcherRunning) {
GLib.Timeout.Add (50, outputDispatcher);
@@ -572,6 +575,9 @@ namespace MonoDevelop.Ide.Gui.Components
bool ShouldAutoScroll ()
{
+ if (scrollView == null || scrollView.Vadjustment == null)
+ return false;
+
// we need to account for the page size as well for some reason
return scrollView.Vadjustment.Value + scrollView.Vadjustment.PageSize >= scrollView.Vadjustment.Upper;
}
@@ -624,15 +630,17 @@ namespace MonoDevelop.Ide.Gui.Components
}
}
+ bool destroyed = false;
protected override void OnDestroyed ()
{
- base.OnDestroyed ();
-
lock (updates) {
+ destroyed = true;
updates.Clear ();
lastTextWrite = null;
}
IdeApp.Preferences.CustomOutputPadFont.Changed -= HandleCustomFontChanged;
+
+ base.OnDestroyed ();
}
abstract class QueuedUpdate
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs
index e4209d25fd..b69fa16661 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs
@@ -142,7 +142,7 @@ namespace MonoDevelop.Ide.Gui.Components
public void ScrollToNode ()
{
- tree.ScrollToCell (store.GetPath (currentIter), pad.CompleteColumn, true, 0, -1);
+ tree.ScrollToCell (store.GetPath (currentIter), pad.CompleteColumn, true, 0, 0);
}
public bool MoveToRoot ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs
index 3e422e7b36..794eb14c01 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs
@@ -58,7 +58,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs
public CommonAboutDialog ()
{
Name = "wizard_dialog";
- Title = string.Format (GettextCatalog.GetString ("About {0}"), BrandingService.ApplicationName);
+ Title = string.Format (GettextCatalog.GetString ("About {0}"), BrandingService.ApplicationLongName);
TransientFor = IdeApp.Workbench.RootWindow;
AllowGrow = false;
HasSeparator = false;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkErrorDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkErrorDialog.cs
deleted file mode 100644
index 70125ca105..0000000000
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkErrorDialog.cs
+++ /dev/null
@@ -1,185 +0,0 @@
-//
-// ErrorDialog.cs
-//
-// Author:
-// Lluis Sanchez Gual <lluis@novell.com>
-//
-// Copyright (c) 2010 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using Gtk;
-using MonoDevelop.Core;
-
-namespace MonoDevelop.Ide.Gui.Dialogs
-{
- internal partial class GtkErrorDialog : Gtk.Dialog
- {
- TextTag tagWrap, tagNoWrap;
- TextView detailsTextView;
- Expander expander;
-
- public GtkErrorDialog (Window parent, string title, string message, AlertButton[] buttons)
- {
- if (string.IsNullOrEmpty (title))
- throw new ArgumentException ();
- if (buttons == null)
- throw new ArgumentException ();
-
- Title = BrandingService.ApplicationName;
- TransientFor = parent;
- Modal = true;
- WindowPosition = Gtk.WindowPosition.CenterOnParent;
- DefaultWidth = 624;
- DefaultHeight = 142;
-
- this.VBox.BorderWidth = 2;
-
- var hbox = new HBox () {
- Spacing = 6,
- BorderWidth = 12,
- };
-
- var errorImage = new Image (Gtk.Stock.DialogError, IconSize.Dialog) {
- Yalign = 0F,
- };
- hbox.PackStart (errorImage, false, false, 0);
- this.VBox.Add (hbox);
-
- var vbox = new VBox () {
- Spacing = 6,
- };
- hbox.PackEnd (vbox, true, true, 0);
-
- var titleLabel = new Label () {
- Markup = "<b>" + GLib.Markup.EscapeText (title) + "</b>",
- Xalign = 0F,
- };
- vbox.PackStart (titleLabel, false, false, 0);
-
- if (!string.IsNullOrWhiteSpace (message)) {
- message = message.Trim ();
- var descriptionLabel = new Label (message) {
- Xalign = 0F,
- Selectable = true,
- };
- descriptionLabel.LineWrap = true;
- descriptionLabel.WidthRequest = 500;
- descriptionLabel.ModifyBg (StateType.Normal, new Gdk.Color (255,0,0));
- vbox.PackStart (descriptionLabel, false, false, 0);
- }
-
- expander = new Expander (GettextCatalog.GetString ("Details")) {
- CanFocus = true,
- Visible = false,
- };
- vbox.PackEnd (expander, true, true, 0);
-
- var sw = new ScrolledWindow () {
- HeightRequest = 180,
- ShadowType = ShadowType.Out,
- };
- expander.Add (sw);
-
- detailsTextView = new TextView () {
- CanFocus = true,
- };
- detailsTextView.KeyPressEvent += TextViewKeyPressed;
- sw.Add (detailsTextView);
-
- var aa = this.ActionArea;
- aa.Spacing = 10;
- aa.LayoutStyle = ButtonBoxStyle.End;
- aa.BorderWidth = 5;
- aa.Homogeneous = true;
-
- expander.Activated += delegate {
- this.AllowGrow = expander.Expanded;
- GLib.Timeout.Add (100, delegate {
- Resize (DefaultWidth, 1);
- return false;
- });
- };
-
- tagNoWrap = new TextTag ("nowrap");
- tagNoWrap.WrapMode = WrapMode.None;
- detailsTextView.Buffer.TagTable.Add (tagNoWrap);
-
- tagWrap = new TextTag ("wrap");
- tagWrap.WrapMode = WrapMode.Word;
- detailsTextView.Buffer.TagTable.Add (tagWrap);
-
- this.Buttons = buttons;
- for (int i = 0; i < Buttons.Length; i++) {
- Gtk.Button button;
- button = new Gtk.Button (Buttons[i].Label);
- button.ShowAll ();
- AddActionWidget (button, i);
- }
-
- Child.ShowAll ();
- Hide ();
- }
-
- [GLib.ConnectBefore]
- void TextViewKeyPressed (object sender, KeyPressEventArgs args)
- {
- if (args.Event.State.HasFlag (Gdk.ModifierType.ControlMask) &&
- (args.Event.Key == Gdk.Key.c || args.Event.Key == Gdk.Key.C)) {
- TextView tv = (TextView) sender;
-
- Gtk.Clipboard clipboard = Gtk.Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false));
- Gtk.TextIter start, end;
- string text;
-
- if (!tv.Buffer.GetSelectionBounds (out start, out end) || start.Offset == end.Offset) {
- start = tv.Buffer.StartIter;
- end = tv.Buffer.EndIter;
- }
-
- text = tv.Buffer.GetText (start, end, true);
-
- if (Platform.IsWindows) {
- // Windows specific hack
- text = text.Replace ("\r\n", "\n");
- }
-
- clipboard.Text = text;
-
- args.RetVal = true;
- }
- }
-
- public AlertButton[] Buttons {
- get; private set;
- }
-
- public void AddDetails (string text, bool wrapped)
- {
- TextIter it = detailsTextView.Buffer.EndIter;
- if (wrapped)
- detailsTextView.Buffer.InsertWithTags (ref it, text, tagWrap);
- else
- detailsTextView.Buffer.InsertWithTags (ref it, text, tagNoWrap);
- expander.Visible = true;
- }
- }
-}
-
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/OptionsDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/OptionsDialog.cs
index 3f05a3965c..264ba48893 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/OptionsDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/OptionsDialog.cs
@@ -204,7 +204,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs
DefaultHeight = 680;
}
- void PixbufCellDataFunc (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
+ static void PixbufCellDataFunc (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
{
TreeIter parent;
bool toplevel = !model.IterParent (out parent, iter);
@@ -234,7 +234,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs
}
}
- void TextCellDataFunc (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
+ static void TextCellDataFunc (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
{
TreeIter parent;
bool toplevel = !model.IterParent (out parent, iter);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/IDEStyleOptionsPanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/IDEStyleOptionsPanel.cs
index d659f866ec..ec5ac58a06 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/IDEStyleOptionsPanel.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/IDEStyleOptionsPanel.cs
@@ -90,7 +90,7 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
void Load ()
{
- currentTheme = IdeApp.Preferences.UserInterfaceTheme;
+ currentTheme = IdeApp.Preferences.UserInterfaceThemeName;
for (int n = 1; n < isoCodes.Length; n += 2)
comboLanguage.AppendText (GettextCatalog.GetString (isoCodes [n]));
@@ -105,7 +105,7 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
foreach (string t in InstalledThemes)
comboTheme.AppendText (t);
- var sel = themes.Value.IndexOf (IdeApp.Preferences.UserInterfaceTheme);
+ var sel = themes.Value.IndexOf (IdeApp.Preferences.UserInterfaceThemeName);
if (sel == -1)
sel = 0;
else if (Platform.IsLinux)
@@ -185,8 +185,8 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
);
}
- if (currentTheme != IdeApp.Preferences.UserInterfaceTheme.Value) {
- IdeApp.Preferences.UserInterfaceTheme.Value = currentTheme;
+ if (currentTheme != IdeApp.Preferences.UserInterfaceThemeName.Value) {
+ IdeApp.Preferences.UserInterfaceThemeName.Value = currentTheme;
MessageService.ShowMessage (
GettextCatalog.GetString (
"The user interface theme change will take effect the next time you start {0}",
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs
index c08e3d63f0..0f412d2bd2 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/KeyBindingsPanel.cs
@@ -87,12 +87,7 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
bindingTVCol.Title = GettextCatalog.GetString ("Key Binding");
CellRendererText bindingRenderer = new CellRendererText ();
bindingTVCol.PackStart (bindingRenderer, false);
- bindingTVCol.SetCellDataFunc (bindingRenderer, delegate (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) {
- string binding = (model.GetValue (iter, bindingCol) as string) ?? "";
- ((CellRendererText)cell).Text = binding.Length > 0
- ? KeyBindingManager.BindingToDisplayLabel (binding, false)
- : binding;
- });
+ bindingTVCol.SetCellDataFunc (bindingRenderer, BindingTVDataFunc);
keyTreeView.AppendColumn (bindingTVCol);
keyTreeView.AppendColumn (GettextCatalog.GetString ("Description"), new CellRendererText (), "text", descCol);
@@ -143,6 +138,14 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
conflicButton.UseUnderline = true;
}
+ static void BindingTVDataFunc (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
+ {
+ string binding = (model.GetValue (iter, bindingCol) as string) ?? "";
+ ((CellRendererText)cell).Text = binding.Length > 0
+ ? KeyBindingManager.BindingToDisplayLabel (binding, false)
+ : binding;
+ }
+
void Refilter ()
{
keyTreeView.Model = null;
@@ -472,7 +475,7 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
do {
Command command = (Command) keyStore.GetValue (citer, commandCol);
if (command == cmd) {
- TreePath path = keyStore.GetPath (citer);
+ TreePath path = filterModel.ConvertChildPathToPath (keyStore.GetPath (citer));
keyTreeView.ExpandToPath (path);
keyTreeView.Selection.SelectPath (path);
keyTreeView.ScrollToCell (path, keyTreeView.Columns[0], true, 0.5f, 0f);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TasksOptionsPanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TasksOptionsPanel.cs
index 1f4862e455..94dd433b93 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TasksOptionsPanel.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TasksOptionsPanel.cs
@@ -67,7 +67,7 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
buttonRemove.Clicked += new EventHandler (RemoveToken);
entryToken.Changed += new EventHandler (Validate);
- Styles.Changed += HandleUserInterfaceSkinChanged;
+ Styles.Changed += HandleUserInterfaceThemeChanged;
}
void Validate (object sender, EventArgs args)
@@ -173,7 +173,7 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
LoadColors ();
}
- void HandleUserInterfaceSkinChanged (object sender, EventArgs e)
+ void HandleUserInterfaceThemeChanged (object sender, EventArgs e)
{
LoadColors ();
}
@@ -224,7 +224,7 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
public override void Destroy ()
{
- Styles.Changed -= HandleUserInterfaceSkinChanged;
+ Styles.Changed -= HandleUserInterfaceThemeChanged;
base.Destroy ();
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/ClassBrowserPadWidget.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/ClassBrowserPadWidget.cs
index 770ad15d87..aa98707fe3 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/ClassBrowserPadWidget.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ClassPad/ClassBrowserPadWidget.cs
@@ -60,6 +60,14 @@ namespace MonoDevelop.Ide.Gui.Pads.ClassBrowser
this.ShowAll ();
}
+ protected override void OnDestroyed ()
+ {
+ base.OnDestroyed ();
+
+ IdeApp.Workspace.WorkspaceItemOpened -= OnOpenCombine;
+ IdeApp.Workspace.WorkspaceItemClosed -= OnCloseCombine;
+ }
+
void OnOpenCombine (object sender, WorkspaceItemEventArgs e)
{
treeView.LoadTree (e.Item);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs
index c943064680..a3cb32a7bb 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFileNodeBuilder.cs
@@ -79,7 +79,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
nodeInfo.Label = GLib.Markup.EscapeText (file.Link.IsNullOrEmpty ? file.FilePath.FileName : file.Link.FileName);
if (!File.Exists (file.FilePath)) {
- nodeInfo.Label = "<span foreground='red'>" + nodeInfo.Label + "</span>";
+ nodeInfo.Label = "<span foreground='" + Styles.ErrorForegroundColor.ToHexString (false) + "'>" + nodeInfo.Label + "</span>";
}
nodeInfo.Icon = DesktopService.GetIconForFile (file.FilePath, Gtk.IconSize.Menu);
@@ -181,7 +181,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
if (!FileService.IsValidPath (newPath) || ProjectFolderCommandHandler.ContainsDirectorySeparator (newName)) {
MessageService.ShowWarning (GettextCatalog.GetString ("The name you have chosen contains illegal characters. Please choose a different name."));
- } else if ((newProjectFile != null && newProjectFile != file) || File.Exists (file.FilePath.ParentDirectory.Combine (newName))) {
+ } else if ((newProjectFile != null && newProjectFile != file) || FileExistsCaseSensitive (file.FilePath.ParentDirectory, newName)) {
// If there is already a file under the newPath which is *different*, then throw an exception
MessageService.ShowWarning (GettextCatalog.GetString ("File or directory name is already in use. Please choose a different one."));
} else {
@@ -195,6 +195,15 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
MessageService.ShowError (GettextCatalog.GetString ("There was an error renaming the file."), ex);
}
}
+
+ static bool FileExistsCaseSensitive (FilePath parentDirectory, string fileName)
+ {
+ if (!Directory.Exists (parentDirectory))
+ return false;
+
+ return Directory.GetFiles (parentDirectory, fileName)
+ .Any (file => Path.GetFileName (file) == fileName);
+ }
public override void ActivateItem ()
{
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderFileNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderFileNodeBuilder.cs
index 3fa984982e..f96a0dadb9 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderFileNodeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/SolutionFolderFileNodeBuilder.cs
@@ -57,7 +57,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
SolutionFolderFileNode file = (SolutionFolderFileNode) dataObject;
nodeInfo.Label = file.FileName.FileName;
if (!System.IO.File.Exists (file.FileName))
- nodeInfo.Label = "<span foreground='red'>" + nodeInfo.Label + "</span>";
+ nodeInfo.Label = "<span foreground='" + Styles.ErrorForegroundColor.ToHexString (false) + "'>" + nodeInfo.Label + "</span>";
nodeInfo.Icon = DesktopService.GetIconForFile (file.FileName, Gtk.IconSize.Menu);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs
index e050b1dfa2..a2dbe2aa64 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs
@@ -62,13 +62,15 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
Context.CacheComposedIcon (nodeInfo.Icon, "fade", gicon);
}
nodeInfo.Icon = gicon;
- nodeInfo.Label = GettextCatalog.GetString ("<span foreground='grey'>{0} <span size='small'>(Unavailable)</span></span>", GLib.Markup.EscapeText (entry.Name));
+ nodeInfo.Label = GettextCatalog.GetString ("{0} <span size='small'>(Unavailable)</span>", GLib.Markup.EscapeText (entry.Name));
+ nodeInfo.DisabledStyle = true;
}
else if (entry.LoadError.Length > 0) {
nodeInfo.Icon = Context.GetIcon (MonoDevelop.Ide.Gui.Stock.Project).WithAlpha (0.5);
nodeInfo.Label = entry.Name;
nodeInfo.StatusSeverity = TaskSeverity.Error;
nodeInfo.StatusMessage = GettextCatalog.GetString ("Load failed: ") + entry.LoadError;
+ nodeInfo.DisabledStyle = true;
} else {
nodeInfo.Icon = Context.GetIcon (MonoDevelop.Ide.Gui.Stock.Project);
var gicon = Context.GetComposedIcon (nodeInfo.Icon, "fade");
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/DefaultMonitorPad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/DefaultMonitorPad.cs
index 1224e93802..b0215a6ba2 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/DefaultMonitorPad.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/DefaultMonitorPad.cs
@@ -135,9 +135,9 @@ namespace MonoDevelop.Ide.Gui.Pads
void OnButtonPinClick (object sender, EventArgs e)
{
if (buttonPin.Active)
- ((ImageView)buttonPin.Image).SetIcon ("md-pin-down", IconSize.Menu);
+ ((ImageView)buttonPin.Image).SetIcon (Stock.PinDown, IconSize.Menu);
else
- ((ImageView)buttonPin.Image).SetIcon ("md-pin-down", IconSize.Menu);
+ ((ImageView)buttonPin.Image).SetIcon (Stock.PinUp, IconSize.Menu);
}
public bool AllowReuse {
@@ -218,6 +218,8 @@ namespace MonoDevelop.Ide.Gui.Pads
logView.Clear ();
IdeApp.Workspace.FirstWorkspaceItemOpened -= OnCombineOpen;
IdeApp.Workspace.LastWorkspaceItemClosed -= OnCombineClosed;
+
+ base.Dispose ();
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
index f032b032e7..debc158df8 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
@@ -271,7 +271,15 @@ namespace MonoDevelop.Ide.Gui.Pads
AddTask (t);
}
- control.FocusChain = new Gtk.Widget [] { sw };
+ control.FocusChain = new Gtk.Widget [] { outputView };
+ }
+
+ public override void Dispose ()
+ {
+ IdeApp.Workspace.FirstWorkspaceItemOpened -= OnCombineOpen;
+ IdeApp.Workspace.LastWorkspaceItemClosed -= OnCombineClosed;
+
+ base.Dispose ();
}
void HandleSwSizeAllocated (object o, SizeAllocatedArgs args)
@@ -554,10 +562,10 @@ namespace MonoDevelop.Ide.Gui.Pads
void OnTaskJumpto (object o, EventArgs args)
{
- TreeIter iter;
+ TreeIter iter, sortedIter;
TreeModel model;
- if (view.Selection.GetSelected (out model, out iter)) {
- iter = filter.ConvertIterToChildIter (sort.ConvertIterToChildIter (iter));
+ if (view.Selection.GetSelected (out model, out sortedIter)) {
+ iter = filter.ConvertIterToChildIter (sort.ConvertIterToChildIter (sortedIter));
store.SetValue (iter, DataColumns.Read, true);
TaskListEntry task = store.GetValue (iter, DataColumns.Task) as TaskListEntry;
if (task != null) {
@@ -915,8 +923,9 @@ namespace MonoDevelop.Ide.Gui.Pads
private void ItemToggled (object o, ToggledArgs args)
{
Gtk.TreeIter iter;
- if (store.GetIterFromString (out iter, args.Path)) {
- TaskListEntry task = (TaskListEntry)store.GetValue (iter, DataColumns.Task);
+
+ if (view.Model.GetIterFromString (out iter, args.Path)) {
+ TaskListEntry task = (TaskListEntry)view.Model.GetValue (iter, DataColumns.Task);
task.Completed = !task.Completed;
TaskService.FireTaskToggleEvent (this, new TaskEventArgs (task));
}
@@ -951,6 +960,12 @@ namespace MonoDevelop.Ide.Gui.Pads
aTask.FileName.CompareTo (zTask.FileName) :
0;
}
+
+ internal void FocusOutputView ()
+ {
+ logBtn.Active = true;
+ HandleLogBtnToggled (this, EventArgs.Empty);
+ }
void HandleLogBtnToggled (object sender, EventArgs e)
{
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs
index 3f961bce6f..62a2dd0ce8 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs
@@ -45,6 +45,7 @@ using MonoDevelop.Components;
using MonoDevelop.Ide.Extensions;
using MonoDevelop.Components.MainToolbar;
using MonoDevelop.Components.DockNotebook;
+using System.Threading.Tasks;
namespace MonoDevelop.Ide.Gui
{
@@ -208,7 +209,7 @@ namespace MonoDevelop.Ide.Gui
public DefaultWorkbench()
{
- Title = BrandingService.ApplicationName;
+ Title = BrandingService.ApplicationLongName;
LoggingService.LogInfo ("Creating DefaultWorkbench");
WidthRequest = normalBounds.Width;
@@ -539,9 +540,9 @@ namespace MonoDevelop.Ide.Gui
post = "*";
}
if (window.ViewContent.Project != null) {
- return window.ViewContent.Project.Name + " – " + window.ViewContent.PathRelativeToProject + post + " – " + BrandingService.ApplicationName;
+ return window.ViewContent.Project.Name + " – " + window.ViewContent.PathRelativeToProject + post + " – " + BrandingService.ApplicationLongName;
}
- return window.ViewContent.ContentName + post + " – " + BrandingService.ApplicationName;
+ return window.ViewContent.ContentName + post + " – " + BrandingService.ApplicationLongName;
}
void SetWorkbenchTitle ()
@@ -564,8 +565,8 @@ namespace MonoDevelop.Ide.Gui
static string GetDefaultTitle ()
{
if (IdeApp.ProjectOperations.CurrentSelectedProject != null)
- return IdeApp.ProjectOperations.CurrentSelectedProject.Name + " – " + BrandingService.ApplicationName;
- return BrandingService.ApplicationName;
+ return IdeApp.ProjectOperations.CurrentSelectedProject.Name + " – " + BrandingService.ApplicationLongName;
+ return BrandingService.ApplicationLongName;
}
void ApplicationNameChanged (object sender, EventArgs e)
@@ -826,6 +827,20 @@ namespace MonoDevelop.Ide.Gui
initializing = false;
}
+ Task layoutChangedTask;
+ async void LayoutChanged (object o, EventArgs e)
+ {
+ if (layoutChangedTask != null) {
+ return;
+ }
+
+ layoutChangedTask = Task.Delay (10000);
+ await layoutChangedTask;
+ layoutChangedTask = null;
+
+ dock.SaveLayouts (configFile);
+ }
+
void CreateComponents ()
{
fullViewVBox = new VBox (false, 0);
@@ -842,23 +857,7 @@ namespace MonoDevelop.Ide.Gui
// Create the docking widget and add it to the window.
dock = new DockFrame ();
- dock.LayoutChanged += (o, e) => {
- if (saveTimer != null) {
- saveTimer.Stop ();
- saveTimer.Dispose ();
- }
-
- // Save the layout changes after 10 seconds.
- saveTimer = new Timer (10000);
- saveTimer.Elapsed += (s, ev) => {
- Runtime.RunInMainThread (() => {
- dock.SaveLayouts (configFile);
- saveTimer.Dispose ();
- saveTimer = null;
- });
- };
- saveTimer.Start ();
- };
+ dock.LayoutChanged += LayoutChanged;
dock.CompactGuiLevel = ((int)IdeApp.Preferences.WorkbenchCompactness.Value) + 1;
IdeApp.Preferences.WorkbenchCompactness.Changed += delegate {
@@ -1415,7 +1414,7 @@ namespace MonoDevelop.Ide.Gui
if (String.IsNullOrEmpty (windowTitle))
windowTitle = GettextCatalog.GetString (codon.Label);
if (window.HasErrors && !window.ContentVisible)
- windowTitle = "<span foreground='red'>" + windowTitle + "</span>";
+ windowTitle = "<span foreground='" + Styles.ErrorForegroundColor.ToHexString (false) + "'>" + windowTitle + "</span>";
else if (window.HasNewData && !window.ContentVisible)
windowTitle = "<b>" + windowTitle + "</b>";
item.Label = windowTitle;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs
index 5bd13071e7..fb526e9f18 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs
@@ -551,6 +551,7 @@ namespace MonoDevelop.Ide.Gui
internal void DisposeDocument ()
{
UnsubscibeAnalysisdocument ();
+ UnsubscribeRoslynWorkspace ();
UnloadAdhocProject ();
if (window is SdiWorkspaceWindow)
((SdiWorkspaceWindow)window).DetachFromPathedDocument ();
@@ -789,14 +790,24 @@ namespace MonoDevelop.Ide.Gui
Task EnsureAnalysisDocumentIsOpen ()
{
- if (analysisDocument != null)
- return SpecializedTasks.EmptyTask;
+ if (analysisDocument != null) {
+ Microsoft.CodeAnalysis.Document doc;
+ try {
+ doc = RoslynWorkspace.CurrentSolution.GetDocument (analysisDocument);
+ } catch (Exception) {
+ doc = null;
+ }
+ if (doc != null)
+ return SpecializedTasks.EmptyTask;
+ }
if (Editor == null) {
UnsubscibeAnalysisdocument ();
return SpecializedTasks.EmptyTask;
}
if (Project != null && Editor.MimeType == "text/x-csharp" && !IsUnreferencedSharedProject(Project)) {
+ UnsubscribeRoslynWorkspace ();
RoslynWorkspace = TypeSystemService.GetWorkspace (this.Project.ParentSolution);
+ SubscribeRoslynWorkspace ();
analysisDocument = TypeSystemService.GetDocumentId (this.Project, this.FileName);
if (analysisDocument != null) {
TypeSystemService.InformDocumentOpen (analysisDocument, Editor);
@@ -832,7 +843,9 @@ namespace MonoDevelop.Ide.Gui
return TypeSystemService.Load (adhocSolution, new ProgressMonitor (), token).ContinueWith (task => {
if (token.IsCancellationRequested)
return;
+ UnsubscribeRoslynWorkspace ();
RoslynWorkspace = task.Result.FirstOrDefault(); // 1 solution loaded ->1 workspace as result
+ SubscribeRoslynWorkspace ();
analysisDocument = TypeSystemService.GetDocumentId (RoslynWorkspace, newProject, adHocFile);
TypeSystemService.InformDocumentOpen (RoslynWorkspace, analysisDocument, Editor);
});
@@ -842,6 +855,27 @@ namespace MonoDevelop.Ide.Gui
return SpecializedTasks.EmptyTask;
}
+ void UnsubscribeRoslynWorkspace ()
+ {
+ var ws = RoslynWorkspace as MonoDevelopWorkspace;
+ if (ws != null) {
+ ws.ProjectReloaded -= HandleRoslynProjectReload;
+ }
+ }
+
+ void SubscribeRoslynWorkspace ()
+ {
+ var ws = RoslynWorkspace as MonoDevelopWorkspace;
+ if (ws != null) {
+ ws.ProjectReloaded += HandleRoslynProjectReload;
+ }
+ }
+
+ void HandleRoslynProjectReload (object sender, RoslynProjectEventArgs e)
+ {
+ StartReparseThread ();
+ }
+
bool IsUnreferencedSharedProject (Project project)
{
return project is SharedAssetsProject;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/IPadContainer.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/IPadContainer.cs
index 756be72f31..87711863d5 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/IPadContainer.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/IPadContainer.cs
@@ -279,14 +279,12 @@ namespace MonoDevelop.Ide.Gui
internal void NotifyShown ()
{
- if (PadShown != null)
- PadShown (this, EventArgs.Empty);
+ PadShown?.Invoke (this, EventArgs.Empty);
}
internal void NotifyHidden ()
{
- if (PadHidden != null)
- PadHidden (this, EventArgs.Empty);
+ PadHidden?.Invoke (this, EventArgs.Empty);
}
internal void NotifyContentShown ()
@@ -295,20 +293,18 @@ namespace MonoDevelop.Ide.Gui
HasNewData = false;
if (HasErrors)
HasErrors = false;
- if (PadContentShown != null)
- PadContentShown (this, EventArgs.Empty);
+ PadContentShown?.Invoke (this, EventArgs.Empty);
}
internal void NotifyContentHidden ()
{
- if (PadContentHidden != null)
- PadContentHidden (this, EventArgs.Empty);
+ PadContentHidden?.Invoke (this, EventArgs.Empty);
}
internal void NotifyDestroyed ()
{
- if (PadDestroyed != null)
- PadDestroyed (this, EventArgs.Empty);
+ PadDestroyed?.Invoke (this, EventArgs.Empty);
+ content?.Dispose ();
}
public event EventHandler PadShown;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/PadContent.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/PadContent.cs
index c173e1c009..e559040477 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/PadContent.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/PadContent.cs
@@ -75,6 +75,7 @@ namespace MonoDevelop.Ide.Gui
public virtual void Dispose ()
{
+ Control?.Dispose ();
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs
index 3b85a18590..4373d151ee 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProgressMonitors.cs
@@ -29,6 +29,7 @@
using System;
using System.Collections;
+using System.Collections.Generic;
using MonoDevelop.Core;
using MonoDevelop.Ide.Gui.Pads;
@@ -44,8 +45,8 @@ namespace MonoDevelop.Ide.Gui
{
public class ProgressMonitorManager : GuiSyncObject
{
- ArrayList searchMonitors = new ArrayList ();
- ArrayList outputMonitors = new ArrayList ();
+ List<Pad> searchMonitors = new List<Pad> ();
+ List<Pad> outputMonitors = new List<Pad> ();
/******************************/
@@ -73,7 +74,7 @@ namespace MonoDevelop.Ide.Gui
Pad pad = IdeApp.Workbench.GetPad<ErrorListPad> ();
ErrorListPad errorPad = (ErrorListPad) pad.Content;
AggregatedProgressMonitor mon = new AggregatedProgressMonitor (errorPad.GetBuildProgressMonitor ());
- mon.AddSlaveMonitor (GetStatusProgressMonitor (statusText, Stock.StatusBuild, false, true, false, pad));
+ mon.AddFollowerMonitor (GetStatusProgressMonitor (statusText, Stock.StatusBuild, false, true, false, pad));
return mon;
}
@@ -157,6 +158,8 @@ namespace MonoDevelop.Ide.Gui
/// </remarks>
public Pad GetPadForMonitor (ProgressMonitor monitor)
{
+ Runtime.AssertMainThread ();
+
foreach (Pad pad in outputMonitors) {
DefaultMonitorPad p = (DefaultMonitorPad) pad.Content;
if (p.CurrentMonitor == monitor)
@@ -216,7 +219,9 @@ namespace MonoDevelop.Ide.Gui
monitorPad.StatusSourcePad = pad;
pad.Sticky = true;
- outputMonitors.Add (pad);
+ lock (outputMonitors) {
+ outputMonitors.Add (pad);
+ }
if (instanceCount > 0) {
// Additional output pads will be destroyed when hidden
@@ -237,7 +242,9 @@ namespace MonoDevelop.Ide.Gui
void DestroyPad (Pad pad)
{
- outputMonitors.Remove (pad);
+ lock (outputMonitors) {
+ outputMonitors.Remove (pad);
+ }
pad.Destroy ();
}
@@ -280,11 +287,12 @@ namespace MonoDevelop.Ide.Gui
lock (searchMonitors) {
searchMonitors.Add (pad);
- if (searchMonitors.Count > 1) {
+ if (searchMonitors.Count > 1) { // This is needed due to ContextBoundObject not being able to do a reflection access on private fields
+ var searchMonitorsCopy = searchMonitors;
// Additional search pads will be destroyed when hidden
pad.Window.PadHidden += delegate {
- lock (searchMonitors) {
- searchMonitors.Remove (pad);
+ lock (searchMonitorsCopy) {
+ searchMonitorsCopy.Remove (pad);
}
pad.Destroy ();
};
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs
index acf648032b..0977dfdd84 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs
@@ -37,7 +37,7 @@ namespace MonoDevelop.Ide.Gui
public GtkProjectLoadProgressMonitor (ProgressMonitor monitor): base (Runtime.MainSynchronizationContext)
{
- AddSlaveMonitor (monitor);
+ AddFollowerMonitor (monitor);
}
public override void Dispose ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs
index 5ca86e259b..d1c1341261 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceWindow.cs
@@ -112,8 +112,7 @@ namespace MonoDevelop.Ide.Gui
// which will add the content control to the subview notebook. In that case, we don't need to add it to box
if (subViewNotebook == null)
box.PackStart (content.Control);
-
- content.ContentNameChanged += new EventHandler(SetTitleEvent);
+ content.ContentNameChanged += SetTitleEvent;
content.DirtyChanged += HandleDirtyChanged;
box.Show ();
Add (box);
@@ -485,7 +484,7 @@ namespace MonoDevelop.Ide.Gui
}
if (content != null) {
- content.ContentNameChanged -= new EventHandler(SetTitleEvent);
+ content.ContentNameChanged -= SetTitleEvent;
content.DirtyChanged -= HandleDirtyChanged;
content.WorkbenchWindow = null;
content.Dispose ();
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/StockIcons.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/StockIcons.cs
index 567a3111cb..fa029271ab 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/StockIcons.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/StockIcons.cs
@@ -163,5 +163,6 @@ namespace MonoDevelop.Ide.Gui
public static readonly IconId Clear = "md-clear";
public static readonly IconId Execute = Gtk.Stock.Execute;
public static readonly IconId SearchboxSearch = "md-searchbox-search";
+ public static readonly IconId Updates = "md-updates";
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Styles.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Styles.cs
index ccbf870986..0b1886a2e2 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Styles.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Styles.cs
@@ -143,20 +143,10 @@ namespace MonoDevelop.Ide.Gui
public static readonly Pango.FontDescription StatusFont = Pango.FontDescription.FromString ("Normal");
- public static int StatusFontPixelHeight { get { return (int)(11 * PixelScale); } }
- public static int ProgressBarHeight { get { return (int)(18 * PixelScale); } }
- public static int ProgressBarInnerPadding { get { return (int)(4 * PixelScale); } }
- public static int ProgressBarOuterPadding { get { return (int)(4 * PixelScale); } }
-
- static double? pixelScale = null;
-
- static double PixelScale {
- get {
- if (!pixelScale.HasValue)
- pixelScale = GtkWorkarounds.GetPixelScale ();
- return (double)pixelScale;
- }
- }
+ public static int StatusFontPixelHeight { get { return 11; } }
+ public static int ProgressBarHeight { get { return 18; } }
+ public static int ProgressBarInnerPadding { get { return 4; } }
+ public static int ProgressBarOuterPadding { get { return 4; } }
// Toolbar
@@ -320,7 +310,7 @@ namespace MonoDevelop.Ide.Gui
DefaultFont = defaultStyle.FontDescription.Copy ();
DefaultFontName = DefaultFont.ToString ();
- if (IdeApp.Preferences == null || IdeApp.Preferences.UserInterfaceSkin == Skin.Light)
+ if (IdeApp.Preferences == null || IdeApp.Preferences.UserInterfaceTheme == Theme.Light)
LoadLightStyle ();
else
LoadDarkStyle ();
@@ -584,7 +574,7 @@ namespace MonoDevelop.Ide.Gui
PopoverWindow.DefaultBackgroundColor = Color.FromName ("#5e5e5e");
PopoverWindow.DefaultTextColor = Color.FromName ("#bdc1c1");
- PopoverWindow.ShadowColor = Color.FromName ("#000000").WithAlpha (0); // transparent since dark skin doesn't need shadows
+ PopoverWindow.ShadowColor = Color.FromName ("#000000").WithAlpha (0); // transparent since dark theme doesn't need shadows
PopoverWindow.ParamaterWindows.GradientStartColor = Color.FromName ("#fffee6");
PopoverWindow.ParamaterWindows.GradientEndColor = Color.FromName ("#fffcd1");
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewContent.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewContent.cs
index e7f69e98e4..a7d535107b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewContent.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewContent.cs
@@ -60,7 +60,7 @@ namespace MonoDevelop.Ide.Gui
}
public bool IsUntitled {
- get { return (contentName == null); }
+ get { return (ContentName == null); }
}
public virtual bool IsDirty {
@@ -99,7 +99,7 @@ namespace MonoDevelop.Ide.Gui
public virtual Task Save ()
{
- return Save (contentName);
+ return Save (ContentName);
}
public Task Save (FilePath fileName)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs
index 0d553cb966..77f6ed169f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs
@@ -55,6 +55,7 @@ using MonoDevelop.Ide.Editor;
using MonoDevelop.Components;
using System.Threading.Tasks;
using System.Collections.Immutable;
+using MonoDevelop.Core.Instrumentation;
namespace MonoDevelop.Ide.Gui
{
@@ -145,11 +146,18 @@ namespace MonoDevelop.Ide.Gui
{
return workbench.Close();
}
-
+
public ImmutableList<Document> Documents {
get { return documents; }
}
+ /// <summary>
+ /// This is a wrapper for use with AutoTest
+ /// </summary>
+ internal bool DocumentsDirty {
+ get { return Documents.Any (d => d.IsDirty); }
+ }
+
public Document ActiveDocument {
get {
if (workbench.ActiveWorkbenchWindow == null)
@@ -316,12 +324,17 @@ namespace MonoDevelop.Ide.Gui
public void SaveAll ()
{
- // Make a copy of the list, since it may change during save
- Document[] docs = new Document [Documents.Count];
- Documents.CopyTo (docs, 0);
-
- foreach (Document doc in docs)
- doc.Save ();
+ ITimeTracker tt = Counters.SaveAllTimer.BeginTiming ();
+ try {
+ // Make a copy of the list, since it may change during save
+ Document[] docs = new Document [Documents.Count];
+ Documents.CopyTo (docs, 0);
+
+ foreach (Document doc in docs)
+ doc.Save ();
+ } finally {
+ tt.End ();
+ }
}
internal bool SaveAllDirtyFiles ()
@@ -1083,6 +1096,10 @@ namespace MonoDevelop.Ide.Gui
activeDoc = doc;
}
+ if (activeDoc == null) {
+ activeDoc = docViews.Select (t => WrapDocument (t.Item1.WorkbenchWindow)).FirstOrDefault ();
+ }
+
foreach (PadUserPrefs pi in prefs.Pads) {
foreach (Pad pad in IdeApp.Workbench.Pads) {
@@ -1305,20 +1322,31 @@ namespace MonoDevelop.Ide.Gui
}
System.Timers.Timer tabsChangedTimer = null;
- void WorkbenchTabsChanged (object sender, EventArgs ev)
+
+ void DisposeTimerAndSave (object o, EventArgs e)
{
- if (tabsChangedTimer != null) {
+ Runtime.RunInMainThread (() => {
tabsChangedTimer.Stop ();
+ tabsChangedTimer.Elapsed -= DisposeTimerAndSave;
tabsChangedTimer.Dispose ();
+ tabsChangedTimer = null;
+
+ IdeApp.Workspace.SavePreferences ();
+ });
+ }
+
+ void WorkbenchTabsChanged (object sender, EventArgs ev)
+ {
+ if (tabsChangedTimer != null) {
+ // Timer already started, and we want to allow it to complete
+ // so it can't be interrupted by triggering WorkbenchTabsChanged
+ // every few seconds.
+ return;
}
tabsChangedTimer = new System.Timers.Timer (10000);
- tabsChangedTimer.Elapsed += async (s, e) => {
- await IdeApp.Workspace.SaveAsync ();
- tabsChangedTimer.Stop ();
- tabsChangedTimer.Dispose ();
- tabsChangedTimer = null;
- };
+ tabsChangedTimer.AutoReset = false;
+ tabsChangedTimer.Elapsed += DisposeTimerAndSave;
tabsChangedTimer.Start ();
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/NamespaceSynchronisationPanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/NamespaceSynchronisationPanel.cs
index a8e296f91d..1b64831c41 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/NamespaceSynchronisationPanel.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/NamespaceSynchronisationPanel.cs
@@ -81,11 +81,9 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
{
if (ConfiguredSolution != null && widget.ResourceNamingChanged) {
string msg = GettextCatalog.GetString ("The resource naming policy has changed");
- string detail = "Changing the resource naming policy may cause run-time errors if the code using resources is not properly updated. There are two options:\n\n";
- detail += GettextCatalog.GetString ("Update all resource identifiers to match the new policy. This will require changes in the source code that references resources using the old policy. Identifiers explicitly set using the file properties pad won't be changed.\n\n");
- detail += "Keep curent resource identifiers. It doesn't require source code changes. Resources added from now on will use the new policy)";
- AlertButton update = new AlertButton ("Update Identifiers");
- AlertButton keep = new AlertButton ("Keep Current Identifiers");
+ string detail = GettextCatalog.GetString ("Changing the resource naming policy may cause run-time errors if the code using resources is not properly updated. There are two options:\n\nUpdate all resource identifiers to match the new policy. This will require changes in the source code that references resources using the old policy. Identifiers explicitly set using the file properties pad won't be changed.\n\nKeep curent resource identifiers. It doesn't require source code changes. Resources added from now on will use the new policy.");
+ AlertButton update = new AlertButton (GettextCatalog.GetString ("Update Identifiers"));
+ AlertButton keep = new AlertButton (GettextCatalog.GetString ("Keep Current Identifiers"));
AlertButton res = MessageService.AskQuestion (msg, detail, AlertButton.Cancel, update, keep);
if (res == AlertButton.Cancel)
return false;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs
index 2e006bad7e..e1f38890e7 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/PortableRuntimeOptionsPanel.cs
@@ -227,14 +227,10 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
string FormatTargetFramework (TargetFramework fx)
{
- string description;
if (fx == missingFramework)
- description = " - not installed";
+ return GettextCatalog.GetString ("PCL {0} - {1} - not installed", fx.Id.Version, fx.Id.Profile);
else
- description = string.Empty;
-
- return string.Format (
- "PCL {0} - {1}{2}", fx.Id.Version, fx.Id.Profile, description);
+ return GettextCatalog.GetString ("PCL {0} - {1}", fx.Id.Version, fx.Id.Profile);
}
IEnumerable<TargetFramework> GetPortableTargetFrameworks ()
@@ -249,11 +245,11 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
void CreateUI ()
{
- AddLabel ("Current Profile:", 0);
+ AddLabel (GettextCatalog.GetString ("Current Profile:"), 0);
AddTopSelectorCombo ();
- AddLabel ("Target Frameworks:", 18);
+ AddLabel (GettextCatalog.GetString ("Target Frameworks:"), 18);
// Add multi-option combo boxes first
foreach (var opt in options) {
@@ -410,7 +406,7 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
TopPadding = 8, LeftPadding = 18, RightPadding = 18
};
- warning = new Label ("Test Error");
+ warning = new Label (GettextCatalog.GetString ("Test Error"));
warning.SetAlignment (0.0f, 0.5f);
warning.Show ();
@@ -504,7 +500,7 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
var selectedOptions = options.Where (o => o.Check.Active).ToList ();
if (selectedOptions.Count < 2) {
- SetWarning ("Need to select at least two frameworks.");
+ SetWarning (GettextCatalog.GetString ("Need to select at least two frameworks."));
return;
}
@@ -520,7 +516,7 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
f => IsApplicable (f, true, selectedFrameworks)).ToList ();
if (applicable.Count == 0) {
- AddWarning ("No applicable frameworks for this selection!");
+ AddWarning (GettextCatalog.GetString ("No applicable frameworks for this selection!"));
return;
}
@@ -540,9 +536,9 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
return;
} else if (exactMatches.Count > 1) {
// This should never happen.
- AddWarning ("Multiple frameworks match the current selection:");
+ AddWarning (GettextCatalog.GetString ("Multiple frameworks match the current selection:"));
exactMatches.ForEach (e => AddWarning (" " + e.Id));
- AddWarning ("You must manually pick a profile in the drop-down selector.");
+ AddWarning (GettextCatalog.GetString ("You must manually pick a profile in the drop-down selector."));
// This is very bad UX, we should really disable "Ok" / add an "Apply"
// button, but it's better than nothing.
target = exactMatches [0];
@@ -563,14 +559,13 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
if (common.Count == 0) {
// Ok, the user must pick something.
- AddWarning ("Found multiple applicable frameworks, you need to " +
- "select additional check boxes.");
+ AddWarning (GettextCatalog.GetString ("Found multiple applicable frameworks, you need to select additional check boxes."));
// Same here: randomly pick a profile to make "Ok" happy.
target = applicable [0];
return;
}
- AddInfo ("The following frameworks have been implicitly selected:");
+ AddInfo (GettextCatalog.GetString ("The following frameworks have been implicitly selected:"));
AddInfo (" " + string.Join (", ", common.Select (c => GetDisplayName (c))));
// Implicitly select them.
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs
index d3c485f71b..b10e87b681 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs
@@ -127,7 +127,7 @@ namespace MonoDevelop.Ide.Projects
try {
pset.SaveToFile (file);
} catch (Exception ex) {
- MessageService.ShowError ("The policy file could not be saved", ex);
+ MessageService.ShowError (GettextCatalog.GetString ("The policy file could not be saved"), ex);
return;
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.UI.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.UI.cs
index 335e237d7d..0ccd83e6c3 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.UI.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.UI.cs
@@ -99,8 +99,8 @@ namespace MonoDevelop.Ide.Projects
void Build ()
{
BorderWidth = 0;
- WidthRequest = GtkWorkarounds.ConvertToPixelScale (901);
- HeightRequest = GtkWorkarounds.ConvertToPixelScale (632);
+ WidthRequest = 901;
+ HeightRequest = 632;
Name = "wizard_dialog";
Title = GettextCatalog.GetString ("New Project");
@@ -113,7 +113,7 @@ namespace MonoDevelop.Ide.Projects
// Top banner of dialog.
var topLabelEventBox = new EventBox ();
topLabelEventBox.Name = "topLabelEventBox";
- topLabelEventBox.HeightRequest = GtkWorkarounds.ConvertToPixelScale (52);
+ topLabelEventBox.HeightRequest = 52;
topLabelEventBox.ModifyBg (StateType.Normal, bannerBackgroundColor);
topLabelEventBox.ModifyFg (StateType.Normal, whiteColor);
topLabelEventBox.BorderWidth = 0;
@@ -158,7 +158,7 @@ namespace MonoDevelop.Ide.Projects
templateCategoriesBgBox.Name = "templateCategoriesVBox";
templateCategoriesBgBox.BorderWidth = 0;
templateCategoriesBgBox.ModifyBg (StateType.Normal, categoriesBackgroundColor);
- templateCategoriesBgBox.WidthRequest = GtkWorkarounds.ConvertToPixelScale (220);
+ templateCategoriesBgBox.WidthRequest = 220;
var templateCategoriesScrolledWindow = new ScrolledWindow ();
templateCategoriesScrolledWindow.Name = "templateCategoriesScrolledWindow";
templateCategoriesScrolledWindow.HscrollbarPolicy = PolicyType.Never;
@@ -178,7 +178,7 @@ namespace MonoDevelop.Ide.Projects
var templatesBgBox = new EventBox ();
templatesBgBox.ModifyBg (StateType.Normal, templateListBackgroundColor);
templatesBgBox.Name = "templatesVBox";
- templatesBgBox.WidthRequest = GtkWorkarounds.ConvertToPixelScale (400);
+ templatesBgBox.WidthRequest = 400;
templatesHBox.PackStart (templatesBgBox, false, false, 0);
var templatesScrolledWindow = new ScrolledWindow ();
templatesScrolledWindow.Name = "templatesScrolledWindow";
@@ -207,21 +207,21 @@ namespace MonoDevelop.Ide.Projects
// Template large image.
templateImage = new ImageView ();
templateImage.Name = "templateImage";
- templateImage.HeightRequest = GtkWorkarounds.ConvertToPixelScale (140);
- templateImage.WidthRequest = GtkWorkarounds.ConvertToPixelScale (240);
+ templateImage.HeightRequest = 140;
+ templateImage.WidthRequest = 240;
templateVBox.PackStart (templateImage, false, false, 10);
// Template description.
templateNameLabel = new Label ();
templateNameLabel.Name = "templateNameLabel";
- templateNameLabel.WidthRequest = GtkWorkarounds.ConvertToPixelScale (240);
+ templateNameLabel.WidthRequest = 240;
templateNameLabel.Wrap = true;
templateNameLabel.Xalign = 0;
templateNameLabel.Markup = MarkupTemplateName ("TemplateName");
templateVBox.PackStart (templateNameLabel, false, false, 0);
templateDescriptionLabel = new Label ();
templateDescriptionLabel.Name = "templateDescriptionLabel";
- templateDescriptionLabel.WidthRequest = GtkWorkarounds.ConvertToPixelScale (240);
+ templateDescriptionLabel.WidthRequest = 240;
templateDescriptionLabel.Wrap = true;
templateDescriptionLabel.Xalign = 0;
templateVBox.PackStart (templateDescriptionLabel, false, false, 0);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs
index e7c2b1b2bd..73897056b3 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs
@@ -90,16 +90,18 @@ namespace MonoDevelop.Ide.Projects
SelectTemplateDefinedbyController ();
}
- void SetTemplateCategoryCellData (TreeViewColumn col, CellRenderer renderer, TreeModel model, TreeIter it)
+ static void SetTemplateCategoryCellData (TreeViewColumn col, CellRenderer renderer, TreeModel model, TreeIter it)
{
+ var categoryTextRenderer = (GtkTemplateCategoryCellRenderer)renderer;
categoryTextRenderer.Category = (TemplateCategory)model.GetValue (it, TemplateCategoryColumn);
categoryTextRenderer.CategoryIcon = model.GetValue (it, TemplateCategoryIconColumn) as Xwt.Drawing.Image;
categoryTextRenderer.CategoryName = model.GetValue (it, TemplateCategoryNameColumn) as string;
}
- void SetTemplateTextCellData (TreeViewColumn col, CellRenderer renderer, TreeModel model, TreeIter it)
+ static void SetTemplateTextCellData (TreeViewColumn col, CellRenderer renderer, TreeModel model, TreeIter it)
{
var template = (SolutionTemplate)model.GetValue (it, TemplateColumn);
+ var templateTextRenderer = (GtkTemplateCellRenderer)renderer;
templateTextRenderer.Template = template;
templateTextRenderer.TemplateIcon = model.GetValue (it, TemplateIconColumn) as Xwt.Drawing.Image;
templateTextRenderer.TemplateCategory = model.GetValue (it, TemplateNameColumn) as string;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs
index 832aa2bcbc..79e5cc4887 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkTemplateCellRenderer.cs
@@ -116,8 +116,7 @@ namespace MonoDevelop.Ide.Projects
SetMarkup (layout, GetSelectedLanguage ());
layout.GetPixelSize (out textWidth, out textHeight);
- double scale = GtkWorkarounds.GetPixelScale ();
- languageRect = GetLanguageButtonRectangle (window, widget, cell_area, textHeight, textWidth, scale);
+ languageRect = GetLanguageButtonRectangle (window, widget, cell_area, textHeight, textWidth);
DrawTemplateNameText (window, widget, cell_area, iconRect, languageRect, flags);
@@ -125,7 +124,7 @@ namespace MonoDevelop.Ide.Projects
SetSourceColor (ctx, Styles.NewProjectDialog.TemplateLanguageButtonBackground.ToCairoColor ());
ctx.Fill ();
- int languageTextX = languageRect.X + GetLanguageLeftHandPadding (scale);
+ int languageTextX = languageRect.X + languageLeftHandPadding;
if (!TemplateHasMultipleLanguages ()) {
languageTextX = languageRect.X + (languageRect.Width - textWidth) / 2;
}
@@ -134,30 +133,14 @@ namespace MonoDevelop.Ide.Projects
window.DrawLayout (widget.Style.TextGC (StateType.Normal), languageTextX, languageTextY, layout);
if (TemplateHasMultipleLanguages ()) {
- int triangleX = languageTextX + textWidth + GetLanguageRightHandPadding (scale);
- int triangleY = languageRect.Y + (languageRect.Height - ((int)(scale * dropdownTriangleHeight))) / 2;
- DrawTriangle (ctx, triangleX, triangleY, scale);
+ int triangleX = languageTextX + textWidth + languageRightHandPadding;
+ int triangleY = languageRect.Y + (languageRect.Height - dropdownTriangleHeight) / 2;
+ DrawTriangle (ctx, triangleX, triangleY);
}
}
}
}
- int GetLanguageLeftHandPadding (double scale)
- {
- if (Platform.IsWindows && scale > 1.0) {
- return (int)(scale * (languageLeftHandPadding + 3));
- }
- return languageLeftHandPadding;
- }
-
- int GetLanguageRightHandPadding (double scale)
- {
- if (Platform.IsWindows && scale > 1.0) {
- return (int)(scale * languageRightHandPadding);
- }
- return languageRightHandPadding;
- }
-
void DrawTemplateCategoryText (Drawable window, Widget widget, Rectangle cell_area, CellRendererState flags)
{
StateType state = GetState (widget, flags);
@@ -250,7 +233,7 @@ namespace MonoDevelop.Ide.Projects
layout.SetMarkup (markup);
}
- Rectangle GetLanguageButtonRectangle (Drawable window, Widget widget, Rectangle cell_area, int textHeight, int textWidth, double scale)
+ Rectangle GetLanguageButtonRectangle (Drawable window, Widget widget, Rectangle cell_area, int textHeight, int textWidth)
{
int languageRectangleHeight = cell_area.Height - 8;
int languageRectangleWidth = textWidth + languageLeftHandPadding;
@@ -261,8 +244,6 @@ namespace MonoDevelop.Ide.Projects
languageRectangleWidth = Math.Max (languageRectangleWidth, minLanguageRectWidth);
}
- languageRectangleWidth = (int)(scale * languageRectangleWidth);
-
var dy = (cell_area.Height - languageRectangleHeight) / 2 - 1;
var y = cell_area.Y + dy;
var x = widget.Allocation.Width - languageRectangleWidth - (int)Xpad;
@@ -275,10 +256,10 @@ namespace MonoDevelop.Ide.Projects
return Template.AvailableLanguages.Count > 1;
}
- void DrawTriangle (Cairo.Context ctx, int x, int y, double scale)
+ void DrawTriangle (Cairo.Context ctx, int x, int y)
{
- int width = (int)(scale * dropdownTriangleWidth);
- int height = (int)(scale * dropdownTriangleHeight);
+ int width = dropdownTriangleWidth;
+ int height = dropdownTriangleHeight;
SetSourceColor (ctx, Styles.NewProjectDialog.TemplateLanguageButtonTriangle.ToCairoColor ());
ctx.MoveTo (x, y);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs
index dc254ada5b..578d8812f2 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewFileDialog.cs
@@ -493,7 +493,7 @@ namespace MonoDevelop.Ide.Projects
return;
} catch (Exception ex) {
LoggingService.LogError ("Error creating file", ex);
- MessageService.ShowException (ex);
+ MessageService.ShowError (GettextCatalog.GetString ("Error creating file"), ex);
return;
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
index 6c787743d5..ea7eb0d0a2 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs
@@ -427,7 +427,7 @@ namespace MonoDevelop.Ide.Projects
if (template != null) {
return template;
}
- throw new ApplicationException (String.Format ("No template found matching condition '{0}'.", SelectedTemplate.Condition));
+ throw new ApplicationException (GettextCatalog.GetString ("No template found matching condition '{0}'.", SelectedTemplate.Condition));
}
return GetSelectedTemplateForSelectedLanguage ();
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs
index a006d0b259..6f7aafa6eb 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/TemplatePickerWidget.cs
@@ -118,7 +118,7 @@ namespace MonoDevelop.Ide.Projects
};
searchEntry.WidthRequest = 150;
- searchEntry.EmptyMessage = GettextCatalog.GetString ("Search...");
+ searchEntry.EmptyMessage = GettextCatalog.GetString ("Search…");
searchEntry.Changed += delegate {
templateView.SetSearchFilter (searchEntry.Entry.Text);
};
@@ -536,7 +536,7 @@ namespace MonoDevelop.Ide.Projects
return filterFunc (item);
}
- void CellDataFuncText (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
+ static void CellDataFuncText (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
{
var item = (TemplateItem) model.GetValue (iter, 0);
string name = GLib.Markup.EscapeText (item.Name);
@@ -546,7 +546,7 @@ namespace MonoDevelop.Ide.Projects
((CellRendererText)cell).Markup = name;
}
- void CellDataFuncIcon (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
+ static void CellDataFuncIcon (TreeViewColumn col, CellRenderer cell, TreeModel model, TreeIter iter)
{
var item = (TemplateItem) model.GetValue (iter, 0);
var id = item.Template.Icon.IsNull ? "md-project" : item.Template.Icon.ToString ();
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskListEntry.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskListEntry.cs
index 769ba00227..e39ad85d3e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskListEntry.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskListEntry.cs
@@ -238,8 +238,13 @@ namespace MonoDevelop.Ide.Tasks
public virtual void JumpToPosition()
{
if (!file.IsNullOrEmpty) {
- var project = WorkspaceObject as Project;
- IdeApp.Workbench.OpenDocument (file, project, Math.Max (1, line), Math.Max (1, column));
+ if (System.IO.File.Exists (file)) {
+ var project = WorkspaceObject as Project;
+ IdeApp.Workbench.OpenDocument (file, project, Math.Max (1, line), Math.Max (1, column));
+ } else {
+ var pad = IdeApp.Workbench.GetPad<ErrorListPad> ()?.Content as ErrorListPad;
+ pad?.FocusOutputView ();
+ }
} else if (parentObject != null) {
Pad pad = IdeApp.Workbench.GetPad<ProjectSolutionPad> ();
ProjectSolutionPad spad = pad.Content as ProjectSolutionPad;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs
index cc801626f4..440d066a52 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/UserTasksView.cs
@@ -210,10 +210,10 @@ namespace MonoDevelop.Ide.Tasks
TaskService.UserTasks.Add (task);
updating = false;
TreeIter iter = store.AppendValues (GettextCatalog.GetString (Enum.GetName (typeof (TaskPriority), task.Priority)), task.Completed, task.Description, task, GetColorByPriority (task.Priority), task.Completed ? (int)Pango.Weight.Light : (int)Pango.Weight.Bold);
- view.Selection.SelectIter (iter);
- TreePath path = store.GetPath (iter);
- view.ScrollToCell (path, view.Columns[(int)Columns.Description], true, 0, 0);
- view.SetCursorOnCell (path, view.Columns[(int)Columns.Description], cellRendDesc, true);
+ view.Selection.SelectIter (sortModel.ConvertChildIterToIter (iter));
+ TreePath sortedPath = sortModel.ConvertChildPathToPath (store.GetPath (iter));
+ view.ScrollToCell (sortedPath, view.Columns[(int)Columns.Description], true, 0, 0);
+ view.SetCursorOnCell (sortedPath, view.Columns[(int)Columns.Description], cellRendDesc, true);
TaskService.SaveUserTasks (task.WorkspaceObject);
}
@@ -241,7 +241,8 @@ namespace MonoDevelop.Ide.Tasks
if (view.Selection.CountSelectedRows () > 0)
{
TreeIter iter;
- if (store.GetIter (out iter, view.Selection.GetSelectedRows ()[0]))
+ Gtk.TreePath path = sortModel.ConvertPathToChildPath (view.Selection.GetSelectedRows () [0]);
+ if (store.GetIter (out iter, path))
{
TaskListEntry task = (TaskListEntry) store.GetValue (iter, (int)Columns.UserTask);
updating = true;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeDomFileDescriptionTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeDomFileDescriptionTemplate.cs
index 90fb04d2fc..24caf85ee0 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeDomFileDescriptionTemplate.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeDomFileDescriptionTemplate.cs
@@ -59,7 +59,7 @@ namespace MonoDevelop.Ide.Templates
public override string CreateContent (Project project, Dictionary<string, string> tags, string language)
{
if (language == null || language == "")
- throw new InvalidOperationException ("Language not defined in CodeDom based template.");
+ throw new InvalidOperationException (GettextCatalog.GetString ("Language not defined in CodeDom based template."));
var binding = GetLanguageBinding (language);
@@ -68,7 +68,7 @@ namespace MonoDevelop.Ide.Templates
provider = binding.GetCodeDomProvider ();
if (provider == null)
- throw new InvalidOperationException ("The language '" + language + "' does not have support for CodeDom.");
+ throw new InvalidOperationException (GettextCatalog.GetString ("The language '{0}' does not have support for CodeDom.", language));
var xcd = new XmlCodeDomReader ();
var cu = xcd.ReadCompileUnit (domContent);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeTranslationFileDescriptionTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeTranslationFileDescriptionTemplate.cs
index c410fe43c8..396ff970fb 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeTranslationFileDescriptionTemplate.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/CodeTranslationFileDescriptionTemplate.cs
@@ -84,21 +84,20 @@ namespace MonoDevelop.Ide.Templates
{
//get target language's ICodeGenerator
if (language == null || language == "")
- throw new InvalidOperationException ("Language not defined in CodeDom based template.");
+ throw new InvalidOperationException (GettextCatalog.GetString ("Language not defined in CodeDom based template."));
CodeDomProvider provider = GetCodeDomProvider (language);
//parse the source code
if (tempSubstitutedContent == null)
- throw new Exception ("Expected ModifyTags to be called before CreateContent");
+ throw new Exception (GettextCatalog.GetString ("Expected ModifyTags to be called before CreateContent"));
CodeCompileUnit ccu;
using (StringReader sr = new StringReader (tempSubstitutedContent)) {
try {
ccu = parserProvider.Parse (sr);
} catch (NotImplementedException) {
- throw new InvalidOperationException ("Invalid Code Translation template: the CodeDomProvider of the source language '"
- + language + "' has not implemented the Parse method.");
+ throw new InvalidOperationException (GettextCatalog.GetString ("Invalid Code Translation template: the CodeDomProvider of the source language '{0}' has not implemented the Parse method.", language));
} catch (Exception ex) {
LoggingService.LogError ("Unparseable template: '" + tempSubstitutedContent + "'.", ex);
throw;
@@ -158,11 +157,11 @@ namespace MonoDevelop.Ide.Templates
System.CodeDom.Compiler.CodeDomProvider provider = null;
var binding = GetLanguageBinding (language);
if (binding == null)
- throw new InvalidOperationException ("No LanguageBinding was found for the language '" + language + "'.");
+ throw new InvalidOperationException (GettextCatalog.GetString ("No LanguageBinding was found for the language '{0}'.", language));
provider = binding.GetCodeDomProvider ();
if (provider == null)
- throw new InvalidOperationException ("No CodeDomProvider was found for the language '" + language + "'.");
+ throw new InvalidOperationException (GettextCatalog.GetString ("No CodeDomProvider was found for the language '{0}'.", language));
return provider;
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs
index 1c687a65a9..623728dfee 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs
@@ -328,7 +328,7 @@ namespace MonoDevelop.Ide.Templates
public IEnumerable<SolutionItem> CreateProjects (SolutionFolderItem policyParent, ProjectCreateInformation cInfo)
{
if (solutionDescriptor.EntryDescriptors.Length == 0)
- throw new InvalidOperationException ("Solution template doesn't have any project templates");
+ throw new InvalidOperationException (GettextCatalog.GetString ("Solution template doesn't have any project templates"));
var solutionEntryItems = new List<SolutionItem> ();
packageReferencesForCreatedProjects = new List<PackageReferencesForCreatedProject> ();
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SingleFileDescriptionTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SingleFileDescriptionTemplate.cs
index 6be284a7d4..4582d57c89 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SingleFileDescriptionTemplate.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/SingleFileDescriptionTemplate.cs
@@ -243,7 +243,7 @@ namespace MonoDevelop.Ide.Templates
}
if (fileName == null)
- throw new InvalidOperationException ("File name not provided in template");
+ throw new InvalidOperationException (GettextCatalog.GetString ("File name not provided in template"));
//give it an extension if it didn't get one (compatibility with pre-substition behaviour)
if (Path.GetExtension (fileName).Length == 0) {
@@ -366,7 +366,7 @@ namespace MonoDevelop.Ide.Templates
{
var binding = LanguageBindingService.GetBindingPerLanguageName (language);
if (binding == null)
- throw new InvalidOperationException ("Language '" + language + "' not found");
+ throw new InvalidOperationException (GettextCatalog.GetString ("Language '{0}' not found", language));
return binding;
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/XmlCodeDomReader.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/XmlCodeDomReader.cs
index c79de6cd36..848f782044 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/XmlCodeDomReader.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/XmlCodeDomReader.cs
@@ -32,6 +32,7 @@ using System.Reflection;
using System.CodeDom;
using System.Collections;
using System.CodeDom.Compiler;
+using MonoDevelop.Core;
namespace MonoDevelop.Ide.Templates
{
@@ -57,7 +58,7 @@ namespace MonoDevelop.Ide.Templates
if (prop == null) {
if (att.Name.EndsWith ("Type") && type.GetProperty (att.Name.Substring (0, att.Name.Length - 4)) != null)
continue;
- throw new InvalidOperationException ("Property '" + att.Name + "' not found in type '" + type + "'.");
+ throw new InvalidOperationException (GettextCatalog.GetString ("Property '{0}' not found in type '{1}'.", att.Name, type));
}
Type ptype = null;
@@ -78,7 +79,7 @@ namespace MonoDevelop.Ide.Templates
PropertyInfo prop = type.GetProperty (celem.Name);
if (prop == null)
- throw new InvalidOperationException ("Property '" + celem.Name + "' not found in type '" + type + "'.");
+ throw new InvalidOperationException (GettextCatalog.GetString ("Property '{0}' not found in type '{1}'.", celem.Name, type));
if (typeof(IEnumerable).IsAssignableFrom (prop.PropertyType)) {
object col = prop.GetValue (ob, null);
@@ -117,7 +118,7 @@ namespace MonoDevelop.Ide.Templates
}
if (methods.Count == 0)
- throw new InvalidOperationException ("Add method not found in " + type);
+ throw new InvalidOperationException (GettextCatalog.GetString ("Add method not found in {0}", type));
foreach (XmlNode node in elem.ChildNodes) {
XmlElement celem = node as XmlElement;
@@ -150,7 +151,7 @@ namespace MonoDevelop.Ide.Templates
{
Type type = typeof(CodeObject).Assembly.GetType ("System.CodeDom.Code" + elemName);
if (type == null)
- throw new InvalidOperationException ("Type not found for element: " + elemName);
+ throw new InvalidOperationException (GettextCatalog.GetString ("Type not found for element: {0}", elemName));
return type;
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopSourceTextContainer.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopSourceTextContainer.cs
index 0c282f163c..f2e76105d0 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopSourceTextContainer.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopSourceTextContainer.cs
@@ -66,7 +66,11 @@ namespace MonoDevelop.Ide.TypeSystem
var oldText = CurrentText;
var newText = oldText.Replace (e.Offset, e.RemovalLength, e.InsertedText.Text);
currentText = newText;
- handler (this, new Microsoft.CodeAnalysis.Text.TextChangeEventArgs (oldText, newText, new TextChangeRange(TextSpan.FromBounds (e.Offset, e.Offset + e.RemovalLength), e.InsertionLength)));
+ try {
+ handler (this, new Microsoft.CodeAnalysis.Text.TextChangeEventArgs (oldText, newText, new TextChangeRange (TextSpan.FromBounds (e.Offset, e.Offset + e.RemovalLength), e.InsertionLength)));
+ } catch (Exception ex) {
+ LoggingService.LogError ("Error while text replacing", ex);
+ }
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs
index bfa4238645..ff10c6572e 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs
@@ -155,7 +155,7 @@ namespace MonoDevelop.Ide.TypeSystem
});
}
- void HandleActiveConfigurationChanged (object sender, EventArgs e)
+ async void HandleActiveConfigurationChanged (object sender, EventArgs e)
{
if (currentMonoDevelopSolution == null)
return;
@@ -163,61 +163,60 @@ namespace MonoDevelop.Ide.TypeSystem
CancelLoad ();
var token = src.Token;
- Task.Run (async delegate {
- try {
- var si = await CreateSolutionInfo (currentMonoDevelopSolution, token).ConfigureAwait (false);
- if (si != null)
- OnSolutionReloaded (si);
- } catch (OperationCanceledException) {
- } catch (AggregateException ae) {
- ae.Flatten ().Handle (x => x is OperationCanceledException);
- } catch (Exception ex) {
- LoggingService.LogError ("Error while reloading solution.", ex);
- } finally {
- HideStatusIcon ();
- }
- });
-
+ try {
+ var si = await CreateSolutionInfo (currentMonoDevelopSolution, token).ConfigureAwait (false);
+ if (si != null)
+ OnSolutionReloaded (si);
+ } catch (OperationCanceledException) {
+ } catch (AggregateException ae) {
+ ae.Flatten ().Handle (x => x is OperationCanceledException);
+ } catch (Exception ex) {
+ LoggingService.LogError ("Error while reloading solution.", ex);
+ } finally {
+ HideStatusIcon ();
+ }
}
SolutionData solutionData;
- async Task<SolutionInfo> CreateSolutionInfo (MonoDevelop.Projects.Solution solution, CancellationToken token)
+ Task<SolutionInfo> CreateSolutionInfo (MonoDevelop.Projects.Solution solution, CancellationToken token)
{
- var projects = new ConcurrentBag<ProjectInfo> ();
- var mdProjects = solution.GetAllProjects ().OfType<MonoDevelop.Projects.DotNetProject> ();
- projectionList.Clear ();
- solutionData = new SolutionData ();
-
- List<Task> allTasks = new List<Task> ();
- foreach (var proj in mdProjects) {
+ return Task.Run (async delegate {
+ var projects = new ConcurrentBag<ProjectInfo> ();
+ var mdProjects = solution.GetAllProjects ().OfType<MonoDevelop.Projects.DotNetProject> ();
+ projectionList.Clear ();
+ solutionData = new SolutionData ();
+
+ List<Task> allTasks = new List<Task> ();
+ foreach (var proj in mdProjects) {
+ if (token.IsCancellationRequested)
+ return null;
+ if (!proj.SupportsRoslyn)
+ continue;
+ var tp = LoadProject (proj, token).ContinueWith (t => {
+ if (!t.IsCanceled)
+ projects.Add (t.Result);
+ });
+ allTasks.Add (tp);
+ }
+ await Task.WhenAll (allTasks.ToArray ());
if (token.IsCancellationRequested)
return null;
- if (!proj.SupportsRoslyn)
- continue;
- var tp = LoadProject (proj, token).ContinueWith (t => {
- if (!t.IsCanceled)
- projects.Add (t.Result);
- });
- allTasks.Add (tp);
- }
- await Task.WhenAll (allTasks.ToArray ());
- if (token.IsCancellationRequested)
- return null;
- var modifiedWhileLoading = modifiedProjects = new List<MonoDevelop.Projects.DotNetProject> ();
- var solutionInfo = SolutionInfo.Create (GetSolutionId (solution), VersionStamp.Create (), solution.FileName, projects);
- foreach (var project in modifiedWhileLoading) {
- if (solution.ContainsItem (project)) {
- return await CreateSolutionInfo (solution, token).ConfigureAwait (false);
+ var modifiedWhileLoading = modifiedProjects = new List<MonoDevelop.Projects.DotNetProject> ();
+ var solutionInfo = SolutionInfo.Create (GetSolutionId (solution), VersionStamp.Create (), solution.FileName, projects);
+ foreach (var project in modifiedWhileLoading) {
+ if (solution.ContainsItem (project)) {
+ return await CreateSolutionInfo (solution, token).ConfigureAwait (false);
+ }
}
- }
- lock (addLock) {
- if (!added) {
- added = true;
- OnSolutionAdded (solutionInfo);
+ lock (addLock) {
+ if (!added) {
+ added = true;
+ OnSolutionAdded (solutionInfo);
+ }
}
- }
- return solutionInfo;
+ return solutionInfo;
+ });
}
public Task<SolutionInfo> TryLoadSolution (MonoDevelop.Projects.Solution solution, CancellationToken cancellationToken = default(CancellationToken))
@@ -381,7 +380,7 @@ namespace MonoDevelop.Ide.TypeSystem
project.Modified -= OnProjectModified;
}
- Task<ProjectInfo> LoadProject (MonoDevelop.Projects.DotNetProject p, CancellationToken token)
+ async Task<ProjectInfo> LoadProject (MonoDevelop.Projects.DotNetProject p, CancellationToken token)
{
if (!projectIdMap.ContainsKey (p)) {
p.FileAddedToProject += OnFileAdded;
@@ -392,41 +391,43 @@ namespace MonoDevelop.Ide.TypeSystem
var projectId = GetOrCreateProjectId (p);
var projectData = GetOrCreateProjectData (projectId);
- return Task.Run (async () => {
- var references = await CreateMetadataReferences (p, projectId, token).ConfigureAwait (false);
- if (token.IsCancellationRequested)
- return null;
- var config = IdeApp.Workspace != null ? p.GetConfiguration (IdeApp.Workspace.ActiveConfiguration) as MonoDevelop.Projects.DotNetProjectConfiguration : null;
- MonoDevelop.Projects.DotNetCompilerParameters cp = null;
- if (config != null)
- cp = config.CompilationParameters;
- FilePath fileName = IdeApp.Workspace != null ? p.GetOutputFileName (IdeApp.Workspace.ActiveConfiguration) : (FilePath)"";
- if (fileName.IsNullOrEmpty)
- fileName = new FilePath (p.Name + ".dll");
-
- var sourceFiles = await p.GetSourceFilesAsync (config != null ? config.Selector : null).ConfigureAwait (false);
-
- var info = ProjectInfo.Create (
- projectId,
- VersionStamp.Create (),
- p.Name,
- fileName.FileNameWithoutExtension,
- LanguageNames.CSharp,
- p.FileName,
- fileName,
- cp != null ? cp.CreateCompilationOptions () : null,
- cp != null ? cp.CreateParseOptions (config) : null,
- CreateDocuments (projectData, p, token, sourceFiles),
- CreateProjectReferences (p, token),
- references
- );
- projectData.Info = info;
- return info;
- }, token);
+ var references = await CreateMetadataReferences (p, projectId, token).ConfigureAwait (false);
+ if (token.IsCancellationRequested)
+ return null;
+ var config = IdeApp.Workspace != null ? p.GetConfiguration (IdeApp.Workspace.ActiveConfiguration) as MonoDevelop.Projects.DotNetProjectConfiguration : null;
+ MonoDevelop.Projects.DotNetCompilerParameters cp = null;
+ if (config != null)
+ cp = config.CompilationParameters;
+ FilePath fileName = IdeApp.Workspace != null ? p.GetOutputFileName (IdeApp.Workspace.ActiveConfiguration) : (FilePath)"";
+ if (fileName.IsNullOrEmpty)
+ fileName = new FilePath (p.Name + ".dll");
+
+ var sourceFiles = await p.GetSourceFilesAsync (config != null ? config.Selector : null).ConfigureAwait (false);
+
+ var info = ProjectInfo.Create (
+ projectId,
+ VersionStamp.Create (),
+ p.Name,
+ fileName.FileNameWithoutExtension,
+ LanguageNames.CSharp,
+ p.FileName,
+ fileName,
+ cp != null ? cp.CreateCompilationOptions () : null,
+ cp != null ? cp.CreateParseOptions (config) : null,
+ CreateDocuments (projectData, p, token, sourceFiles),
+ CreateProjectReferences (p, token),
+ references
+ );
+ projectData.Info = info;
+ return info;
}
internal void UpdateProjectionEntry (MonoDevelop.Projects.ProjectFile projectFile, IReadOnlyList<Projection> projections)
{
+ if (projectFile == null)
+ throw new ArgumentNullException (nameof (projectFile));
+ if (projections == null)
+ throw new ArgumentNullException (nameof (projections));
foreach (var entry in projectionList) {
if (entry.File.FilePath == projectFile.FilePath) {
projectionList.Remove (entry);
@@ -536,14 +537,14 @@ namespace MonoDevelop.Ide.TypeSystem
var hashSet = new HashSet<string> (FilePath.PathComparer);
try {
- foreach (string file in await netProject.GetReferencedAssemblies (configurationSelector, false).ConfigureAwait (false)) {
+ foreach (var file in await netProject.GetReferencedAssemblies (configurationSelector, false).ConfigureAwait (false)) {
if (token.IsCancellationRequested)
return result;
string fileName;
- if (!Path.IsPathRooted (file)) {
- fileName = Path.Combine (Path.GetDirectoryName (netProject.FileName), file);
+ if (!Path.IsPathRooted (file.FilePath)) {
+ fileName = Path.Combine (Path.GetDirectoryName (netProject.FileName), file.FilePath);
} else {
- fileName = Path.GetFullPath (file);
+ fileName = file.FilePath.FullPath;
}
if (hashSet.Contains (fileName))
continue;
@@ -555,6 +556,8 @@ namespace MonoDevelop.Ide.TypeSystem
var metadataReference = MetadataReferenceCache.LoadReference (projectId, fileName);
if (metadataReference == null)
continue;
+ if (file.Aliases != null)
+ metadataReference = metadataReference.WithAliases (file.EnumerateAliases ());
result.Add (metadataReference);
}
} catch (Exception e) {
@@ -701,7 +704,7 @@ namespace MonoDevelop.Ide.TypeSystem
Projection projection = null;
foreach (var entry in ProjectionList) {
- var p = entry.Projections.FirstOrDefault (proj => FilePath.PathComparer.Equals (proj.Document.FileName, filePath));
+ var p = entry.Projections.FirstOrDefault (proj => proj?.Document?.FileName != null && FilePath.PathComparer.Equals (proj.Document.FileName, filePath));
if (p != null) {
filePath = entry.File.FilePath;
projection = p;
@@ -1080,6 +1083,8 @@ namespace MonoDevelop.Ide.TypeSystem
continue;
var projectData = GetProjectData (GetProjectId (project));
if (TypeSystemParserNode.IsCompileBuildAction (projectFile.BuildAction)) {
+ if (projectData.GetDocumentId (projectFile.FilePath) != null) // may already been added by a rename event.
+ return;
var newDocument = CreateDocumentInfo (solutionData, project.Name, projectData, projectFile);
OnDocumentAdded (newDocument);
} else {
@@ -1182,6 +1187,7 @@ namespace MonoDevelop.Ide.TypeSystem
var projectId = GetProjectId (project);
if (CurrentSolution.ContainsProject (projectId)) {
OnProjectReloaded (await LoadProject (project, default(CancellationToken)).ConfigureAwait (false));
+ ProjectReloaded?.Invoke (this, new RoslynProjectEventArgs (projectId));
} else {
modifiedProjects.Add (project);
}
@@ -1190,6 +1196,8 @@ namespace MonoDevelop.Ide.TypeSystem
#endregion
+ public event EventHandler<RoslynProjectEventArgs> ProjectReloaded;
+
/// <summary>
/// Tries the get original file from projection. If the fileName / offset is inside a projection this method tries to convert it
@@ -1211,43 +1219,54 @@ namespace MonoDevelop.Ide.TypeSystem
originalOffset = offset;
return false;
}
+
}
-// static class MonoDevelopWorkspaceFeatures
-// {
-// static FeaturePack pack;
-//
-// public static FeaturePack Features {
-// get {
-// if (pack == null)
-// Interlocked.CompareExchange (ref pack, ComputePack (), null);
-// return pack;
-// }
-// }
-//
-// static FeaturePack ComputePack ()
-// {
-// var assemblies = new List<Assembly> ();
-// var workspaceCoreAssembly = typeof(Workspace).Assembly;
-// assemblies.Add (workspaceCoreAssembly);
-//
-// LoadAssembly (assemblies, "Microsoft.CodeAnalysis.CSharp.Workspaces");
-// //LoadAssembly (assemblies, "Microsoft.CodeAnalysis.VisualBasic.Workspaces");
-//
-// var catalogs = assemblies.Select (a => new System.ComponentModel.Composition.Hosting.AssemblyCatalog (a));
-//
-// return new MefExportPack (catalogs);
-// }
-//
-// static void LoadAssembly (List<Assembly> assemblies, string assemblyName)
-// {
-// try {
-// var loadedAssembly = Assembly.Load (assemblyName);
-// assemblies.Add (loadedAssembly);
-// } catch (Exception e) {
-// LoggingService.LogWarning ("Couldn't load assembly:" + assemblyName, e);
-// }
-// }
-// }
+ // static class MonoDevelopWorkspaceFeatures
+ // {
+ // static FeaturePack pack;
+ //
+ // public static FeaturePack Features {
+ // get {
+ // if (pack == null)
+ // Interlocked.CompareExchange (ref pack, ComputePack (), null);
+ // return pack;
+ // }
+ // }
+ //
+ // static FeaturePack ComputePack ()
+ // {
+ // var assemblies = new List<Assembly> ();
+ // var workspaceCoreAssembly = typeof(Workspace).Assembly;
+ // assemblies.Add (workspaceCoreAssembly);
+ //
+ // LoadAssembly (assemblies, "Microsoft.CodeAnalysis.CSharp.Workspaces");
+ // //LoadAssembly (assemblies, "Microsoft.CodeAnalysis.VisualBasic.Workspaces");
+ //
+ // var catalogs = assemblies.Select (a => new System.ComponentModel.Composition.Hosting.AssemblyCatalog (a));
+ //
+ // return new MefExportPack (catalogs);
+ // }
+ //
+ // static void LoadAssembly (List<Assembly> assemblies, string assemblyName)
+ // {
+ // try {
+ // var loadedAssembly = Assembly.Load (assemblyName);
+ // assemblies.Add (loadedAssembly);
+ // } catch (Exception e) {
+ // LoggingService.LogWarning ("Couldn't load assembly:" + assemblyName, e);
+ // }
+ // }
+ // }
+
+ public class RoslynProjectEventArgs : EventArgs
+ {
+ public ProjectId ProjectId { get; private set; }
+
+ public RoslynProjectEventArgs (ProjectId projectId)
+ {
+ ProjectId = projectId;
+ }
+ }
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
index 0731b4889a..323b4c8520 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs
@@ -258,11 +258,14 @@ namespace MonoDevelop.Ide.TypeSystem
var projectId = ws.GetProjectId (options.Project);
if (projectId != null) {
- ws.UpdateProjectionEntry (options.Project.GetProjectFile (options.FileName), result.Projections);
- foreach (var projection in result.Projections) {
- var docId = ws.GetDocumentId (projectId, projection.Document.FileName);
- if (docId != null) {
- ws.InformDocumentTextChange (docId, new MonoDevelopSourceText (projection.Document));
+ var projectFile = options.Project.GetProjectFile (options.FileName);
+ if (projectFile != null) {
+ ws.UpdateProjectionEntry (projectFile, result.Projections);
+ foreach (var projection in result.Projections) {
+ var docId = ws.GetDocumentId (projectId, projection.Document.FileName);
+ if (docId != null) {
+ ws.InformDocumentTextChange (docId, new MonoDevelopSourceText (projection.Document));
+ }
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs
index 2546316bab..6e7c337024 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs
@@ -78,8 +78,8 @@ namespace MonoDevelop.Ide.Updater
{
if (!UpdateService.NotifyAddinUpdates)
return;
-
- updateIcon = IdeApp.Workbench.StatusBar.ShowStatusIcon (ImageService.GetIcon ("md-updates", IconSize.Menu));
+
+ updateIcon = IdeApp.Workbench.StatusBar.ShowStatusIcon (ImageService.GetIcon (Gui.Stock.Updates, IconSize.Menu));
string s = GettextCatalog.GetString ("New add-in updates are available:");
for (int n=0; n<updates.Length && n < 10; n++)
s += "\n" + updates [n].Addin.Name;
@@ -106,7 +106,7 @@ namespace MonoDevelop.Ide.Updater
if (t != null && t.IsCompleted) {
AggregatedProgressMonitor monitor = new AggregatedProgressMonitor (Instance.updateMonitor);
- monitor.AddSlaveMonitor (new MessageDialogProgressMonitor (true, true, false));
+ monitor.AddFollowerMonitor (new MessageDialogProgressMonitor (true, true, false));
await t;
}
HideAlert ();
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/Style.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/Style.cs
index d2cbd3b799..bf991549ac 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/Style.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/Style.cs
@@ -119,7 +119,7 @@ namespace MonoDevelop.Ide.WelcomePage
var padColor = Gui.Styles.PadBackground.ToHexString (false);
var hoverColor = Gui.Styles.DockBarPrelightColor.ToHexString (false);
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light) {
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light) {
BackgroundColor = bgColor;
InnerShadowColor = bgColor;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
index bf80f8ed30..b8d4233ac3 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj
@@ -7814,8 +7814,6 @@
<Compile Include="MonoDevelop.Components.Extensions\AlertDialog.cs" />
<Compile Include="MonoDevelop.Ide.Gui.Dialogs\GtkAlertDialog.cs" />
<Compile Include="MonoDevelop.Components.Extensions\TextQuestionDialog.cs" />
- <Compile Include="MonoDevelop.Components.Extensions\ErrorDialog.cs" />
- <Compile Include="MonoDevelop.Ide.Gui.Dialogs\GtkErrorDialog.cs" />
<Compile Include="MonoDevelop.Ide.CodeFormatting\DefaultCodeFormatter.cs" />
<Compile Include="MonoDevelop.Ide.CodeFormatting\CodeFormatterExtensionNode.cs" />
<Compile Include="MonoDevelop.Ide.Projects\NewPolicySetDialog.cs" />
@@ -8207,7 +8205,6 @@
<Compile Include="MonoDevelop.Ide\TaskUtil.cs" />
<Compile Include="MonoDevelop.Ide.Projects.OptionPanels\CodeAnalysisPanel.cs" />
<Compile Include="MonoDevelop.Ide.CodeCompletion\ICompletionKeyHandler.cs" />
- <Compile Include="MonoDevelop.Components.MainToolbar\FirstCategory.cs" />
<Compile Include="MonoDevelop.Ide.TypeSystem\NR5CompatibiltyExtensions.cs" />
<Compile Include="MonoDevelop.Ide.Projects\ProjectConfigurationControl.cs" />
<Compile Include="MonoDevelop.Ide.TypeSystem\MonoDevelopProjectCacheHostServiceFactory.cs" />
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs
index b7138efba9..d7af2aa4d1 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs
@@ -72,11 +72,15 @@ namespace MonoDevelop.Ide
static EventHandler initializedEvent;
public static event EventHandler Initialized {
add {
- if (isInitialized) value (null, EventArgs.Empty);
- else initializedEvent += value;
+ Runtime.RunInMainThread (() => {
+ if (isInitialized) value (null, EventArgs.Empty);
+ else initializedEvent += value;
+ });
}
- remove {
- initializedEvent -= value;
+ remove {
+ Runtime.RunInMainThread (() => {
+ initializedEvent -= value;
+ });
}
}
@@ -194,12 +198,17 @@ namespace MonoDevelop.Ide
FileService.ErrorHandler = FileServiceErrorHandler;
- monitor.BeginTask (GettextCatalog.GetString("Loading Workbench"), 5);
+ monitor.BeginTask (GettextCatalog.GetString("Loading Workbench"), 6);
Counters.Initialization.Trace ("Loading Commands");
commandService.LoadCommands ("/MonoDevelop/Ide/Commands");
monitor.Step (1);
+ // Before startup commands.
+ Counters.Initialization.Trace ("Running Pre-Startup Commands");
+ AddinManager.AddExtensionNodeHandler ("/MonoDevelop/Ide/PreStartupHandlers", OnExtensionChanged);
+ monitor.Step (1);
+
Counters.Initialization.Trace ("Initializing Workbench");
workbench.Initialize (monitor);
monitor.Step (1);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdePreferences.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdePreferences.cs
index eabc788711..ea3a74caac 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdePreferences.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdePreferences.cs
@@ -113,7 +113,7 @@ namespace MonoDevelop.Ide
}
public readonly ConfigurationProperty<string> UserInterfaceLanguage = Runtime.Preferences.UserInterfaceLanguage;
- public readonly ConfigurationProperty<string> UserInterfaceTheme = ConfigurationProperty.Create ("MonoDevelop.Ide.UserInterfaceTheme", Platform.IsLinux ? "" : "Light");
+ public readonly ConfigurationProperty<string> UserInterfaceThemeName = ConfigurationProperty.Create ("MonoDevelop.Ide.UserInterfaceTheme", Platform.IsLinux ? "" : "Light");
public readonly ConfigurationProperty<WorkbenchCompactness> WorkbenchCompactness = ConfigurationProperty.Create ("MonoDevelop.Ide.WorkbenchCompactness", MonoDevelop.Ide.WorkbenchCompactness.Normal);
public readonly ConfigurationProperty<bool> LoadPrevSolutionOnStartup = ConfigurationProperty.Create ("SharpDevelop.LoadPrevProjectOnStartup", false);
public readonly ConfigurationProperty<bool> CreateFileBackupCopies = ConfigurationProperty.Create ("SharpDevelop.CreateBackupCopy", false);
@@ -144,8 +144,8 @@ namespace MonoDevelop.Ide
public readonly ConfigurationProperty<bool> FilterCompletionListByEditorBrowsable = ConfigurationProperty.Create ("FilterCompletionListByEditorBrowsable", true);
public readonly ConfigurationProperty<bool> IncludeEditorBrowsableAdvancedMembers = ConfigurationProperty.Create ("IncludeEditorBrowsableAdvancedMembers", true);
- public Skin UserInterfaceSkin {
- get { return MonoDevelop.Components.IdeTheme.UserInterfaceSkin; }
+ public Theme UserInterfaceTheme {
+ get { return MonoDevelop.Components.IdeTheme.UserInterfaceTheme; }
}
internal static readonly string DefaultLightColorScheme = "Light";
@@ -156,16 +156,16 @@ namespace MonoDevelop.Ide
public readonly SchemeConfigurationProperty ColorScheme = new SchemeConfigurationProperty ("ColorScheme", DefaultLightColorScheme, DefaultDarkColorScheme);
- public readonly SkinConfigurationProperty<string> UserTasksHighPrioColor = new SkinConfigurationProperty<string> ("Monodevelop.UserTasksHighPrioColor", "", "rgb:ffff/ffff/ffff");
- public readonly SkinConfigurationProperty<string> UserTasksNormalPrioColor = new SkinConfigurationProperty<string> ("Monodevelop.UserTasksNormalPrioColor", "", "rgb:ffff/ffff/ffff");
- public readonly SkinConfigurationProperty<string> UserTasksLowPrioColor = new SkinConfigurationProperty<string> ("Monodevelop.UserTasksLowPrioColor", "", "rgb:ffff/ffff/ffff");
+ public readonly ThemeConfigurationProperty<string> UserTasksHighPrioColor = new ThemeConfigurationProperty<string> ("Monodevelop.UserTasksHighPrioColor", "", "rgb:ffff/ffff/ffff");
+ public readonly ThemeConfigurationProperty<string> UserTasksNormalPrioColor = new ThemeConfigurationProperty<string> ("Monodevelop.UserTasksNormalPrioColor", "", "rgb:ffff/ffff/ffff");
+ public readonly ThemeConfigurationProperty<string> UserTasksLowPrioColor = new ThemeConfigurationProperty<string> ("Monodevelop.UserTasksLowPrioColor", "", "rgb:ffff/ffff/ffff");
- public class SkinConfigurationProperty<T>: ConfigurationProperty<T>
+ public class ThemeConfigurationProperty<T>: ConfigurationProperty<T>
{
readonly ConfigurationProperty<T> lightConfiguration;
readonly ConfigurationProperty<T> darkConfiguration;
- public SkinConfigurationProperty (string propertyName, T defaultLightValue, T defaultDarkValue, string oldName = null)
+ public ThemeConfigurationProperty (string propertyName, T defaultLightValue, T defaultDarkValue, string oldName = null)
{
lightConfiguration = ConfigurationProperty.Create<T> (propertyName, defaultLightValue, oldName);
darkConfiguration = ConfigurationProperty.Create<T> (propertyName + "-Dark", defaultDarkValue, oldName + "-Dark");
@@ -175,12 +175,12 @@ namespace MonoDevelop.Ide
MonoDevelop.Ide.Gui.Styles.Changed += (sender, e) => OnChanged ();
}
- public T ValueForSkin (Skin skin)
+ public T ValueForTheme (Theme theme)
{
- switch (skin) {
- case Skin.Light:
+ switch (theme) {
+ case Theme.Light:
return lightConfiguration.Value;
- case Skin.Dark:
+ case Theme.Dark:
return darkConfiguration.Value;
default:
throw new InvalidOperationException ();
@@ -189,7 +189,7 @@ namespace MonoDevelop.Ide
protected override T OnGetValue ()
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light)
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light)
return lightConfiguration;
else
return darkConfiguration;
@@ -197,14 +197,14 @@ namespace MonoDevelop.Ide
protected override bool OnSetValue (T value)
{
- if (IdeApp.Preferences.UserInterfaceSkin == Skin.Light)
+ if (IdeApp.Preferences.UserInterfaceTheme == Theme.Light)
return lightConfiguration.Set (value);
else
return darkConfiguration.Set (value);
}
}
- public class SchemeConfigurationProperty: SkinConfigurationProperty<string>
+ public class SchemeConfigurationProperty: ThemeConfigurationProperty<string>
{
public SchemeConfigurationProperty (string propertyName, string defaultLightValue, string defaultDarkValue, string oldName = null)
: base (propertyName, defaultLightValue, defaultDarkValue, oldName)
@@ -231,7 +231,7 @@ namespace MonoDevelop.Ide
PromptForSave,
}
- public enum Skin
+ public enum Theme
{
Light,
Dark
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeVersionInfo.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeVersionInfo.cs
index b520e3596f..35689ed93d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeVersionInfo.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeVersionInfo.cs
@@ -108,7 +108,7 @@ namespace MonoDevelop.Ide
}
string ISystemInformationProvider.Title {
- get { return BrandingService.ApplicationName; }
+ get { return BrandingService.ApplicationLongName; }
}
string ISystemInformationProvider.Description {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ImageService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ImageService.cs
index 1e7d4eb26d..a4c657bc58 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ImageService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ImageService.cs
@@ -447,7 +447,6 @@ namespace MonoDevelop.Ide
return GetStockIdForImageSpec (addin, filename, iconSize);
}
-
static void AddToAnimatedIconFactory (string stockId, AnimatedIcon aicon)
{
animationFactory [stockId] = aicon;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs
index 7cfb100c27..cf5be4ac77 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/MessageService.cs
@@ -130,52 +130,7 @@ namespace MonoDevelop.Ide
public static class MessageService
{
public static Window RootWindow { get; internal set; }
-
- #region ShowException
-
- public static void ShowException (Exception e)
- {
- ShowException ((Window)null, e);
- }
-
- public static void ShowException (Exception e, string message)
- {
- ShowException ((Window)null, e, message);
- }
-
- public static void ShowException (Exception e, string message, string title)
- {
- ShowException ((Window)null, e, message, title);
- }
-
- public static AlertButton ShowException (Exception e, string message, string title, params AlertButton[] buttons)
- {
- return ShowException ((Window)null, e, message, title, buttons);
- }
-
- public static void ShowException (Window parent, Exception e)
- {
- ShowException (parent, e, e.Message);
- }
-
- public static void ShowException (Window parent, Exception e, string message)
- {
- ShowException (parent, e, message, null);
- }
-
- public static void ShowException (Window parent, Exception e, string message, string title)
- {
- ShowException (parent, e, message, title, null);
- }
- public static AlertButton ShowException (Window parent, Exception e, string message, string title, params AlertButton[] buttons)
- {
- if (!IdeApp.IsInitialized)
- throw new Exception ("IdeApp has not been initialized. Propagating the exception.", e);
- return messageService.ShowException (parent, title, message, e, buttons);
- }
- #endregion
-
#region ShowError
public static void ShowError (string primaryText)
{
@@ -581,22 +536,6 @@ namespace MonoDevelop.Ide
//The real GTK# code is wrapped in a GuiSyncObject to make calls synchronous on the GUI thread
class InternalMessageService : GuiSyncObject
{
- public AlertButton ShowException (Window parent, string title, string message, Exception e, params AlertButton[] buttons)
- {
- if ((buttons == null || buttons.Length == 0) && (e is UserException) && ((UserException)e).AlreadyReportedToUser)
- return AlertButton.Ok;
-
- var exceptionDialog = new ExceptionDialog {
- Buttons = buttons ?? new [] { AlertButton.Ok },
- Title = title ?? GettextCatalog.GetString ("An error has occurred"),
- Message = message,
- Exception = e,
- TransientFor = parent ?? GetDefaultModalParent (),
- };
- exceptionDialog.Run ();
- return exceptionDialog.ResultButton;
- }
-
public AlertButton GenericAlert (Window parent, MessageDescription message)
{
var dialog = new AlertDialog (message) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
index d83390e93f..75eace9b8b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs
@@ -246,7 +246,7 @@ namespace MonoDevelop.Ide
{
var provider = new MonoDevelop.Ide.FindInFiles.FileProvider (location.SourceTree.FilePath);
var doc = TextEditorFactory.CreateNewDocument ();
- doc.Text = provider.ReadString ();
+ doc.Text = provider.ReadString ().ReadToEnd ();
int position = location.SourceSpan.Start;
while (position + part.Name.Length < doc.Length) {
if (doc.GetTextAt (position, part.Name.Length) == part.Name)
@@ -269,8 +269,8 @@ namespace MonoDevelop.Ide
if (metadataDllName == "CommonLanguageRuntimeLibrary")
metadataDllName = "corlib.dll";
foreach (var assembly in await dn.GetReferencedAssemblies (IdeApp.Workspace.ActiveConfiguration)) {
- if (assembly.IndexOf (metadataDllName) > 0) {
- fileName = dn.GetAbsoluteChildPath (assembly);
+ if (assembly.FilePath.ToString ().IndexOf (metadataDllName, StringComparison.Ordinal) > 0) {
+ fileName = dn.GetAbsoluteChildPath (assembly.FilePath);
break;
}
}
@@ -311,8 +311,11 @@ namespace MonoDevelop.Ide
if (askIfMultipleLocations && locations.Length > 1) {
using (var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true)) {
- foreach (var part in locations)
+ foreach (var part in locations) {
+ if (monitor.CancellationToken.IsCancellationRequested)
+ return;
monitor.ReportResult (GetJumpTypePartSearchResult (symbol, part));
+ }
}
return;
}
@@ -331,8 +334,8 @@ namespace MonoDevelop.Ide
var dn = project as DotNetProject;
if (dn != null) {
foreach (var assembly in await dn.GetReferencedAssemblies (IdeApp.Workspace.ActiveConfiguration)) {
- if (assembly.IndexOf(metadataDllName, StringComparison.Ordinal) > 0) {
- fileName = dn.GetAbsoluteChildPath (assembly);
+ if (assembly.FilePath.ToString ().IndexOf(metadataDllName, StringComparison.Ordinal) > 0) {
+ fileName = dn.GetAbsoluteChildPath (assembly.FilePath);
break;
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs
index f197f6408b..3dac774169 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs
@@ -362,30 +362,34 @@ namespace MonoDevelop.Ide
internal bool Close (bool saveWorkspacePreferencies, bool closeProjectFiles)
{
if (Items.Count > 0) {
-
- // Request permission for unloading the items
- foreach (WorkspaceItem it in new List<WorkspaceItem> (Items)) {
- if (!RequestItemUnload (it))
- return false;
- }
-
- if (saveWorkspacePreferencies)
- SavePreferences ();
-
- if (closeProjectFiles) {
- foreach (Document doc in IdeApp.Workbench.Documents.ToArray ()) {
- if (!doc.Close ())
+ ITimeTracker timer = Counters.CloseWorkspaceTimer.BeginTiming ();
+ try {
+ // Request permission for unloading the items
+ foreach (WorkspaceItem it in new List<WorkspaceItem> (Items)) {
+ if (!RequestItemUnload (it))
return false;
}
- }
-
- foreach (WorkspaceItem it in new List<WorkspaceItem> (Items)) {
- try {
- Items.Remove (it);
- it.Dispose ();
- } catch (Exception ex) {
- MessageService.ShowError (GettextCatalog.GetString ("Could not close solution '{0}'.", it.Name), ex);
+
+ if (saveWorkspacePreferencies)
+ SavePreferences ();
+
+ if (closeProjectFiles) {
+ foreach (Document doc in IdeApp.Workbench.Documents.ToArray ()) {
+ if (!doc.Close ())
+ return false;
+ }
+ }
+
+ foreach (WorkspaceItem it in new List<WorkspaceItem> (Items)) {
+ try {
+ Items.Remove (it);
+ it.Dispose ();
+ } catch (Exception ex) {
+ MessageService.ShowError (GettextCatalog.GetString ("Could not close solution '{0}'.", it.Name), ex);
+ }
}
+ } finally {
+ timer.End ();
}
}
return true;
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Services.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Services.cs
index e96e8b7238..16b966dcc4 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Services.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Services.cs
@@ -55,6 +55,8 @@ namespace MonoDevelop.Ide
internal static Counter AutoSavedFiles = InstrumentationService.CreateCounter ("Autosaved Files", "Text Editor");
internal static TimerCounter BuildItemTimer = InstrumentationService.CreateTimerCounter ("Project/Solution built in the IDE", "IDE", id:"Ide.Shell.ProjectBuilt");
internal static Counter PadShown = InstrumentationService.CreateCounter ("Pad focused", "IDE", id:"Ide.Shell.PadShown");
+ internal static TimerCounter SaveAllTimer = InstrumentationService.CreateTimerCounter ("Save all documents", "IDE", id:"Ide.Shell.SaveAll");
+ internal static TimerCounter CloseWorkspaceTimer = InstrumentationService.CreateTimerCounter ("Workspace closed", "IDE", id:"Ide.Shell.CloseWorkspace");
internal static class ParserService {
public static TimerCounter FileParsed = InstrumentationService.CreateTimerCounter ("File parsed", "Parser Service");
diff --git a/main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.Shared.cs b/main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.Shared.cs
index 72d0eab144..d94b791c2a 100644
--- a/main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.Shared.cs
+++ b/main/src/core/MonoDevelop.Projects.Formats.MSBuild/MonoDevelop.Projects.Formats.MSBuild/ProjectBuilder.Shared.cs
@@ -64,32 +64,42 @@ namespace MonoDevelop.Projects.MSBuild
/// Prepares the logging infrastructure
/// </summary>
void InitLogger (ILogWriter logWriter)
- {
+ {
currentLogWriter = logWriter;
if (currentLogWriter != null) {
log.Clear ();
flushingLog = false;
flushTimer = new Timer (o => FlushLog ());
}
- }
-
+ }
+
/// <summary>
/// Flushes the log that has not yet been sent and disposes the logging infrastructure
/// </summary>
void DisposeLogger ()
{
- if (currentLogWriter != null) {
- flushTimer.Dispose ();
- flushTimer = null;
- FlushLog ();
- currentLogWriter = null;
+ lock (flushLogLock)
+ lock (log) {
+ if (currentLogWriter != null) {
+ try {
+ flushTimer.Dispose ();
+ FlushLog ();
+ } catch {
+ // Ignoree
+ } finally {
+ // This needs to be done inside the finally, to make sure it is called even in
+ // the case the thread is being aborted.
+ flushTimer = null;
+ currentLogWriter = null;
+ }
+ }
}
}
void LogWriteLine (string txt)
{
- if (currentLogWriter != null) {
- lock (log) {
+ lock (log) {
+ if (currentLogWriter != null) {
// Append the line to the log, and schedule the flush of the log, unless it has already been done
log.AppendLine (txt);
if (!flushingLog) {
diff --git a/main/src/core/MonoDevelop.Startup/app.manifest b/main/src/core/MonoDevelop.Startup/app.manifest
index 9eccbecb2f..0f673db392 100644
--- a/main/src/core/MonoDevelop.Startup/app.manifest
+++ b/main/src/core/MonoDevelop.Startup/app.manifest
@@ -44,11 +44,9 @@
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
- <!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
- -->
</assembly>
diff --git a/main/tests/Ide.Tests/ProjectTemplateTests.cs b/main/tests/Ide.Tests/ProjectTemplateTests.cs
index e1c1376e8a..af4f5a25cc 100644
--- a/main/tests/Ide.Tests/ProjectTemplateTests.cs
+++ b/main/tests/Ide.Tests/ProjectTemplateTests.cs
@@ -1,10 +1,10 @@
//
-// MyClass.cs
+// ProjectTemplateTests.cs
//
// Author:
-// alan <>
+// Alan McGovern <alan@xamarin.com>
//
-// Copyright (c) 2013 alan
+// Copyright (c) 2016 Xamarin Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@@ -23,12 +23,10 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
-using System;
using System.Collections.Generic;
using MonoDevelop.Ide.Templates;
using MonoDevelop.Projects;
using NUnit.Framework;
-using System.Text;
using UnitTests;
using System.Linq;
@@ -37,19 +35,14 @@ namespace MonoDevelop.Ide
[TestFixture]
public class ProjectTemplateTests : TestBase
{
- [Test]
- [Ignore]
- public void CreateGtkSharpProjectTemplate ()
+ public ProjectTemplateTests ()
{
- // This test is a placeholder to remind us that Gtk# project creation is untested.
- //
- // The GTK# template uses stetic which depends on the IdeApp being initialized, but we cannot
- // reliably start/shutdown XS as part of the test suite.
+ Simulate ();
}
- static IEnumerable<string> Templates {
+ IEnumerable<string> Templates {
get {
- return ProjectTemplate.ProjectTemplates.Select (t => t.Category + t.Name + t.LanguageName);
+ return ProjectTemplate.ProjectTemplates.Select (t => t.Id);
}
}
@@ -57,41 +50,24 @@ namespace MonoDevelop.Ide
[TestCaseSource ("Templates")]
public void CreateEveryProjectTemplate (string tt)
{
-// var builder = new StringBuilder ();
-// foreach (var template in ProjectTemplate.ProjectTemplates) {
- var template = ProjectTemplate.ProjectTemplates.FirstOrDefault (t => t.Category + t.Name + t.LanguageName == tt);
- if (template.Name.Contains ("Gtk#"))
- return;
-// try {
- var dir = Util.CreateTmpDir (template.Id);
- var cinfo = new ProjectCreateInformation {
- ProjectBasePath = dir,
- ProjectName = "ProjectName",
- SolutionName = "SolutionName",
- SolutionPath = dir
- };
- cinfo.Parameters ["CreateSharedAssetsProject"] = "False";
- cinfo.Parameters ["UseUniversal"] = "True";
- cinfo.Parameters ["UseIPad"] = "False";
- cinfo.Parameters ["UseIPhone"] = "False";
- cinfo.Parameters ["CreateiOSUITest"] = "False";
- cinfo.Parameters ["CreateAndroidUITest"] = "False";
-
- template.CreateWorkspaceItem (cinfo);
-/* } catch (Exception ex) {
- builder.AppendFormat (
- "Could not create a project from the template '{0} / {1} ({2})': {3}",
- template.Category, template.Name, template.LanguageName, ex
- );
- builder.AppendLine ();
- builder.AppendLine ();
- builder.AppendLine (ex.ToString ());
- builder.AppendLine ();
- }*/
- //}
+ var template = ProjectTemplate.ProjectTemplates.FirstOrDefault (t => t.Id == tt);
+ if (template.Name.Contains ("Gtk#"))
+ return;
+ var dir = Util.CreateTmpDir (template.Id);
+ var cinfo = new ProjectCreateInformation {
+ ProjectBasePath = dir,
+ ProjectName = "ProjectName",
+ SolutionName = "SolutionName",
+ SolutionPath = dir
+ };
+ cinfo.Parameters ["CreateSharedAssetsProject"] = "False";
+ cinfo.Parameters ["UseUniversal"] = "True";
+ cinfo.Parameters ["UseIPad"] = "False";
+ cinfo.Parameters ["UseIPhone"] = "False";
+ cinfo.Parameters ["CreateiOSUITest"] = "False";
+ cinfo.Parameters ["CreateAndroidUITest"] = "False";
-// if (builder.Length > 0)
-// Assert.Fail (builder.ToString ());
+ template.CreateWorkspaceItem (cinfo);
}
}
}
diff --git a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/CodeCompletionCSharpTests.cs b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/CodeCompletionCSharpTests.cs
index 4fda40240d..471346eb5b 100644
--- a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/CodeCompletionCSharpTests.cs
+++ b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/CodeCompletionCSharpTests.cs
@@ -30,7 +30,6 @@ using System;
using NUnit.Framework;
using System.Linq;
using ICSharpCode.NRefactory6.CSharp.Completion;
-using ICSharpCode.NRefactory6.CSharp.Completion;
namespace ICSharpCode.NRefactory6.CSharp.CodeCompletion
{
diff --git a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/ImportCompletionTests.cs b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/ImportCompletionTests.cs
index 95f7afbb83..ef43db3d22 100644
--- a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/ImportCompletionTests.cs
+++ b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR5/ImportCompletionTests.cs
@@ -1,4 +1,3 @@
-/*
//
// ImportCompletionTests.cs
//
@@ -31,28 +30,38 @@ using System.IO;
using System.Linq;
using System.Text;
+using ICSharpCode.NRefactory6.CSharp.Completion;
using NUnit.Framework;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.Text;
+using Microsoft.CodeAnalysis.CSharp;
+using System.Collections.Immutable;
+using ICSharpCode.NRefactory6.CSharp.CodeGeneration;
+using MonoDevelop.Ide.CodeCompletion;
+using MonoDevelop.CSharp.Completion;
namespace ICSharpCode.NRefactory6.CSharp.CodeCompletion
{
[TestFixture]
class ImportCompletionTests
{
- public static CompletionDataList CreateProvider(string text, params IUnresolvedAssembly[] references)
+ public static CSharpCompletionTextEditorExtension.CSharpCompletionDataList CreateProvider (string text)
{
int cursorPosition;
- var engine = CodeCompletionBugTests.CreateEngine(text, out cursorPosition, references);
- var data = engine.GetImportCompletionData (cursorPosition);
-
- return new CompletionDataList () {
- Data = data,
- AutoCompleteEmptyMatch = engine.AutoCompleteEmptyMatch,
- AutoSelect = engine.AutoSelect,
- DefaultCompletionString = engine.DefaultCompletionString
- };
- }
+ SemanticModel semanticModel;
+ Document document;
+ var engine = CodeCompletionBugTests.CreateEngine (text, out cursorPosition, out semanticModel, out document, null);
+ var ext = new CSharpCompletionTextEditorExtension ();
+ var list = new CSharpCompletionTextEditorExtension.CSharpCompletionDataList ();
+ var result = CodeCompletionBugTests.CreateProvider (text);
+ list.AddRange (result);
+ ext.AddImportCompletionData (result, list, new RoslynCodeCompletionFactory (ext, semanticModel), semanticModel, cursorPosition);
+
+ return list;
+ }
+ /*
[Test]
public void TestSimpleCase ()
{
@@ -122,23 +131,21 @@ class Test
Assert.True(data.UseFullName);
}
-
+*/
[Test]
public void TestAutomaticImport ()
{
- var provider = CodeCompletionBugTests.CreateProvider(@"class Test
+ var provider = CreateProvider (@"class Test
{
public static void Main (string[] args)
{
$c$
}
}");
- var data = provider.Find ("Console", true) as CodeCompletionBugTests.TestFactory.ImportCompletionData;
+ var data = provider.OfType<ImportSymbolCompletionData> ().FirstOrDefault (item => item.DisplayText == "Console");
Assert.NotNull(data);
- Assert.False(data.UseFullName);
-
}
-
+ /*
[Test]
public void TestAutomaticImportClash1 ()
{
@@ -191,8 +198,26 @@ class Test
var data = provider.OfType<CodeCompletionBugTests.TestFactory.ImportCompletionData>().FirstOrDefault(d => d.DisplayText == "Dictionary");
Assert.IsNull(data);
+ }*/
+
+ /// <summary>
+ /// Bug 40888 - Extension methods shown on types
+ /// </summary>
+ [Test]
+ public void TestBug40888 ()
+ {
+ var provider = CreateProvider (@"
+using System.Collections.Generic;
+
+class X
+{
+ y ()
+ {
+ $List<int>.$
+ }
+}");
+ var data = provider.OfType<ImportSymbolCompletionData> ();
+ Assert.IsTrue (!data.Any ());
}
}
}
-
-*/ \ No newline at end of file
diff --git a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/MiscTests.cs b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/MiscTests.cs
index 1b48df8aa2..2ade84ef1f 100644
--- a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/MiscTests.cs
+++ b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/MiscTests.cs
@@ -183,5 +183,32 @@ using System.Reflection;
[assembly: AssemblyTitle(S$$)]
", "System");
}
+
+ /// <summary>
+ /// Bug 40413 - Incorrect number of method overloads
+ /// </summary>
+ [Test]
+ public void TestBug40413 ()
+ {
+ var provider = CreateProvider (
+ @"
+using System;
+
+class Test
+{
+ static object Foo(int arg, int arg2) { return null; }
+ static object Foo(object arg, object arg2) { return null; }
+
+ public static void Main(string[] args)
+ {
+ Func<int, int, object> o = $F$
+ }
+}", usePreviousCharAsTrigger: true);
+ Assert.IsNotNull (provider, "provider was not created.");
+ var data = provider.Find ("Foo");
+ Assert.IsNotNull (data);
+ Assert.AreEqual (2, data.OverloadedData.Count);
+ }
+
}
} \ No newline at end of file
diff --git a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/ProtocolMemberContextHandlerTests.cs b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/ProtocolMemberContextHandlerTests.cs
index aee596a391..36a8241eac 100644
--- a/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/ProtocolMemberContextHandlerTests.cs
+++ b/main/tests/MonoDevelop.CSharpBinding.Tests/Features/CodeCompletion/NR6/ProtocolMemberContextHandlerTests.cs
@@ -23,7 +23,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 NUnit.Framework;
using ICSharpCode.NRefactory6.CSharp.Completion;
diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/AutomaticBracketInsertionTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/AutomaticBracketInsertionTests.cs
index e9e323b86b..f9ce0e4f83 100644
--- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/AutomaticBracketInsertionTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/AutomaticBracketInsertionTests.cs
@@ -216,7 +216,7 @@ namespace MonoDevelop.CSharpBinding
var data = new RoslynSymbolCompletionData (null, factory, method);
data.IsDelegateExpected = isDelegateExpected;
KeyActions ka = KeyActions.Process;
- ka = await data.InsertCompletionText (listWindow, ka, KeyDescriptor.FromGtk (key, (char)key, Gdk.ModifierType.None));
+ data.InsertCompletionText (listWindow, ref ka, KeyDescriptor.FromGtk (key, (char)key, Gdk.ModifierType.None));
return widget.CompletedWord;
}
diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/NamedArgumentCompletionTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/NamedArgumentCompletionTests.cs
index c38fd5cc2e..0b9dcaeab8 100644
--- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/NamedArgumentCompletionTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/NamedArgumentCompletionTests.cs
@@ -213,7 +213,7 @@ namespace MonoDevelop.CSharpBinding
var data = new RoslynSymbolCompletionData (null, factory, foundMember);
data.DisplayFlags |= DisplayFlags.NamedArgument;
KeyActions ka = KeyActions.Process;
- ka = await data.InsertCompletionText (listWindow, ka, KeyDescriptor.FromGtk (key, (char)key, Gdk.ModifierType.None));
+ data.InsertCompletionText (listWindow, ref ka, KeyDescriptor.FromGtk (key, (char)key, Gdk.ModifierType.None));
return widget.CompletedWord;
}
diff --git a/main/tests/UnitTests/MonoDevelop.CSharpBinding/OnTheFlyFormatterTests.cs b/main/tests/UnitTests/MonoDevelop.CSharpBinding/OnTheFlyFormatterTests.cs
index ba44b83084..858aefd479 100644
--- a/main/tests/UnitTests/MonoDevelop.CSharpBinding/OnTheFlyFormatterTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.CSharpBinding/OnTheFlyFormatterTests.cs
@@ -136,8 +136,8 @@ namespace MonoDevelop.CSharpBinding
{
Console.WriteLine () ;$
}
-}", async (content, ext) => {
- await ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.semicolon, ';', Gdk.ModifierType.None));
+}", (content, ext) => {
+ ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.semicolon, ';', Gdk.ModifierType.None));
var newText = content.Text;
Assert.AreEqual (@"class Foo
@@ -159,8 +159,8 @@ namespace MonoDevelop.CSharpBinding
{
Console.WriteLine() ;
}$
-}", async (content, ext) => {
- await ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.braceright, '}', Gdk.ModifierType.None));
+}", (content, ext) => {
+ ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.braceright, '}', Gdk.ModifierType.None));
var newText = content.Text;
Console.WriteLine (newText);
@@ -188,8 +188,8 @@ namespace MonoDevelop.CSharpBinding
Console.WriteLine() ;
}$
}
-}", async (content, ext) => {
- await ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.braceright, '}', Gdk.ModifierType.None));
+}", (content, ext) => {
+ ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.braceright, '}', Gdk.ModifierType.None));
var newText = content.Text;
Console.WriteLine (newText);
@@ -221,8 +221,8 @@ namespace MonoDevelop.CSharpBinding
}catch(Exception e){
}$
}
-}", async (content, ext) => {
- await ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.braceright, '}', Gdk.ModifierType.None));
+}", (content, ext) => {
+ ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.braceright, '}', Gdk.ModifierType.None));
var newText = content.Text;
Console.WriteLine (newText);
@@ -272,9 +272,9 @@ namespace MonoDevelop.CSharpBinding
[Test]
public async Task TestNonVerbatimToVerbatimConversion ()
{
- await Simulate ("$\"\\t\"", async (content, ext) => {
+ await Simulate ("$\"\\t\"", (content, ext) => {
content.Data.InsertText (0, "@");
- await ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
+ ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
var newText = content.Text;
Assert.AreEqual ("@\"\t\"", newText);
});
@@ -286,9 +286,9 @@ namespace MonoDevelop.CSharpBinding
[Test]
public async Task TestBug14686 ()
{
- await Simulate ("$\"\\\\\"", async (content, ext) => {
+ await Simulate ("$\"\\\\\"", (content, ext) => {
content.Data.InsertText (0, "@");
- await ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
+ ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
var newText = content.Text;
Assert.AreEqual ("@\"\\\"", newText);
});
@@ -297,16 +297,16 @@ namespace MonoDevelop.CSharpBinding
[Test]
public async Task TestBug14686Case2 ()
{
- await Simulate ("$\"\\\"", async (content, ext) => {
+ await Simulate ("$\"\\\"", (content, ext) => {
content.Data.InsertText (0, "@");
- await ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
+ ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
var newText = content.Text;
Assert.AreEqual ("@\"\\\"", newText);
});
- await Simulate ("$\"\\\"a", async (content, ext) => {
+ await Simulate ("$\"\\\"a", (content, ext) => {
content.Data.InsertText (0, "@");
- await ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
+ ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
var newText = content.Text;
Assert.AreEqual ("@\"\\\"a", newText);
});
@@ -324,10 +324,10 @@ class Foo
} catch (Exception e) {$}
}
}
-", async (content, ext) => {
+", (content, ext) => {
ext.ReindentOnTab ();
EditActions.NewLine (ext.Editor);
- await ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'\n', '\n', Gdk.ModifierType.None));
+ ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'\n', '\n', Gdk.ModifierType.None));
var newText = content.Text;
@@ -354,12 +354,12 @@ class Foo
[Test]
public async Task TestBug16174_AutoIndent ()
{
- await Simulate ("namespace Foo\n{\n\tpublic class Bar\n\t{\n$\t\tvoid Test()\n\t\t{\n\t\t}\n\t}\n}\n", async (content, ext) => {
+ await Simulate ("namespace Foo\n{\n\tpublic class Bar\n\t{\n$\t\tvoid Test()\n\t\t{\n\t\t}\n\t}\n}\n", (content, ext) => {
var options = DefaultSourceEditorOptions.Instance;
options.IndentStyle = IndentStyle.Auto;
ext.Editor.Options = options;
EditActions.NewLine (ext.Editor);
- await ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
+ ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
var newText = content.Text;
@@ -373,12 +373,12 @@ class Foo
[Test]
public async Task TestBug16174_VirtualIndent ()
{
- await Simulate ("namespace Foo\n{\n\tpublic class Bar\n\t{\n$\t\tvoid Test()\n\t\t{\n\t\t}\n\t}\n}\n", async (content, ext) => {
+ await Simulate ("namespace Foo\n{\n\tpublic class Bar\n\t{\n$\t\tvoid Test()\n\t\t{\n\t\t}\n\t}\n}\n", (content, ext) => {
var options = DefaultSourceEditorOptions.Instance;
options.IndentStyle = IndentStyle.Virtual;
ext.Editor.Options = options;
EditActions.NewLine (ext.Editor);
- await ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
+ ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
var newText = content.Text;
@@ -396,9 +396,9 @@ class Foo
[Test]
public async Task TestBug16283 ()
{
- await Simulate ("$\"\\dev\\null {0}\"", async (content, ext) => {
+ await Simulate ("$\"\\dev\\null {0}\"", (content, ext) => {
content.Data.InsertText (0, "@");
- await ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
+ ext.KeyPress (KeyDescriptor.FromGtk ((Gdk.Key)'@', '@', Gdk.ModifierType.None));
var newText = content.Text;
Assert.AreEqual ("@\"\\dev\null {0}\"", newText);
});
@@ -447,11 +447,11 @@ namespace FormatSelectionTest
//random comment
Console.WriteLine () ;$
}
-}", async (content, ext) => {
+}", (content, ext) => {
content.Data.Options = new CustomEditorOptions {
IndentStyle = IndentStyle.Virtual
};
- await ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.semicolon, ';', Gdk.ModifierType.None));
+ ext.KeyPress (KeyDescriptor.FromGtk (Gdk.Key.semicolon, ';', Gdk.ModifierType.None));
var newText = content.Text;
Assert.AreEqual (@"class Foo
diff --git a/main/tests/UnitTests/MonoDevelop.Ide.Editor/TextSourceTestBase.cs b/main/tests/UnitTests/MonoDevelop.Ide.Editor/TextSourceTestBase.cs
index 772ae3bd65..d142dd5b17 100644
--- a/main/tests/UnitTests/MonoDevelop.Ide.Editor/TextSourceTestBase.cs
+++ b/main/tests/UnitTests/MonoDevelop.Ide.Editor/TextSourceTestBase.cs
@@ -75,7 +75,7 @@ namespace MonoDevelop.Ide.Editor
}
[Test]
- public void TestTextAt_Segment()
+ public void TestTextAt_Segment ()
{
const string txt = "test";
var test = CreateTextSource (txt);
@@ -180,6 +180,18 @@ namespace MonoDevelop.Ide.Editor
Assert.AreEqual (txt.Substring (i, dest.Length), new string (dest));
}
}
+
+
+ /// <summary>
+ /// Bug 40522 - Can't enter comment on blank last line of file
+ /// </summary>
+ [Test]
+ public void TestBug40522 ()
+ {
+ const string txt = "test";
+ var test = CreateTextSource (txt);
+ Assert.AreEqual ("", test.GetTextAt (new TextSegment (txt.Length, 0)));
+ }
}
}
diff --git a/main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs b/main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs
index d404ea3aed..d1bd47a72c 100644
--- a/main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Ide.Gui/CompletionListWindowTests.cs
@@ -33,8 +33,7 @@ using MonoDevelop.Core;
using MonoDevelop.Ide.CodeCompletion;
using MonoDevelop.Ide.Gui.Content;
using MonoDevelop.Ide.Editor.Extension;
-using System.Threading.Tasks;
-
+
namespace MonoDevelop.Ide.Gui
{
[TestFixture()]
@@ -135,7 +134,7 @@ namespace MonoDevelop.Ide.Gui
StringBuilder sb = new StringBuilder ();
}
- static async Task SimulateInput (CompletionListWindow listWindow, string input)
+ static void SimulateInput (CompletionListWindow listWindow, string input)
{
var testCompletionWidget = ((TestCompletionWidget)listWindow.CompletionWidget);
bool isClosed = false;
@@ -145,38 +144,38 @@ namespace MonoDevelop.Ide.Gui
foreach (char ch in input) {
switch (ch) {
case '8':
- await listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Up, '\0', Gdk.ModifierType.None));
- await listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Up, '\0', Gdk.ModifierType.None));
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Up, '\0', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Up, '\0', Gdk.ModifierType.None));
break;
case '2':
- await listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Down, '\0', Gdk.ModifierType.None));
- await listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Down, '\0', Gdk.ModifierType.None));
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Down, '\0', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Down, '\0', Gdk.ModifierType.None));
break;
case '4':
- await listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Left, '\0', Gdk.ModifierType.None));
- await listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Left, '\0', Gdk.ModifierType.None));
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Left, '\0', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Left, '\0', Gdk.ModifierType.None));
break;
case '6':
- await listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Right, '\0', Gdk.ModifierType.None));
- await listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Right, '\0', Gdk.ModifierType.None));
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Right, '\0', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Right, '\0', Gdk.ModifierType.None));
break;
case '\t':
- await listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Tab, '\t', Gdk.ModifierType.None));
- await listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Tab, '\t', Gdk.ModifierType.None));
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Tab, '\t', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Tab, '\t', Gdk.ModifierType.None));
break;
case '\b':
- await listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.BackSpace, '\b', Gdk.ModifierType.None));
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.BackSpace, '\b', Gdk.ModifierType.None));
testCompletionWidget.Backspace ();
- await listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.BackSpace, '\b', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.BackSpace, '\b', Gdk.ModifierType.None));
break;
case '\n':
- await listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
- await listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk (Gdk.Key.Return, '\n', Gdk.ModifierType.None));
break;
default:
- await listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk ((Gdk.Key)ch, ch, Gdk.ModifierType.None));
+ listWindow.PreProcessKeyEvent (KeyDescriptor.FromGtk ((Gdk.Key)ch, ch, Gdk.ModifierType.None));
testCompletionWidget.AddChar (ch);
- await listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk ((Gdk.Key)ch, ch, Gdk.ModifierType.None));
+ listWindow.PostProcessKeyEvent (KeyDescriptor.FromGtk ((Gdk.Key)ch, ch, Gdk.ModifierType.None));
break;
}
// window closed.
@@ -195,12 +194,12 @@ namespace MonoDevelop.Ide.Gui
public string[] CompletionData { get; set; }
}
- static Task<string> RunSimulation (string partialWord, string simulatedInput, bool autoSelect, bool completeWithSpaceOrPunctuation, params string[] completionData)
+ static string RunSimulation (string partialWord, string simulatedInput, bool autoSelect, bool completeWithSpaceOrPunctuation, params string[] completionData)
{
return RunSimulation (partialWord, simulatedInput, autoSelect, completeWithSpaceOrPunctuation, true, completionData);
}
- static Task<string> RunSimulation (string partialWord, string simulatedInput, bool autoSelect, bool completeWithSpaceOrPunctuation, bool autoCompleteEmptyMatch, params string[] completionData)
+ static string RunSimulation (string partialWord, string simulatedInput, bool autoSelect, bool completeWithSpaceOrPunctuation, bool autoCompleteEmptyMatch, params string[] completionData)
{
return RunSimulation (new SimulationSettings () {
SimulatedInput = simulatedInput,
@@ -211,11 +210,11 @@ namespace MonoDevelop.Ide.Gui
});
}
- static async Task<string> RunSimulation (SimulationSettings settings)
+ static string RunSimulation (SimulationSettings settings)
{
CompletionListWindow listWindow = CreateListWindow (settings);
var testCompletionWidget = (TestCompletionWidget)listWindow.CompletionWidget;
- await SimulateInput (listWindow, settings.SimulatedInput);
+ SimulateInput (listWindow, settings.SimulatedInput);
return testCompletionWidget.CompletedWord;
}
@@ -233,7 +232,7 @@ namespace MonoDevelop.Ide.Gui
AutoCompleteEmptyMatch = settings.AutoCompleteEmptyMatch,
DefaultCompletionString = settings.DefaultCompletionString
};
- listWindow.List.FilterWords ();
+ listWindow.FilterWords ();
listWindow.UpdateWordSelection ();
listWindow.ResetSizes ();
return listWindow;
@@ -241,23 +240,23 @@ namespace MonoDevelop.Ide.Gui
[Test()]
- public async Task TestPunctuationCompletion ()
+ public void TestPunctuationCompletion ()
{
- string output = await RunSimulation ("", "aaa ", true, true,
+ string output = RunSimulation ("", "aaa ", true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
Assert.AreEqual ("AbAbAb", output);
- output = await RunSimulation ("", "aa.", true, true,
+ output = RunSimulation ("", "aa.", true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
Assert.AreEqual ("AbAb", output);
- output = await RunSimulation ("", "AbAbA.", true, true,
+ output = RunSimulation ("", "AbAbA.", true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -266,9 +265,9 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestTabCompletion ()
+ public void TestTabCompletion ()
{
- string output = await RunSimulation ("", "aaa\t", true, false,
+ string output = RunSimulation ("", "aaa\t", true, false,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -277,9 +276,9 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestTabCompletionWithAutoSelectOff ()
+ public void TestTabCompletionWithAutoSelectOff ()
{
- string output = await RunSimulation ("", "aaa\t", false, false,
+ string output = RunSimulation ("", "aaa\t", false, false,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -288,9 +287,9 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestReturnCompletion ()
+ public void TestReturnCompletion ()
{
- string output = await RunSimulation ("", "aaa\n", true, false,
+ string output = RunSimulation ("", "aaa\n", true, false,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -300,9 +299,9 @@ namespace MonoDevelop.Ide.Gui
[Ignore("\n now always commits")]
[Test()]
- public async Task TestReturnCompletionWithAutoSelectOff ()
+ public void TestReturnCompletionWithAutoSelectOff ()
{
- string output = await RunSimulation ("", "aaa\n", false, false,
+ string output = RunSimulation ("", "aaa\n", false, false,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -311,10 +310,10 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestAutoSelectionOn ()
+ public void TestAutoSelectionOn ()
{
// shouldn't select anything since auto select is disabled.
- string output = await RunSimulation ("", "aaa ", true, true,
+ string output = RunSimulation ("", "aaa ", true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -322,7 +321,7 @@ namespace MonoDevelop.Ide.Gui
Assert.AreEqual ("AbAbAb", output);
// now with cursor down
- output = await RunSimulation ("", "aaa2 ", true, true,
+ output = RunSimulation ("", "aaa2 ", true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -331,10 +330,10 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestAutoSelectionOff ()
+ public void TestAutoSelectionOff ()
{
// shouldn't select anything since auto select is disabled.
- string output = await RunSimulation ("", "aaa ", false, true,
+ string output = RunSimulation ("", "aaa ", false, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -342,7 +341,7 @@ namespace MonoDevelop.Ide.Gui
Assert.IsNull (output);
// now with cursor down (shouldn't change selection)
- output = await RunSimulation ("", "aaa2 ", false, true,
+ output = RunSimulation ("", "aaa2 ", false, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -350,7 +349,7 @@ namespace MonoDevelop.Ide.Gui
Assert.AreEqual ("AbAbAb", output);
// now with 2x cursor down - shold select next item.
- output = await RunSimulation ("", "aaa22 ", false, true,
+ output = RunSimulation ("", "aaa22 ", false, true,
"AbAb",
"AbAbAb",
"AbAbAbAb",
@@ -360,23 +359,23 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestBackspace ()
+ public void TestBackspace ()
{
- string output = await RunSimulation ("", "aaaa\b\t", true, true,
+ string output = RunSimulation ("", "aaaa\b\t", true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
Assert.AreEqual ("AbAbAb", output);
- output = await RunSimulation ("", "aaaa\b\b\b\t", true, true,
+ output = RunSimulation ("", "aaaa\b\b\b\t", true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
Assert.AreEqual ("AbAb", output);
- output = await RunSimulation ("", "aaaa\b\b\baaa\t", true, true,
+ output = RunSimulation ("", "aaaa\b\b\baaa\t", true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -385,9 +384,9 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestBackspacePreserveAutoSelect ()
+ public void TestBackspacePreserveAutoSelect ()
{
- string output = await RunSimulation ("", "c\bc ", false, true,
+ string output = RunSimulation ("", "c\bc ", false, true,
"a",
"b",
"c");
@@ -396,16 +395,16 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestAutoCompleteEmptyMatchOn ()
+ public void TestAutoCompleteEmptyMatchOn ()
{
- string output = await RunSimulation ("", " ", true, true, true,
+ string output = RunSimulation ("", " ", true, true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
Assert.AreEqual ("AbAb", output);
- output = await RunSimulation ("", "\t", true, true, true,
+ output = RunSimulation ("", "\t", true, true, true,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -415,13 +414,13 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestAutoCompleteFileNames ()
+ public void TestAutoCompleteFileNames ()
{
- string output = await RunSimulation ("", "Doc.cs ", true, true, true, "Document.cs");
+ string output = RunSimulation ("", "Doc.cs ", true, true, true, "Document.cs");
Assert.AreEqual ("Document.cs", output);
- output = await RunSimulation ("", "cwid.cs ", true, true, true,
+ output = RunSimulation ("", "cwid.cs ", true, true, true,
"Test.txt",
"CompletionWidget.cs",
"CommandWindow.cs");
@@ -430,23 +429,23 @@ namespace MonoDevelop.Ide.Gui
}
[Test()]
- public async Task TestAutoCompleteEmptyMatchOff ()
+ public void TestAutoCompleteEmptyMatchOff ()
{
- string output = await RunSimulation ("", " ", true, true, false,
+ string output = RunSimulation ("", " ", true, true, false,
"AbAb",
"AbAbAb",
"AbAbAbAb");
Assert.AreEqual (null, output);
- output = await RunSimulation ("", "\t", true, true, false,
+ output = RunSimulation ("", "\t", true, true, false,
"AbAb",
"AbAbAb",
"AbAbAbAb");
Assert.AreEqual ("AbAb", output);
- output = await RunSimulation ("", "a ", true, true, false,
+ output = RunSimulation ("", "a ", true, true, false,
"AbAb",
"AbAbAb",
"AbAbAbAb");
@@ -466,66 +465,66 @@ namespace MonoDevelop.Ide.Gui
};
[Test]
- public async Task TestMatchPunctuation ()
+ public void TestMatchPunctuation ()
{
- string output = await RunSimulation ("", "/\n", true, false, false, punctuationData);
+ string output = RunSimulation ("", "/\n", true, false, false, punctuationData);
Assert.AreEqual ("/AbAb", output);
}
[Test]
- public async Task TestMatchPunctuationCase2 ()
+ public void TestMatchPunctuationCase2 ()
{
- string output = await RunSimulation ("", "A\n", true, false, false, punctuationData);
+ string output = RunSimulation ("", "A\n", true, false, false, punctuationData);
Assert.AreEqual ("AbAb", output);
}
[Test]
- public async Task TestMatchPunctuationCase3 ()
+ public void TestMatchPunctuationCase3 ()
{
- string output = await RunSimulation ("", ",A..\n", true, false, false, punctuationData);
+ string output = RunSimulation ("", ",A..\n", true, false, false, punctuationData);
Assert.AreEqual (",A..bAb", output);
}
[Test]
- public async Task TestMatchPunctuationCommitOnSpaceAndPunctuation ()
+ public void TestMatchPunctuationCommitOnSpaceAndPunctuation ()
{
- string output = await RunSimulation ("", "Ac ", true, true, false, punctuationData);
+ string output = RunSimulation ("", "Ac ", true, true, false, punctuationData);
Assert.AreEqual ("Accc", output);
}
[Test]
- public async Task TestMatchPunctuationCommitOnSpaceAndPunctuation2 ()
+ public void TestMatchPunctuationCommitOnSpaceAndPunctuation2 ()
{
- var output = await RunSimulation ("", "/ ", true, true, false, punctuationData);
+ var output = RunSimulation ("", "/ ", true, true, false, punctuationData);
Assert.AreEqual ("/AbAb", output);
}
[Ignore]
[Test]
- public async Task TestMatchPunctuationCommitOnSpaceAndPunctuation3 ()
+ public void TestMatchPunctuationCommitOnSpaceAndPunctuation3 ()
{
- var output = await RunSimulation ("", ".", true, true, false, punctuationData);
+ var output = RunSimulation ("", ".", true, true, false, punctuationData);
Assert.AreEqual (null, output);
}
[Test]
- public async Task TestMatchPunctuationCommitOnSpaceAndPunctuation4 ()
+ public void TestMatchPunctuationCommitOnSpaceAndPunctuation4 ()
{
- var output = await RunSimulation ("", "A ", true, true, false, punctuationData);
+ var output = RunSimulation ("", "A ", true, true, false, punctuationData);
Assert.AreEqual ("AbAb", output);
}
[Test]
- public async Task TestMatchPunctuationCommitOnSpaceAndPunctuation5 ()
+ public void TestMatchPunctuationCommitOnSpaceAndPunctuation5 ()
{
- var output = await RunSimulation ("", ",A.b ", true, true, false, punctuationData);
+ var output = RunSimulation ("", ",A.b ", true, true, false, punctuationData);
Assert.AreEqual (",A.bAb", output);
}
[Test]
- public async Task TestDefaultCompletionString ()
+ public void TestDefaultCompletionString ()
{
- string output = await RunSimulation (new SimulationSettings {
+ string output = RunSimulation (new SimulationSettings {
SimulatedInput = "\t",
AutoSelect = true,
CompleteWithSpaceOrPunctuation = true,
@@ -540,7 +539,7 @@ namespace MonoDevelop.Ide.Gui
Assert.AreEqual ("C", output);
- output = await RunSimulation (new SimulationSettings {
+ output = RunSimulation (new SimulationSettings {
SimulatedInput = " ",
AutoSelect = true,
CompleteWithSpaceOrPunctuation = true,
@@ -578,9 +577,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 543923 - Completion window should deselect when word is deleted
/// </summary>
[Test]
- public async Task TestBug543923 ()
+ public void TestBug543923 ()
{
- string output = await RunSimulation (new SimulationSettings {
+ string output = RunSimulation (new SimulationSettings {
SimulatedInput = "i\b ",
AutoSelect = true,
CompleteWithSpaceOrPunctuation = true,
@@ -595,13 +594,13 @@ namespace MonoDevelop.Ide.Gui
/// Bug 543938 - Completion list up/down broken with single entry
/// </summary>
[Test]
- public async Task TestBug543938 ()
+ public void TestBug543938 ()
{
- string output = await RunSimulation ("", "2 ", true, true, false, "singleEntry");
+ string output = RunSimulation ("", "2 ", true, true, false, "singleEntry");
Assert.AreEqual ("singleEntry", output);
- output = await RunSimulation ("", " ", true, true, false, "singleEntry");
+ output = RunSimulation ("", " ", true, true, false, "singleEntry");
Assert.IsTrue (string.IsNullOrEmpty (output));
}
@@ -609,30 +608,30 @@ namespace MonoDevelop.Ide.Gui
/// Bug 543984 – Completion window should only accept punctuation when it's an exact match
/// </summary>
[Test]
- public async Task TestBug543984 ()
+ public void TestBug543984 ()
{
- string output = await RunSimulation ("", "foo#b\n", true, true, false, "foo#bar", "foo#bar#baz");
+ string output = RunSimulation ("", "foo#b\n", true, true, false, "foo#bar", "foo#bar#baz");
Assert.AreEqual ("foo#bar", output);
}
[Test]
- public async Task TestBug595240 ()
+ public void TestBug595240 ()
{
- string output = await RunSimulation ("", "A\t", true, true, false, "AbCdEf");
+ string output = RunSimulation ("", "A\t", true, true, false, "AbCdEf");
Assert.AreEqual ("AbCdEf", output);
}
[Test]
- public async Task TestBug595240Case2 ()
+ public void TestBug595240Case2 ()
{
- var output = await RunSimulation ("", "Cd\t", true, true, false, "AbCdEf");
+ var output = RunSimulation ("", "Cd\t", true, true, false, "AbCdEf");
Assert.AreEqual ("AbCdEf", output);
}
[Test]
- public async Task TestBug595240Case3 ()
+ public void TestBug595240Case3 ()
{
- var output = await RunSimulation ("", "bC\t", true, true, false, "AbCdEf");
+ var output = RunSimulation ("", "bC\t", true, true, false, "AbCdEf");
Assert.AreNotEqual ("AbCdEf", output);
}
@@ -640,9 +639,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 613539 - DOBa does not complete to DynamicObjectBase
/// </summary>
[Test]
- public async Task TestBug613539 ()
+ public void TestBug613539 ()
{
- string output = await RunSimulation ("", "DOB ", true, true, false, "DynamicObject", "DynamicObjectBase");
+ string output = RunSimulation ("", "DOB ", true, true, false, "DynamicObject", "DynamicObjectBase");
Assert.AreEqual ("DynamicObjectBase", output);
}
@@ -650,9 +649,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 629361 - Exact completion matches should take account of case
/// </summary>
[Test]
- public async Task TestBug629361 ()
+ public void TestBug629361 ()
{
- string output = await RunSimulation ("", "unit\t", true, true, false, "Unit", "unit");
+ string output = RunSimulation ("", "unit\t", true, true, false, "Unit", "unit");
Assert.IsTrue (output == null || "unit" == output);
}
@@ -660,64 +659,64 @@ namespace MonoDevelop.Ide.Gui
/// Bug 668136 - Subword matching in completion does not work well for xml
/// </summary>
[Test]
- public async Task TestBug668136 ()
+ public void TestBug668136 ()
{
- string output = await RunSimulation ("", "bar\t", true, true, false, "foo:test", "foo:bar", "foo:foo");
+ string output = RunSimulation ("", "bar\t", true, true, false, "foo:test", "foo:bar", "foo:foo");
Assert.AreEqual ("foo:bar", output);
}
[Test]
- public async Task TestSubstringMatch ()
+ public void TestSubstringMatch ()
{
- string output = await RunSimulation ("", "comcoll\n", true, true, false, "CustomCommandCollection");
+ string output = RunSimulation ("", "comcoll\n", true, true, false, "CustomCommandCollection");
Assert.AreEqual ("CustomCommandCollection", output);
- output = await RunSimulation ("", "cuscoll\n", true, true, false, "CustomCommandCollection");
+ output = RunSimulation ("", "cuscoll\n", true, true, false, "CustomCommandCollection");
Assert.AreEqual ("CustomCommandCollection", output);
- output = await RunSimulation ("", "commandcollection\n", true, true, false, "CustomCommandCollection");
+ output = RunSimulation ("", "commandcollection\n", true, true, false, "CustomCommandCollection");
Assert.AreEqual ("CustomCommandCollection", output);
}
[Test]
- public async Task TestUpperCase1 ()
+ public void TestUpperCase1 ()
{
- string output = await RunSimulation ("", "WR\t", true, true, false, "WriteLine");
+ string output = RunSimulation ("", "WR\t", true, true, false, "WriteLine");
Assert.AreEqual ("WriteLine", output);
}
[Test]
- public async Task TestUpperCase2 ()
+ public void TestUpperCase2 ()
{
- string output = await RunSimulation ("", "WR\t", true, true, false, "WriteLine", "WriteRaw");
+ string output = RunSimulation ("", "WR\t", true, true, false, "WriteLine", "WriteRaw");
Assert.AreEqual ("WriteRaw", output);
}
[Test]
- public async Task TestDigitSelection ()
+ public void TestDigitSelection ()
{
- string output = await RunSimulation ("", "v1\t", true, true, false, "var", "var1");
+ string output = RunSimulation ("", "v1\t", true, true, false, "var", "var1");
Assert.AreEqual ("var1", output);
}
[Test]
- public async Task TestSelectFirst ()
+ public void TestSelectFirst ()
{
- string output = await RunSimulation ("", "Are\t", true, true, false, "AreDifferent", "Differenx", "AreDiffereny");
+ string output = RunSimulation ("", "Are\t", true, true, false, "AreDifferent", "Differenx", "AreDiffereny");
Assert.AreEqual ("AreDifferent", output);
}
[Test]
- public async Task TestPreferStart ()
+ public void TestPreferStart ()
{
- string output = await RunSimulation ("", "InC\t", true, true, false, "Equals", "InvariantCultureIfo", "GetInvariantCulture");
+ string output = RunSimulation ("", "InC\t", true, true, false, "Equals", "InvariantCultureIfo", "GetInvariantCulture");
Assert.AreEqual ("InvariantCultureIfo", output);
}
[Test]
- public async Task TestPreProcessorDirective ()
+ public void TestPreProcessorDirective ()
{
- string output = await RunSimulation ("", "if\t", true, true, false, "#if", "if");
+ string output = RunSimulation ("", "if\t", true, true, false, "#if", "if");
Assert.AreEqual ("if", output);
}
@@ -725,24 +724,24 @@ namespace MonoDevelop.Ide.Gui
/// Bug 4732 - [Regression] Broken intellisense again
/// </summary>
[Test]
- public async Task TestBug4732 ()
+ public void TestBug4732 ()
{
- string output = await RunSimulation ("", "a\t", true, true, false, "_AppDomain", "A");
+ string output = RunSimulation ("", "a\t", true, true, false, "_AppDomain", "A");
Assert.AreEqual ("A", output);
}
[Test]
- public async Task TestFavorFirstSubword ()
+ public void TestFavorFirstSubword ()
{
- string output = await RunSimulation ("", "button\t", true, true, false, "AnotherTestButton", "Button");
+ string output = RunSimulation ("", "button\t", true, true, false, "AnotherTestButton", "Button");
Assert.AreEqual ("Button", output);
}
[Test]
- public async Task TestFavorExactMatch ()
+ public void TestFavorExactMatch ()
{
- string output = await RunSimulation ("", "View\t", true, true, false, "view", "View");
+ string output = RunSimulation ("", "View\t", true, true, false, "view", "View");
Assert.AreEqual ("View", output);
}
@@ -750,16 +749,16 @@ namespace MonoDevelop.Ide.Gui
/// Bug 6897 - Case insensitive matching issues
/// </summary>
[Test]
- public async Task TestBug6897 ()
+ public void TestBug6897 ()
{
- string output = await RunSimulation ("", "io\t", true, true, false, "InvalidOperationException", "IO");
+ string output = RunSimulation ("", "io\t", true, true, false, "InvalidOperationException", "IO");
Assert.AreEqual ("IO", output);
}
[Test]
- public async Task TestBug6897Case2 ()
+ public void TestBug6897Case2 ()
{
- string output = await RunSimulation ("", "io\t", true, true, false, "InvalidOperationException", "IOException");
+ string output = RunSimulation ("", "io\t", true, true, false, "InvalidOperationException", "IOException");
Assert.AreEqual ("IOException", output);
}
@@ -767,9 +766,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 7288 - Completion not selecting the correct entry
/// </summary>
[Test]
- public async Task TestBug7288 ()
+ public void TestBug7288 ()
{
- string output = await RunSimulation ("", "pages\t", true, true, false, "pages", "PageSystem");
+ string output = RunSimulation ("", "pages\t", true, true, false, "pages", "PageSystem");
Assert.AreEqual ("pages", output);
}
@@ -777,12 +776,12 @@ namespace MonoDevelop.Ide.Gui
/// Bug 7420 - Prefer properties over named parameters
/// </summary>
[Test]
- public async Task TestBug7420 ()
+ public void TestBug7420 ()
{
- string output = await RunSimulation ("", "val\t", true, true, false, "Value", "value:");
+ string output = RunSimulation ("", "val\t", true, true, false, "Value", "value:");
Assert.AreEqual ("Value", output);
- output = await RunSimulation ("", "val\t", true, true, false, "Value", "value", "value:");
+ output = RunSimulation ("", "val\t", true, true, false, "Value", "value", "value:");
Assert.AreEqual ("value", output);
}
@@ -790,9 +789,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 7522 - Code completion list should give preference to shorter words
/// </summary>
[Test]
- public async Task TestBug7522 ()
+ public void TestBug7522 ()
{
- string output = await RunSimulation ("", "vis\t", true, true, false, "VisibilityNotifyEvent", "Visible");
+ string output = RunSimulation ("", "vis\t", true, true, false, "VisibilityNotifyEvent", "Visible");
Assert.AreEqual ("Visible", output);
}
@@ -800,9 +799,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 8257 - Incorrect entry selected in code completion list
/// </summary>
[Test]
- public async Task TestBug8257 ()
+ public void TestBug8257 ()
{
- string output = await RunSimulation ("", "childr\t", true, true, false, "children", "ChildRequest");
+ string output = RunSimulation ("", "childr\t", true, true, false, "children", "ChildRequest");
Assert.AreEqual ("children", output);
}
@@ -811,9 +810,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 9114 - Code completion fumbles named parameters
/// </summary>
[Test]
- public async Task TestBug9114 ()
+ public void TestBug9114 ()
{
- string output = await RunSimulation ("", "act\t", true, true, false, "act:", "Action");
+ string output = RunSimulation ("", "act\t", true, true, false, "act:", "Action");
Assert.AreEqual ("act:", output);
}
@@ -821,9 +820,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 36451 - Text input is weird.
/// </summary>
[Test]
- public async Task TestBug36451 ()
+ public void TestBug36451 ()
{
- string output = await RunSimulation ("", "x\"", true, true, false, "X");
+ string output = RunSimulation ("", "x\"", true, true, false, "X");
Assert.AreEqual ("X", output);
}
@@ -831,9 +830,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 17779 - Symbol names with multiple successive letters are filtered out too early
/// </summary>
[Test]
- public async Task TestBug17779 ()
+ public void TestBug17779 ()
{
- string output = await RunSimulation ("", "ID11\t", true, true, false, "ID11Tag");
+ string output = RunSimulation ("", "ID11\t", true, true, false, "ID11Tag");
Assert.AreEqual ("ID11Tag", output);
}
@@ -841,16 +840,16 @@ namespace MonoDevelop.Ide.Gui
/// Bug 21121 - Aggressive completion for delegates
/// </summary>
[Test]
- public async Task TestBug21121 ()
+ public void TestBug21121 ()
{
- string output = await RunSimulation ("", "d)", true, true, false, "d", "delegate ()");
+ string output = RunSimulation ("", "d)", true, true, false, "d", "delegate ()");
Assert.AreEqual ("d", output);
}
[Test]
- public async Task TestSpaceCommits ()
+ public void TestSpaceCommits ()
{
- string output = await RunSimulation ("", "over ", true, true,
+ string output = RunSimulation ("", "over ", true, true,
"override",
"override foo");
@@ -860,29 +859,27 @@ namespace MonoDevelop.Ide.Gui
[Test]
- public async Task TestNumberInput ()
+ public void TestNumberInput ()
{
- string output = await RunSimulation ("", "1.", true, true, false, "foo1");
+ string output = RunSimulation ("", "1.", true, true, false, "foo1");
Assert.IsTrue (string.IsNullOrEmpty (output), "output was " + output);
}
- static async Task<TestCompletionWidget> ContinueSimulation (CompletionListWindow listWindow, ICompletionDataList list, string simulatedInput)
- {
- TestCompletionWidget testCompletionWidget;
+ static void ContinueSimulation (CompletionListWindow listWindow, ICompletionDataList list, ref TestCompletionWidget testCompletionWidget, string simulatedInput)
+ {
listWindow.ResetState ();
listWindow.CodeCompletionContext = new CodeCompletionContext ();
listWindow.CompletionDataList = list;
listWindow.CompletionWidget = testCompletionWidget = new TestCompletionWidget ();
- listWindow.List.FilterWords ();
+ listWindow.FilterWords ();
listWindow.ResetSizes ();
listWindow.UpdateWordSelection ();
- await SimulateInput (listWindow, simulatedInput);
- await listWindow.CompleteWord ();
- return testCompletionWidget;
+ SimulateInput (listWindow, simulatedInput);
+ listWindow.CompleteWord ();
}
[Test]
- public async Task TestMruSimpleLastItem ()
+ public void TestMruSimpleLastItem ()
{
var settings = new SimulationSettings () {
AutoSelect = true,
@@ -895,18 +892,18 @@ namespace MonoDevelop.Ide.Gui
var list = listWindow.CompletionDataList;
var testCompletionWidget = (TestCompletionWidget)listWindow.CompletionWidget;
- await SimulateInput (listWindow, "FooBar\t");
+ SimulateInput (listWindow, "FooBar\t");
Assert.AreEqual ("FooBar1", testCompletionWidget.CompletedWord);
- testCompletionWidget = await ContinueSimulation (listWindow, list, "FooFoo\t");
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "FooFoo\t");
Assert.AreEqual ("FooFoo2", testCompletionWidget.CompletedWord);
- testCompletionWidget = await ContinueSimulation (listWindow, list, "F\t");
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "F\t");
Assert.AreEqual ("FooFoo2", testCompletionWidget.CompletedWord);
}
[Test]
- public async Task TestMruEmptyMatch ()
+ public void TestMruEmptyMatch ()
{
var settings = new SimulationSettings () {
AutoSelect = true,
@@ -918,28 +915,28 @@ namespace MonoDevelop.Ide.Gui
var listWindow = CreateListWindow (settings);
var list = listWindow.CompletionDataList;
var testCompletionWidget = (TestCompletionWidget)listWindow.CompletionWidget;
- await SimulateInput (listWindow, "Foo\t");
- testCompletionWidget = await ContinueSimulation (listWindow, list, "F\t");
+ SimulateInput (listWindow, "Foo\t");
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "F\t");
Assert.AreEqual ("Foo", testCompletionWidget.CompletedWord);
- testCompletionWidget = await ContinueSimulation (listWindow, list, "Bar\t");
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "Bar\t");
Assert.AreEqual ("Bar", testCompletionWidget.CompletedWord);
- testCompletionWidget = await ContinueSimulation (listWindow, list, "\t");
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "\t");
Assert.AreEqual ("Bar", testCompletionWidget.CompletedWord);
}
[Test]
- public async Task TestCloseWithPunctiation ()
+ public void TestCloseWithPunctiation ()
{
- var output = await RunSimulation ("", "\"\t", true, true, false, punctuationData);
+ var output = RunSimulation ("", "\"\t", true, true, false, punctuationData);
Assert.AreEqual (null, output);
}
[Test]
- public async Task TestPreference ()
+ public void TestPreference ()
{
- string output = await RunSimulation ("", "expr\t", true, true, false, "expression", "PostfixExpressionStatementSyntax");
+ string output = RunSimulation ("", "expr\t", true, true, false, "expression", "PostfixExpressionStatementSyntax");
Assert.AreEqual ("expression", output);
}
@@ -947,9 +944,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 30591 - [Roslyn] Enum code-completion doesn't generate type on "."(dot)
/// </summary>
[Test]
- public async Task TestBug0591 ()
+ public void TestBug30591 ()
{
- var output = await RunSimulation ("", ".", false, false, false, new [] { "foo" } );
+ var output = RunSimulation ("", ".", false, false, false, new [] { "foo" } );
Assert.AreEqual ("foo", output);
}
@@ -957,9 +954,9 @@ namespace MonoDevelop.Ide.Gui
/// Bug 37985 - Code completion is selecting 'int32' instead of letting me type '2'
/// </summary>
[Test]
- public async Task TestBug37985 ()
+ public void TestBug37985 ()
{
- var output = await RunSimulation ("", "3\t", false, false, false, new [] { "Int32" } );
+ var output = RunSimulation ("", "3\t", false, false, false, new [] { "Int32" } );
Assert.AreEqual (null, output);
}
@@ -967,7 +964,7 @@ namespace MonoDevelop.Ide.Gui
/// Bug 38180 - Code completion should be case sensitive
/// </summary>
[Test]
- public async Task TestBug38180 ()
+ public void TestBug38180 ()
{
var settings = new SimulationSettings () {
AutoSelect = true,
@@ -980,13 +977,13 @@ namespace MonoDevelop.Ide.Gui
var list = listWindow.CompletionDataList;
var testCompletionWidget = (TestCompletionWidget)listWindow.CompletionWidget;
- await SimulateInput (listWindow, "test\t");
+ SimulateInput (listWindow, "test\t");
Assert.AreEqual ("test", testCompletionWidget.CompletedWord);
- testCompletionWidget = await ContinueSimulation (listWindow, list, "t\t");
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "t\t");
Assert.AreEqual ("test", testCompletionWidget.CompletedWord);
- testCompletionWidget = await ContinueSimulation (listWindow, list, "T\t");
+ ContinueSimulation (listWindow, list, ref testCompletionWidget, "T\t");
Assert.AreEqual ("Test", testCompletionWidget.CompletedWord);
}
@@ -996,4 +993,4 @@ namespace MonoDevelop.Ide.Gui
Gtk.Application.Init ();
}
}
-}
+}
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/FlavorMigration.cs b/main/tests/UnitTests/MonoDevelop.Projects/FlavorMigration.cs
index e1ea8d613d..294bdf8098 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/FlavorMigration.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/FlavorMigration.cs
@@ -274,7 +274,7 @@ namespace MonoDevelop.Projects
public CustomProjectLoadProgressMonitor ()
{
- AddSlaveMonitor (new ConsoleProgressMonitor ());
+ AddFollowerMonitor (new ConsoleProgressMonitor ());
}
public override MigrationType ShouldMigrateProject ()
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs
index 1ceae7ba22..e329356aa2 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs
@@ -42,30 +42,30 @@ using MonoDevelop.Projects.Extensions;
namespace MonoDevelop.Projects
{
[TestFixture]
- public class MSBuildTests: TestBase
+ public class MSBuildTests : TestBase
{
- [Test()]
- public async Task LoadSaveBuildConsoleProject()
+ [Test ()]
+ public async Task LoadSaveBuildConsoleProject ()
{
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
-
- Solution item = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+
+ Solution item = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
Assert.IsTrue (item is Solution);
-
- Solution sol = (Solution) item;
+
+ Solution sol = (Solution)item;
TestProjectsChecks.CheckBasicVsConsoleProject (sol);
string projectFile = ((Project)sol.Items [0]).FileName;
-
+
BuildResult cr = await item.Build (Util.GetMonitor (), "Debug");
Assert.IsNotNull (cr);
Assert.AreEqual (0, cr.ErrorCount);
Assert.AreEqual (0, cr.WarningCount);
-
+
string solXml = File.ReadAllText (solFile);
string projectXml = File.ReadAllText (projectFile);
-
+
await sol.SaveAsync (Util.GetMonitor ());
-
+
Assert.AreEqual (solXml, File.ReadAllText (solFile));
Assert.AreEqual (projectXml, File.ReadAllText (projectFile));
}
@@ -99,21 +99,21 @@ namespace MonoDevelop.Projects
Solution sol = TestProjectsChecks.CreateConsoleSolution ("console-project-msbuild");
sol.ConvertToFormat (MSBuildFileFormat.VS2010);
await sol.SaveAsync (Util.GetMonitor ());
-
+
// msbuild format
string solXml = File.ReadAllText (sol.FileName);
string projectXml = File.ReadAllText (((SolutionItem)sol.Items [0]).FileName);
-
+
// Make sure we compare using the same guid
Project p = sol.Items [0] as Project;
string guid = p.ItemId;
solXml = solXml.Replace (guid, "{969F05E2-0E79-4C5B-982C-8F3DD4D46311}");
projectXml = projectXml.Replace (guid, "{969F05E2-0E79-4C5B-982C-8F3DD4D46311}");
-
+
string solFile = Util.GetSampleProjectPath ("generated-console-project", "TestSolution.sln");
string projectFile = Util.GetSampleProjectPath ("generated-console-project", "TestProject.csproj");
-
+
Assert.AreEqual (Util.ToWindowsEndings (File.ReadAllText (solFile)), solXml);
Assert.AreEqual (Util.ToWindowsEndings (File.ReadAllText (projectFile)), projectXml);
}
@@ -144,25 +144,25 @@ namespace MonoDevelop.Projects
{
await TestProjectsChecks.TestCreateLoadSaveConsoleProject (MSBuildFileFormat.VS2005);
}
-
+
[Test]
public async Task GenericProject ()
{
await TestProjectsChecks.CheckGenericItemProject (MSBuildFileFormat.VS2005);
}
-
+
[Test]
public async Task TestLoadSaveSolutionFolders ()
{
await TestProjectsChecks.TestLoadSaveSolutionFolders (MSBuildFileFormat.VS2005);
}
-
+
[Test]
public async Task TestLoadSaveResources ()
{
await TestProjectsChecks.TestLoadSaveResources (MSBuildFileFormat.VS2005);
}
-
+
[Test]
public async Task TestConfigurationMerging ()
{
@@ -175,7 +175,7 @@ namespace MonoDevelop.Projects
Assert.IsNotNull (p);
// Debug config
-
+
DotNetProjectConfiguration conf = p.Configurations ["Debug"] as DotNetProjectConfiguration;
Assert.IsNotNull (conf);
Assert.AreEqual ("Debug", conf.Name);
@@ -188,7 +188,7 @@ namespace MonoDevelop.Projects
pars.WarningLevel = 4;
// Release config
-
+
conf = p.Configurations ["Release"] as DotNetProjectConfiguration;
Assert.IsNotNull (conf);
Assert.AreEqual ("Release", conf.Name);
@@ -198,7 +198,7 @@ namespace MonoDevelop.Projects
Assert.IsNotNull (pars);
Assert.AreEqual ("ReleaseMod", Path.GetFileName (conf.OutputDirectory));
Assert.AreEqual (3, pars.WarningLevel);
-
+
pars.WarningLevel = 1;
Assert.AreEqual (1, pars.WarningLevel);
conf.DebugType = "full";
@@ -210,7 +210,7 @@ namespace MonoDevelop.Projects
string savedFile = Path.Combine (p.BaseDirectory, "TestConfigurationMergingSaved.csproj");
Assert.AreEqual (File.ReadAllText (savedFile), File.ReadAllText (p.FileName));
}
-
+
[Test]
public async Task TestConfigurationMergingConfigPlatformCombinations ()
{
@@ -227,12 +227,12 @@ namespace MonoDevelop.Projects
Assert.AreEqual (6, p.Configurations.Count);
string originalContent = File.ReadAllText (p.FileName);
-
+
await p.SaveAsync (Util.GetMonitor ());
Assert.AreEqual (originalContent, File.ReadAllText (p.FileName));
}
-
+
[Test]
public async Task TestConfigurationMergingDefaultValues ()
{
@@ -242,17 +242,17 @@ namespace MonoDevelop.Projects
DotNetProjectConfiguration conf = p.Configurations ["Release|x86"] as DotNetProjectConfiguration;
Assert.IsNotNull (conf);
- CSharpCompilerParameters cparams = (CSharpCompilerParameters) conf.CompilationParameters;
+ CSharpCompilerParameters cparams = (CSharpCompilerParameters)conf.CompilationParameters;
Assert.AreEqual (LangVersion.Default, cparams.LangVersion);
cparams.LangVersion = LangVersion.Version5;
Assert.IsTrue (cparams.UnsafeCode);
cparams.UnsafeCode = false;
-
+
await p.SaveAsync (Util.GetMonitor ());
Assert.AreEqual (Util.ToSystemEndings (File.ReadAllText (p.FileName + ".saved")), File.ReadAllText (p.FileName));
}
-
+
[Test]
public async Task TestConfigurationMergingKeepOldConfig ()
{
@@ -263,22 +263,22 @@ namespace MonoDevelop.Projects
DotNetProjectConfiguration conf = p.Configurations ["Debug|x86"] as DotNetProjectConfiguration;
Assert.IsNotNull (conf);
Assert.IsTrue (conf.DebugSymbols);
- CSharpCompilerParameters cparams = (CSharpCompilerParameters) conf.CompilationParameters;
+ CSharpCompilerParameters cparams = (CSharpCompilerParameters)conf.CompilationParameters;
Assert.IsTrue (cparams.UnsafeCode);
-
+
conf = p.Configurations ["Release|x86"] as DotNetProjectConfiguration;
Assert.IsNotNull (conf);
Assert.IsFalse (conf.DebugSymbols);
conf.DebugSymbols = true;
- cparams = (CSharpCompilerParameters) conf.CompilationParameters;
+ cparams = (CSharpCompilerParameters)conf.CompilationParameters;
Assert.IsFalse (cparams.UnsafeCode);
cparams.UnsafeCode = true;
-
+
await p.SaveAsync (Util.GetMonitor ());
Assert.AreEqual (Util.ToSystemEndings (File.ReadAllText (p.FileName + ".saved")), File.ReadAllText (p.FileName));
}
-
+
[Test]
public async Task TestConfigurationMergingChangeNoMergeToParent ()
{
@@ -289,17 +289,17 @@ namespace MonoDevelop.Projects
DotNetProjectConfiguration conf = p.Configurations ["Debug|x86"] as DotNetProjectConfiguration;
Assert.IsNotNull (conf);
Assert.IsTrue (conf.SignAssembly);
-
+
conf = p.Configurations ["Release|x86"] as DotNetProjectConfiguration;
Assert.IsNotNull (conf);
Assert.IsTrue (conf.SignAssembly);
conf.SignAssembly = false;
-
+
await p.SaveAsync (Util.GetMonitor ());
Assert.AreEqual (Util.ToSystemEndings (File.ReadAllText (p.FileName + ".saved")), File.ReadAllText (p.FileName));
}
-
+
[Test]
public async Task TestConfigurationMergingChangeMergeToParent ()
{
@@ -311,17 +311,17 @@ namespace MonoDevelop.Projects
Assert.IsNotNull (conf);
Assert.IsTrue (conf.SignAssembly);
conf.SignAssembly = false;
-
+
conf = p.Configurations ["Release|x86"] as DotNetProjectConfiguration;
Assert.IsNotNull (conf);
Assert.IsTrue (conf.SignAssembly);
conf.SignAssembly = false;
-
+
await p.SaveAsync (Util.GetMonitor ());
Assert.AreEqual (Util.ToSystemEndings (File.ReadAllText (p.FileName + ".saved")), File.ReadAllText (p.FileName));
}
-
+
[Test]
public async Task TestConfigurationMergingChangeMergeToParent2 ()
{
@@ -333,17 +333,17 @@ namespace MonoDevelop.Projects
Assert.IsNotNull (conf);
Assert.IsTrue (conf.SignAssembly);
conf.SignAssembly = true;
-
+
conf = p.Configurations ["Release|x86"] as DotNetProjectConfiguration;
Assert.IsNotNull (conf);
Assert.IsFalse (conf.SignAssembly);
conf.SignAssembly = true;
-
+
await p.SaveAsync (Util.GetMonitor ());
Assert.AreEqual (Util.ToSystemEndings (File.ReadAllText (p.FileName + ".saved")), File.ReadAllText (p.FileName));
}
-
+
[Test]
public async Task TestConfigurationMergingChangeMergeToParent3 ()
{
@@ -380,9 +380,9 @@ namespace MonoDevelop.Projects
DotNetProject p = sol.FindProjectByName ("project-ref-with-spaces") as DotNetProject;
Assert.IsNotNull (p);
-
+
Assert.AreEqual (1, p.References.Count);
- Assert.AreEqual ("some - library", p.References[0].Reference);
+ Assert.AreEqual ("some - library", p.References [0].Reference);
}
[Test]
@@ -393,13 +393,13 @@ namespace MonoDevelop.Projects
var value = "Hello<foo>&.exe";
- var p = (DotNetProject) sol.GetAllProjects ().First ();
+ var p = (DotNetProject)sol.GetAllProjects ().First ();
var conf = ((DotNetProjectConfiguration)p.Configurations [0]);
conf.OutputAssembly = value;
await sol.SaveAsync (Util.GetMonitor ());
- sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName);
- p = (DotNetProject) sol.GetAllProjects ().First ();
+ sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName);
+ p = (DotNetProject)sol.GetAllProjects ().First ();
conf = ((DotNetProjectConfiguration)p.Configurations [0]);
Assert.AreEqual (value, conf.OutputAssembly);
@@ -414,8 +414,8 @@ namespace MonoDevelop.Projects
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projectFile) as DotNetProject;
Assert.IsNotNull (p);
var configuration = p.Configurations [0];
- configuration.CopyFrom (p.Configurations[0]);
- p.Configurations.Remove (p.Configurations[0]);
+ configuration.CopyFrom (p.Configurations [0]);
+ p.Configurations.Remove (p.Configurations [0]);
p.Configurations.Insert (0, configuration);
await p.SaveAsync (Util.GetMonitor ());
Assert.AreEqual (Util.ToSystemEndings (File.ReadAllText (p.FileName + ".saved")), File.ReadAllText (p.FileName));
@@ -425,13 +425,13 @@ namespace MonoDevelop.Projects
//[Ignore ("xbuild bug. It is not returning correct values for evaluated-items-without-condition list")]
public async Task SaveItemsWithProperties ()
{
- string dir = Path.GetDirectoryName (typeof(Project).Assembly.Location);
+ string dir = Path.GetDirectoryName (typeof (Project).Assembly.Location);
Environment.SetEnvironmentVariable ("HHH", "EnvTest");
Environment.SetEnvironmentVariable ("SOME_PLACE", dir);
string solFile = Util.GetSampleProject ("property-evaluation-test", "property-evaluation-test.sln");
Solution sol = await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile) as Solution;
- var p = (DotNetProject) sol.GetAllProjects ().First ();
+ var p = (DotNetProject)sol.GetAllProjects ().First ();
string projectXml1 = File.ReadAllText (p.FileName);
@@ -445,7 +445,7 @@ namespace MonoDevelop.Projects
[Test]
public async Task SaveItemsWithProperties2 ()
{
- string dir = Path.GetDirectoryName (typeof(Project).Assembly.Location);
+ string dir = Path.GetDirectoryName (typeof (Project).Assembly.Location);
Environment.SetEnvironmentVariable ("HHH", "EnvTest");
Environment.SetEnvironmentVariable ("SOME_PLACE", dir);
@@ -464,23 +464,23 @@ namespace MonoDevelop.Projects
[Test]
public async Task EvaluateProperties ()
{
- string dir = Path.GetDirectoryName (typeof(Project).Assembly.Location);
+ string dir = Path.GetDirectoryName (typeof (Project).Assembly.Location);
Environment.SetEnvironmentVariable ("HHH", "EnvTest");
Environment.SetEnvironmentVariable ("SOME_PLACE", dir);
string solFile = Util.GetSampleProject ("property-evaluation-test", "property-evaluation-test.sln");
Solution sol = await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile) as Solution;
- var p = (DotNetProject) sol.GetAllProjects ().First ();
- Assert.AreEqual ("Program1_test1.cs", p.Files[0].FilePath.FileName, "Basic replacement");
- Assert.AreEqual ("Program2_test1_test2.cs", p.Files[1].FilePath.FileName, "Property referencing same property");
- Assert.AreEqual ("Program3_full.cs", p.Files[2].FilePath.FileName, "Property inside group with non-evaluable condition");
- Assert.AreEqual ("Program4_yes_value.cs", p.Files[3].FilePath.FileName, "Evaluation of group condition");
- Assert.AreEqual ("Program5_yes_value.cs", p.Files[4].FilePath.FileName, "Evaluation of property condition");
- Assert.AreEqual ("Program6_unknown.cs", p.Files[5].FilePath.FileName, "Evaluation of property with non-evaluable condition");
- Assert.AreEqual ("Program7_test1.cs", p.Files[6].FilePath.FileName, "Item conditions are ignored");
+ var p = (DotNetProject)sol.GetAllProjects ().First ();
+ Assert.AreEqual ("Program1_test1.cs", p.Files [0].FilePath.FileName, "Basic replacement");
+ Assert.AreEqual ("Program2_test1_test2.cs", p.Files [1].FilePath.FileName, "Property referencing same property");
+ Assert.AreEqual ("Program3_full.cs", p.Files [2].FilePath.FileName, "Property inside group with non-evaluable condition");
+ Assert.AreEqual ("Program4_yes_value.cs", p.Files [3].FilePath.FileName, "Evaluation of group condition");
+ Assert.AreEqual ("Program5_yes_value.cs", p.Files [4].FilePath.FileName, "Evaluation of property condition");
+ Assert.AreEqual ("Program6_unknown.cs", p.Files [5].FilePath.FileName, "Evaluation of property with non-evaluable condition");
+ Assert.AreEqual ("Program7_test1.cs", p.Files [6].FilePath.FileName, "Item conditions are ignored");
var testRef = Path.Combine (dir, "MonoDevelop.Core.dll");
- var asms = (await p.GetReferencedAssemblies (sol.Configurations [0].Selector)).ToArray ();
+ var asms = (await p.GetReferencedAssemblies (sol.Configurations [0].Selector)).Select (ar => ar.FilePath).ToArray ();
Assert.IsTrue (asms.Contains (testRef));
}
@@ -488,27 +488,27 @@ namespace MonoDevelop.Projects
[Test]
public async Task EvaluatePropertiesWithConditionalGroup ()
{
- string dir = Path.GetDirectoryName (typeof(Project).Assembly.Location);
+ string dir = Path.GetDirectoryName (typeof (Project).Assembly.Location);
Environment.SetEnvironmentVariable ("HHH", "EnvTest");
Environment.SetEnvironmentVariable ("SOME_PLACE", dir);
string solFile = Util.GetSampleProject ("property-evaluation-test", "property-evaluation-test.sln");
Solution sol = await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile) as Solution;
- var p = (DotNetProject) sol.GetAllProjects ().First ();
- Assert.AreEqual ("Program8_test1.cs", p.Files[7].FilePath.FileName, "Item group conditions are not ignored");
- Assert.AreEqual ("Program9_yes.cs", p.Files[8].FilePath.FileName, "Non-evaluable property group clears properties");
- Assert.AreEqual ("Program10_$(AAA", p.Files[9].FilePath.FileName, "Invalid property reference");
- Assert.AreEqual ("Program11_EnvTest.cs", p.Files[10].FilePath.FileName, "Environment variable");
+ var p = (DotNetProject)sol.GetAllProjects ().First ();
+ Assert.AreEqual ("Program8_test1.cs", p.Files [7].FilePath.FileName, "Item group conditions are not ignored");
+ Assert.AreEqual ("Program9_yes.cs", p.Files [8].FilePath.FileName, "Non-evaluable property group clears properties");
+ Assert.AreEqual ("Program10_$(AAA", p.Files [9].FilePath.FileName, "Invalid property reference");
+ Assert.AreEqual ("Program11_EnvTest.cs", p.Files [10].FilePath.FileName, "Environment variable");
}
async Task LoadBuildVSConsoleProject (string vsVersion, string toolsVersion)
{
string solFile = Util.GetSampleProject ("ConsoleApp-VS" + vsVersion, "ConsoleApplication.sln");
var monitor = new ProgressMonitor ();
- var sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (monitor, solFile);
+ var sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (monitor, solFile);
Assert.IsTrue (monitor.Errors.Length == 0);
Assert.IsTrue (monitor.Warnings.Length == 0);
- var p = (DotNetProject) sol.GetAllProjects ().First ();
+ var p = (DotNetProject)sol.GetAllProjects ().First ();
Assert.AreEqual (toolsVersion, p.ToolsVersion);
var r = await sol.Build (monitor, "Debug");
Assert.IsTrue (monitor.Errors.Length == 0);
@@ -627,7 +627,7 @@ namespace MonoDevelop.Projects
try {
var p = Services.ProjectService.CreateProject (tn.Guid);
Assert.IsInstanceOf<MyProject> (p);
- var mp = (MyProject) p;
+ var mp = (MyProject)p;
mp.ItemId = "{74FADC4E-C9A8-456E-9A2C-DB933220E073}";
string dir = Util.CreateTmpDir ("WriteExtendedProperties");
mp.FileName = Path.Combine (dir, "test.sln");
@@ -656,7 +656,7 @@ namespace MonoDevelop.Projects
try {
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<MyProject> (p);
- var mp = (MyProject) p;
+ var mp = (MyProject)p;
Assert.NotNull (mp.Data);
Assert.AreEqual (mp.Data.Foo, "bar");
@@ -679,7 +679,7 @@ namespace MonoDevelop.Projects
try {
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<MyProject> (p);
- var mp = (MyProject) p;
+ var mp = (MyProject)p;
Assert.NotNull (mp.Data);
Assert.AreEqual (mp.Data.Foo, "bar");
@@ -707,7 +707,7 @@ namespace MonoDevelop.Projects
try {
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<MyProject> (p);
- var mp = (MyProject) p;
+ var mp = (MyProject)p;
Assert.NotNull (mp.Data);
Assert.AreEqual (mp.Data.Foo, "bar");
@@ -739,7 +739,7 @@ namespace MonoDevelop.Projects
try {
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<MyProject> (p);
- var mp = (MyProject) p;
+ var mp = (MyProject)p;
Assert.NotNull (mp.Data);
Assert.AreEqual (mp.Data.Foo, "bar");
@@ -771,7 +771,7 @@ namespace MonoDevelop.Projects
try {
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<MyEmptyProject> (p);
- var mp = (MyEmptyProject) p;
+ var mp = (MyEmptyProject)p;
var f = mp.GetFlavor<FlavorWithData> ();
Assert.NotNull (f.Data);
@@ -798,7 +798,7 @@ namespace MonoDevelop.Projects
try {
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<MyEmptyProject> (p);
- var mp = (MyEmptyProject) p;
+ var mp = (MyEmptyProject)p;
var f = mp.GetFlavor<FlavorWithData> ();
Assert.NotNull (f.Data);
@@ -830,7 +830,7 @@ namespace MonoDevelop.Projects
try {
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<MyEmptyProject> (p);
- var mp = (MyEmptyProject) p;
+ var mp = (MyEmptyProject)p;
var f = mp.GetFlavor<FlavorWithData> ();
Assert.NotNull (f.Data);
@@ -866,7 +866,7 @@ namespace MonoDevelop.Projects
try {
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<MyEmptyProject> (p);
- var mp = (MyEmptyProject) p;
+ var mp = (MyEmptyProject)p;
var f = mp.GetFlavor<FlavorWithData> ();
Assert.NotNull (f.Data);
@@ -895,7 +895,7 @@ namespace MonoDevelop.Projects
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<Project> (p);
- var mp = (Project) p;
+ var mp = (Project)p;
var actions = mp.GetBuildActions ();
@@ -920,9 +920,9 @@ namespace MonoDevelop.Projects
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<Project> (p);
- var mp = (Project) p;
- var files = mp.Files.Select (f => f.FilePath.FileName).OrderBy(f => f).ToArray ();
- Assert.AreEqual(new string[] {
+ var mp = (Project)p;
+ var files = mp.Files.Select (f => f.FilePath.FileName).OrderBy (f => f).ToArray ();
+ Assert.AreEqual (new string [] {
"Data1.cs",
"Data2.cs",
"Data3.cs",
@@ -943,9 +943,9 @@ namespace MonoDevelop.Projects
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<Project> (p);
- var mp = (Project) p;
- var files = mp.Files.Select (f => f.FilePath.FileName).OrderBy(f => f).ToArray ();
- Assert.AreEqual(new string[] {
+ var mp = (Project)p;
+ var files = mp.Files.Select (f => f.FilePath.FileName).OrderBy (f => f).ToArray ();
+ Assert.AreEqual (new string [] {
"Data2.cs",
"p1.txt",
"p4.txt",
@@ -961,7 +961,7 @@ namespace MonoDevelop.Projects
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<Project> (p);
- var mp = (Project) p;
+ var mp = (Project)p;
mp.AddFile (Path.Combine (p.BaseDirectory, "Test.cs"));
await p.SaveAsync (Util.GetMonitor ());
@@ -976,10 +976,10 @@ namespace MonoDevelop.Projects
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<Project> (p);
- var mp = (Project) p;
+ var mp = (Project)p;
var f = mp.Files.FirstOrDefault (pf => pf.FilePath.FileName == "Data1.cs");
- mp.Files.Remove(f);
+ mp.Files.Remove (f);
f = mp.Files.FirstOrDefault (pf => pf.FilePath.FileName == "text1-1.txt");
f.CopyToOutputDirectory = FileCopyMode.PreserveNewest;
@@ -995,16 +995,16 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("project-with-wildcard-links", "PortableTest.sln");
- var sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var mp = (Project) sol.Items [0];
+ var mp = (Project)sol.Items [0];
Assert.AreEqual (6, mp.Files.Count);
var f1 = mp.Files.FirstOrDefault (pf => pf.FilePath.FileName == "Xamagon_1.png");
var f2 = mp.Files.FirstOrDefault (pf => pf.FilePath.FileName == "Xamagon_2.png");
- Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..","test", "Xamagon_1.png")), Path.GetFullPath (f1.FilePath));
- Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..","test", "Subdir", "Xamagon_2.png")), Path.GetFullPath (f2.FilePath));
+ Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..", "test", "Xamagon_1.png")), Path.GetFullPath (f1.FilePath));
+ Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..", "test", "Subdir", "Xamagon_2.png")), Path.GetFullPath (f2.FilePath));
Assert.AreEqual ("Xamagon_1.png", f1.Link.ToString ());
Assert.AreEqual (Path.Combine ("Subdir", "Xamagon_2.png"), f2.Link.ToString ());
@@ -1017,9 +1017,9 @@ namespace MonoDevelop.Projects
string solFile = Util.GetSampleProject ("project-with-wildcard-links", "PortableTest.sln");
- var sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var mp = (Project) sol.Items [0];
+ var mp = (Project)sol.Items [0];
var f1 = mp.Files.FirstOrDefault (pf => pf.FilePath.FileName == "t1.txt");
Assert.IsNotNull (f1);
@@ -1027,8 +1027,8 @@ namespace MonoDevelop.Projects
var f2 = mp.Files.FirstOrDefault (pf => pf.FilePath.FileName == "t2.txt");
Assert.IsNotNull (f2);
- Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..","test", "t1.txt")), Path.GetFullPath (f1.FilePath));
- Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..","test", "t2.txt")), Path.GetFullPath (f2.FilePath));
+ Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..", "test", "t1.txt")), Path.GetFullPath (f1.FilePath));
+ Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..", "test", "t2.txt")), Path.GetFullPath (f2.FilePath));
Assert.AreEqual (Path.Combine ("Data", "t1.txt"), f1.Link.ToString ());
Assert.AreEqual (Path.Combine ("Data", "t2.txt"), f2.Link.ToString ());
@@ -1041,9 +1041,9 @@ namespace MonoDevelop.Projects
string solFile = Util.GetSampleProject ("project-with-wildcard-links", "PortableTest.sln");
- var sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var mp = (Project) sol.Items [0];
+ var mp = (Project)sol.Items [0];
var f1 = mp.Files.FirstOrDefault (pf => pf.FilePath.FileName == "t1.dat");
Assert.IsNotNull (f1);
@@ -1051,8 +1051,8 @@ namespace MonoDevelop.Projects
var f2 = mp.Files.FirstOrDefault (pf => pf.FilePath.FileName == "t2.dat");
Assert.IsNotNull (f2);
- Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..","test", "t1.dat")), Path.GetFullPath (f1.FilePath));
- Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..","test", "t2.dat")), Path.GetFullPath (f2.FilePath));
+ Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..", "test", "t1.dat")), Path.GetFullPath (f1.FilePath));
+ Assert.AreEqual (Path.GetFullPath (Path.Combine (mp.BaseDirectory, "..", "test", "t2.dat")), Path.GetFullPath (f2.FilePath));
Assert.AreEqual ("t1.dat", f1.Link.ToString ());
Assert.AreEqual ("t2.dat", f2.Link.ToString ());
@@ -1072,17 +1072,17 @@ namespace MonoDevelop.Projects
string solFile = Util.GetSampleProject ("project-from-vs", "console-with-libs.sln");
- var sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var p1 = sol.Items[0];
- var p2 = sol.Items[1];
- var p3 = sol.Items[2];
+ var sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var p1 = sol.Items [0];
+ var p2 = sol.Items [1];
+ var p3 = sol.Items [2];
var solContent = File.ReadAllText (solFile);
var refXml1 = File.ReadAllText (p1.FileName);
var refXml2 = File.ReadAllText (p2.FileName);
var refXml3 = File.ReadAllText (p3.FileName);
- await sol.SaveAsync (Util.GetMonitor());
+ await sol.SaveAsync (Util.GetMonitor ());
var savedSol = File.ReadAllText (solFile);
var savedXml1 = File.ReadAllText (p1.FileName);
@@ -1102,13 +1102,13 @@ namespace MonoDevelop.Projects
string solFile = Util.GetSampleProject ("vs-compat-sln-ordering", "ConsoleApplication.sln");
- var sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var p1 = sol.Items[0];
+ var sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var p1 = sol.Items [0];
var solContent = File.ReadAllText (solFile);
var refXml1 = File.ReadAllText (p1.FileName);
- await sol.SaveAsync (Util.GetMonitor());
+ await sol.SaveAsync (Util.GetMonitor ());
var savedSol = File.ReadAllText (solFile);
var savedXml1 = File.ReadAllText (p1.FileName);
@@ -1124,7 +1124,7 @@ namespace MonoDevelop.Projects
string solFile = Util.GetSampleProject ("unsupported-project-roundtrip", "TestApp.WinPhone.sln");
- var sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
var p = sol.Items [0];
var refSol = File.ReadAllText (solFile);
@@ -1139,11 +1139,11 @@ namespace MonoDevelop.Projects
Assert.AreEqual (refProj, savedProj);
}
- [Test()]
+ [Test ()]
public async Task ProjectWithCustomGroup ()
{
string solFile = Util.GetSampleProject ("project-with-custom-group", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
var p = sol.Items [0];
var refXml = File.ReadAllText (p.FileName);
@@ -1153,11 +1153,11 @@ namespace MonoDevelop.Projects
Assert.AreEqual (refXml, savedXml);
}
- [Test()]
+ [Test ()]
public async Task ProjectWithEnvVars ()
{
string solFile = Util.GetSampleProject ("project-with-env-vars", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
var p = sol.Items [0];
var refXml = File.ReadAllText (p.FileName);
@@ -1167,11 +1167,11 @@ namespace MonoDevelop.Projects
Assert.AreEqual (refXml, savedXml);
}
- [Test()]
+ [Test ()]
public async Task DefaultProjectConfiguration ()
{
string projFile = Util.GetSampleProject ("default-project-config", "ConsoleProject.csproj");
- Project p = (Project) await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
+ Project p = (Project)await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
var refXml = File.ReadAllText (projFile);
await p.SaveAsync (Util.GetMonitor ());
@@ -1223,7 +1223,7 @@ namespace MonoDevelop.Projects
string project)
{
string solFile = Util.GetSampleProject ("roundtrip-test-projects", project);
- var p = (SolutionItem) await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), solFile);
+ var p = (SolutionItem)await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), solFile);
var refXml = File.ReadAllText (p.FileName);
await p.SaveAsync (Util.GetMonitor ());
@@ -1237,12 +1237,12 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var p = (Project) sol.Items [0];
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var p = (Project)sol.Items [0];
var conf = p.CreateConfiguration ("Test");
conf.Properties.SetValue ("TestProperty", "TestValue");
- conf.Properties.SetValue ("TestPath", p.BaseDirectory.Combine ("Subdir","SomeFile.txt"));
+ conf.Properties.SetValue ("TestPath", p.BaseDirectory.Combine ("Subdir", "SomeFile.txt"));
p.Configurations.Add (conf);
await p.SaveAsync (Util.GetMonitor ());
@@ -1252,12 +1252,12 @@ namespace MonoDevelop.Projects
Assert.AreEqual (refXml, savedXml);
sol.Dispose ();
- sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- p = (Project) sol.Items [0];
+ sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ p = (Project)sol.Items [0];
conf = p.Configurations.OfType<ProjectConfiguration> ().FirstOrDefault (c => c.Name == "Test");
Assert.AreEqual ("TestValue", conf.Properties.GetValue ("TestProperty"));
- Assert.AreEqual (p.BaseDirectory.Combine ("Subdir","SomeFile.txt"), conf.Properties.GetPathValue ("TestPath"));
+ Assert.AreEqual (p.BaseDirectory.Combine ("Subdir", "SomeFile.txt"), conf.Properties.GetPathValue ("TestPath"));
}
[Test]
@@ -1269,14 +1269,14 @@ namespace MonoDevelop.Projects
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var p = (Project) sol.Items [0];
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var p = (Project)sol.Items [0];
var conf = p.Configurations.OfType<ProjectConfiguration> ().FirstOrDefault (c => c.Name == "Debug");
var newConf = p.CreateConfiguration ("Test");
newConf.CopyFrom (conf);
p.Configurations [p.Configurations.IndexOf (conf)] = newConf;
- newConf.IntermediateOutputDirectory = p.BaseDirectory.Combine ("obj","Test");
+ newConf.IntermediateOutputDirectory = p.BaseDirectory.Combine ("obj", "Test");
await p.SaveAsync (Util.GetMonitor ());
@@ -1291,12 +1291,12 @@ namespace MonoDevelop.Projects
// Save a custom item with metadata
try {
- MSBuildProjectService.RegisterCustomProjectItemType ("CustomItem", typeof(CustomItem));
+ MSBuildProjectService.RegisterCustomProjectItemType ("CustomItem", typeof (CustomItem));
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var p = (Project) sol.Items [0];
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var p = (Project)sol.Items [0];
CustomItem it = new CustomItem {
SomeMetadata = "FooTest"
@@ -1311,15 +1311,14 @@ namespace MonoDevelop.Projects
sol.Dispose ();
- sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- p = (Project) sol.Items [0];
+ sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ p = (Project)sol.Items [0];
it = p.Items.OfType<CustomItem> ().FirstOrDefault ();
Assert.IsNotNull (it);
Assert.AreEqual ("TestInclude", it.Include);
Assert.AreEqual ("FooTest", it.SomeMetadata);
- }
- finally {
+ } finally {
MSBuildProjectService.UnregisterCustomProjectItemType ("CustomItem");
}
}
@@ -1328,7 +1327,7 @@ namespace MonoDevelop.Projects
public async Task RunTarget ()
{
string projFile = Util.GetSampleProject ("msbuild-tests", "project-with-custom-target.csproj");
- var p = (Project) await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
+ var p = (Project)await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
var ctx = new TargetEvaluationContext ();
ctx.GlobalProperties.SetValue ("TestProp", "has");
@@ -1351,13 +1350,31 @@ namespace MonoDevelop.Projects
Assert.AreEqual (1, items.Length);
Assert.AreEqual ("bar", items [0].Include);
Assert.AreEqual ("Hello", items [0].Metadata.GetValue ("MyMetadata"));
- }
+ }
+
+ [Test]
+ public async Task TargetEvaluationResultTryGetPathValueForNullPropertyValue ()
+ {
+ string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ var p = (Project)sol.Items [0];
+
+ var ctx = new TargetEvaluationContext ();
+ ctx.PropertiesToEvaluate.Add ("MissingProperty");
+ var res = await p.RunTarget (Util.GetMonitor (), "Build", p.Configurations [0].Selector, ctx);
+
+ Assert.IsNull (res.Properties.GetValue ("MissingProperty"));
+
+ FilePath path = null;
+ bool foundProperty = res.Properties.TryGetPathValue ("MissingProperty", out path);
+ Assert.IsFalse (foundProperty);
+ }
[Test]
public async Task BuildWithCustomProps ()
{
string projFile = Util.GetSampleProject ("msbuild-tests", "project-with-custom-build-target.csproj");
- var p = (Project) await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
+ var p = (Project)await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
var ctx = new ProjectOperationContext ();
ctx.GlobalProperties.SetValue ("TestProp", "foo");
@@ -1379,8 +1396,8 @@ namespace MonoDevelop.Projects
{
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- Project p = (Project) sol.Items [0];
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Project p = (Project)sol.Items [0];
var conf = p.Configurations.OfType<ProjectConfiguration> ().FirstOrDefault (c => c.Name == "Debug");
conf.Properties.SetValue ("Foo", "Bar");
@@ -1410,8 +1427,8 @@ namespace MonoDevelop.Projects
public async Task RenameFile ()
{
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- Project p = (Project) sol.Items [0];
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Project p = (Project)sol.Items [0];
var f = p.GetProjectFile (p.ItemDirectory.Combine ("Program.cs"));
f.Name = p.ItemDirectory.Combine ("test.cs");
@@ -1440,8 +1457,8 @@ namespace MonoDevelop.Projects
public async Task ProjectDefinesCommonPropertiesInExternalFile ()
{
string solFile = Util.GetSampleProject ("project-includes-props", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- Project p = (Project) sol.Items [0];
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Project p = (Project)sol.Items [0];
var refXml = Util.ToSystemEndings (File.ReadAllText (p.FileName));
@@ -1455,8 +1472,8 @@ namespace MonoDevelop.Projects
public async Task ProjectWithMultiIncludeItem ()
{
string solFile = Util.GetSampleProject ("project-multi-include-item", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- Project p = (Project) sol.Items [0];
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Project p = (Project)sol.Items [0];
var f = p.Files.FirstOrDefault (pf => pf.FilePath.FileName == "Program1.cs");
Assert.NotNull (f);
@@ -1487,14 +1504,14 @@ namespace MonoDevelop.Projects
Assert.AreEqual (refXml, savedXml);
}
- [Test()]
- public async Task SolutionDirIsSet()
+ [Test ()]
+ public async Task SolutionDirIsSet ()
{
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var p = (Project) sol.Items [0];
+ var p = (Project)sol.Items [0];
Assert.AreEqual (sol.ItemDirectory.ToString (), p.MSBuildProject.EvaluatedProperties.GetValue ("SolutionDir"));
}
@@ -1504,9 +1521,9 @@ namespace MonoDevelop.Projects
// When renaming a configuration, paths that use the configuration name should also be renamed
string solFile = Util.GetSampleProject ("console-project", "ConsoleProject.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var p = (DotNetProject) sol.Items [0];
+ var p = (DotNetProject)sol.Items [0];
var c = p.GetConfiguration (new ItemConfigurationSelector ("Release"));
var renamed = p.CreateConfiguration ("Test");
renamed.CopyFrom (c, true);
@@ -1535,7 +1552,7 @@ namespace MonoDevelop.Projects
Assert.IsNotNull (c);
Assert.IsTrue (c.DebugSymbols);
- c.Properties.SetValue ("Test","foo");
+ c.Properties.SetValue ("Test", "foo");
await p.SaveAsync (Util.GetMonitor ());
var savedXml = File.ReadAllText (p.FileName);
@@ -1554,8 +1571,8 @@ namespace MonoDevelop.Projects
Assert.AreEqual (2, p.References.Count);
- Assert.AreEqual (p.ItemDirectory.Combine ("a.dll").ToString (), p.References[0].HintPath.ToString ());
- Assert.AreEqual (p.ItemDirectory.Combine ("b.dll").ToString (), p.References[1].HintPath.ToString ());
+ Assert.AreEqual (p.ItemDirectory.Combine ("a.dll").ToString (), p.References [0].HintPath.ToString ());
+ Assert.AreEqual (p.ItemDirectory.Combine ("b.dll").ToString (), p.References [1].HintPath.ToString ());
var refXml = File.ReadAllText (p.FileName);
await p.SaveAsync (Util.GetMonitor ());
@@ -1571,7 +1588,7 @@ namespace MonoDevelop.Projects
sol.ConvertToFormat (MSBuildFileFormat.VS2010);
var p = sol.GetAllProjects ().First ();
- var c = (ProjectConfiguration) p.Configurations [0];
+ var c = (ProjectConfiguration)p.Configurations [0];
Assert.IsFalse (p.ProjectProperties.HasProperty ("TargetName"));
Assert.IsFalse (p.MSBuildProject.EvaluatedProperties.HasProperty ("TargetName"));
Assert.IsFalse (c.Properties.HasProperty ("TargetName"));
@@ -1585,8 +1602,8 @@ namespace MonoDevelop.Projects
Assert.IsTrue (c.Properties.HasProperty ("TargetName"));
}
- [Test()]
- public async Task LoadSaveConsoleProjectWithEmptyGroup()
+ [Test ()]
+ public async Task LoadSaveConsoleProjectWithEmptyGroup ()
{
var fn = new CustomFlavorNode ();
WorkspaceObject.RegisterCustomExtension (fn);
@@ -1634,6 +1651,25 @@ namespace MonoDevelop.Projects
Assert.AreEqual (projectXml, File.ReadAllText (p.FileName));
}
+
+ [Test]
+ public async Task GetReferencedAssemblies ()
+ {
+ string projFile = Util.GetSampleProject ("msbuild-tests", "aliased-references.csproj");
+ var p = (DotNetProject)await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
+
+ var asms = (await p.GetReferencedAssemblies (p.Configurations [0].Selector)).ToArray ();
+
+ var ar = asms.FirstOrDefault (a => a.FilePath.FileName == "System.Xml.dll");
+ Assert.IsNotNull (ar);
+ Assert.AreEqual ("", ar.Aliases);
+
+ ar = asms.FirstOrDefault (a => a.FilePath.FileName == "System.Data.dll");
+ Assert.IsNotNull (ar);
+ Assert.AreEqual ("Foo", ar.Aliases);
+
+ Assert.AreEqual (4, asms.Length);
+ }
}
class MyProjectTypeNode: ProjectTypeNode
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs
index 344eef27cc..bfe05b0dea 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/ProjectTests.cs
@@ -439,6 +439,46 @@ namespace MonoDevelop.Projects
}
[Test]
+ public async Task RemoveRefreshedReferenceSaveProjectAndAddReferenceBackAgain ()
+ {
+ string solFile = Util.GetSampleProject ("reference-refresh", "ConsoleProject.sln");
+
+ Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ DotNetProject project = sol.GetAllItems<DotNetProject> ().FirstOrDefault ();
+
+ File.Move (project.BaseDirectory.Combine ("test.dll"), project.BaseDirectory.Combine ("test.dll.tmp"));
+
+ sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ project = sol.GetAllItems<DotNetProject> ().FirstOrDefault ();
+
+ ProjectReference r = project.References.FirstOrDefault (re => re.Reference == "test");
+ Assert.IsNotNull (r);
+ Assert.AreEqual (r.ReferenceType, ReferenceType.Package);
+ Assert.IsFalse (r.IsValid);
+
+ File.Move (project.BaseDirectory.Combine ("test.dll.tmp"), project.BaseDirectory.Combine ("test.dll"));
+
+ ProjectReference refreshedReference = r.GetRefreshedReference ();
+ Assert.IsNotNull (refreshedReference);
+
+ project.References.Remove (r);
+ await project.SaveAsync (Util.GetMonitor ());
+
+ project.References.Add (refreshedReference);
+ await project.SaveAsync (Util.GetMonitor ());
+
+ // Reload project.
+ sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ project = sol.GetAllItems<DotNetProject> ().FirstOrDefault ();
+
+ r = project.References.FirstOrDefault (re => re.Reference == "test");
+ Assert.IsNotNull (r);
+ Assert.AreEqual (r.ReferenceType, ReferenceType.Assembly);
+ Assert.AreEqual (r.GetReferencedFileNames(project.DefaultConfiguration.Selector).Single (), project.BaseDirectory.Combine ("test.dll").FullPath.ToString ());
+ Assert.IsTrue (r.IsValid);
+ }
+
+ [Test]
public void AssemblyReferenceHintPath ()
{
var file = (FilePath) GetType ().Assembly.Location;
@@ -483,7 +523,7 @@ namespace MonoDevelop.Projects
string solFile = Util.GetSampleProject ("portable-library", "portable-library.sln");
Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
var p = (DotNetProject) sol.FindProjectByName ("PortableLibrary");
- var refs = (await p.GetReferencedAssemblies (p.Configurations [0].Selector)).Select (r => Path.GetFileName (r)).ToArray ();
+ var refs = (await p.GetReferencedAssemblies (p.Configurations [0].Selector)).Select (r => r.FilePath.FileName).ToArray ();
}
[Test]
@@ -546,7 +586,7 @@ namespace MonoDevelop.Projects
var refs = (await p.GetReferencedAssemblies (ConfigurationSelector.Default)).ToArray ();
- Assert.IsTrue (refs.Any (r => r.Contains ("System.Xml.Linq.dll")));
+ Assert.IsTrue (refs.Any (r => r.FilePath.FileName == "System.Xml.Linq.dll"));
}
[Test]
@@ -567,7 +607,7 @@ namespace MonoDevelop.Projects
var refs = (await p.GetReferencedAssemblies (ConfigurationSelector.Default)).ToArray ();
// Check that the in-memory project data is used when the builder is loaded for the first time.
- Assert.IsTrue (refs.Any (r => r.Contains ("System.Xml.Linq.dll")));
+ Assert.IsTrue (refs.Any (r => r.FilePath.FileName == "System.Xml.Linq.dll"));
}
[Test]
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs
index 3e3d3b677b..a2647ce085 100644
--- a/main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.Projects/SharedAssetsProjectTests.cs
@@ -34,13 +34,13 @@ using MonoDevelop.Projects.MSBuild;
namespace MonoDevelop.Projects
{
[TestFixture]
- public class SharedAssetsProjectTests: TestBase
+ public class SharedAssetsProjectTests : TestBase
{
[Test]
public async Task LoadSharedProject ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
var pc1 = sol.FindProjectByName ("Console1");
Assert.IsNotNull (pc1);
@@ -51,7 +51,7 @@ namespace MonoDevelop.Projects
var pc3 = sol.FindProjectByName ("Console3");
Assert.IsNotNull (pc3);
- var pcs = (SharedAssetsProject) sol.FindProjectByName ("Shared");
+ var pcs = (SharedAssetsProject)sol.FindProjectByName ("Shared");
Assert.IsNotNull (pcs);
Assert.AreEqual (4, sol.GetAllProjects ().Count ());
@@ -70,7 +70,7 @@ namespace MonoDevelop.Projects
public async Task BuildSharedProject ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
var pc1 = sol.FindProjectByName ("Console1");
var res = await pc1.Build (Util.GetMonitor (), ConfigurationSelector.Default, true);
Assert.AreEqual (0, res.ErrorCount);
@@ -81,7 +81,7 @@ namespace MonoDevelop.Projects
public async Task PropagateFileChanges ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
var pc1 = sol.FindProjectByName ("Console1");
var pc2 = sol.FindProjectByName ("Console2");
var pc3 = sol.FindProjectByName ("Console3");
@@ -126,10 +126,10 @@ namespace MonoDevelop.Projects
public async Task AddReference ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
var pcs = sol.FindProjectByName ("Shared");
- var pc3 = (DotNetProject) sol.FindProjectByName ("Console3");
+ var pc3 = (DotNetProject)sol.FindProjectByName ("Console3");
var sharedFile = pcs.ItemDirectory.Combine ("MyClass.cs");
Assert.IsFalse (pc3.Files.GetFile (sharedFile) != null);
@@ -149,10 +149,10 @@ namespace MonoDevelop.Projects
public async Task RemoveReference ()
{
string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- var pc1 = (DotNetProject) sol.FindProjectByName ("Console1");
- var pc2 = (DotNetProject) sol.FindProjectByName ("Console2");
+ var pc1 = (DotNetProject)sol.FindProjectByName ("Console1");
+ var pc2 = (DotNetProject)sol.FindProjectByName ("Console2");
var pcs = sol.FindProjectByName ("Shared");
var sharedFile = pcs.ItemDirectory.Combine ("MyClass.cs");
@@ -176,7 +176,7 @@ namespace MonoDevelop.Projects
sol.ConvertToFormat (MSBuildFileFormat.VS2012);
await sol.SaveAsync (Util.GetMonitor ());
- var pc = (DotNetProject) sol.Items [0];
+ var pc = (DotNetProject)sol.Items [0];
// Add shared project
@@ -364,17 +364,17 @@ namespace MonoDevelop.Projects
public async Task ProjItemsFileNameNotMatchingShproj_Bug20571 ()
{
string solFile = Util.GetSampleProject ("SharedProjectTestBug20571", "SharedProjectTest.sln");
- Solution sol = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
- Assert.AreEqual (3, sol.GetAllProjects ().Count());
+ Assert.AreEqual (3, sol.GetAllProjects ().Count ());
- var pc1 = (DotNetProject) sol.FindProjectByName ("Console1");
+ var pc1 = (DotNetProject)sol.FindProjectByName ("Console1");
Assert.IsNotNull (pc1);
- var pc2 = (DotNetProject) sol.FindProjectByName ("Console2");
+ var pc2 = (DotNetProject)sol.FindProjectByName ("Console2");
Assert.IsNotNull (pc2);
- var pcs = (SharedAssetsProject) sol.FindProjectByName ("Shared");
+ var pcs = (SharedAssetsProject)sol.FindProjectByName ("Shared");
Assert.IsNotNull (pcs);
Assert.IsTrue (pc1.References.Any (r => r.Reference == "Shared"));
@@ -390,10 +390,10 @@ namespace MonoDevelop.Projects
await pc2.SaveAsync (Util.GetMonitor ());
- Solution sol2 = (Solution) await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName);
+ Solution sol2 = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), sol.FileName);
sol.Dispose ();
- pc2 = (DotNetProject) sol2.FindProjectByName ("Console2");
+ pc2 = (DotNetProject)sol2.FindProjectByName ("Console2");
Assert.IsNotNull (pc2);
Assert.IsTrue (pc2.References.Any (r => r.Reference == "Shared"));
@@ -409,12 +409,12 @@ namespace MonoDevelop.Projects
string projFile = Util.GetSampleProject ("shared-project-from-vs", "TestApp.shproj");
var p = await Services.ProjectService.ReadSolutionItem (Util.GetMonitor (), projFile);
Assert.IsInstanceOf<SharedAssetsProject> (p);
- var sp = (SharedAssetsProject) p;
+ var sp = (SharedAssetsProject)p;
var refProj = File.ReadAllText (projFile);
var refItems = File.ReadAllText (sp.ProjItemsPath);
- await p.SaveAsync (Util.GetMonitor());
+ await p.SaveAsync (Util.GetMonitor ());
var savedProj = File.ReadAllText (projFile);
var savedItems = File.ReadAllText (sp.ProjItemsPath);
@@ -422,6 +422,32 @@ namespace MonoDevelop.Projects
Assert.AreEqual (refProj, savedProj);
Assert.AreEqual (refItems, savedItems);
}
+
+ [Test]
+ public async Task Bug39405_GetSourceFilesAsyncAfterAddingNewFile ()
+ {
+ string solFile = Util.GetSampleProject ("SharedProjectTest", "SharedProjectTest.sln");
+ Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile);
+
+ var pc1 = sol.FindProjectByName ("Console1");
+ Assert.IsNotNull (pc1);
+
+ var pcs = (SharedAssetsProject)sol.FindProjectByName ("Shared");
+ Assert.IsNotNull (pcs);
+
+ Assert.AreEqual (4, sol.GetAllProjects ().Count ());
+
+ var sourceFiles = await pc1.GetSourceFilesAsync (ConfigurationSelector.Default);
+ Assert.IsFalse (sourceFiles.Any (pf => pf.Name.EndsWith ("NewClass.cs", System.StringComparison.Ordinal)), "Source files list already has NewClass.cs");
+
+ pcs.AddFile ("NewClass.cs");
+ //IDE after adding file saves project
+ await pcs.SaveAsync (Util.GetMonitor ());
+
+ sourceFiles = await pc1.GetSourceFilesAsync (ConfigurationSelector.Default);
+
+ Assert.IsTrue (sourceFiles.Any (pf => pf.Name.EndsWith ("NewClass.cs", System.StringComparison.Ordinal)), "Source files list doesn't contain NewClass.cs");
+ }
}
}
diff --git a/main/tests/UnitTests/MonoDevelop.SourceEditor/JSonIndentEngineTests.cs b/main/tests/UnitTests/MonoDevelop.SourceEditor/JSonIndentEngineTests.cs
index a0b75b1cd6..dc7cb77f4b 100644
--- a/main/tests/UnitTests/MonoDevelop.SourceEditor/JSonIndentEngineTests.cs
+++ b/main/tests/UnitTests/MonoDevelop.SourceEditor/JSonIndentEngineTests.cs
@@ -112,6 +112,22 @@ $
Assert.AreEqual (indentString, engine.ThisLineIndent);
Assert.AreEqual (indentString, engine.NextLineIndent);
}
+
+ /// <summary>
+ /// Bug 40892 - json indenter should not indent multi-line strings
+ /// </summary>
+ [Test]
+ public void TestBug40892 ()
+ {
+ var engine = CreateEngine (
+ @"
+{
+ ""test"":""
+$
+");
+ Assert.AreEqual ("", engine.ThisLineIndent);
+ Assert.AreEqual ("", engine.NextLineIndent);
+ }
}
}
diff --git a/main/tests/UnitTests/TestBase.cs b/main/tests/UnitTests/TestBase.cs
index 6906543080..a037704338 100644
--- a/main/tests/UnitTests/TestBase.cs
+++ b/main/tests/UnitTests/TestBase.cs
@@ -81,7 +81,7 @@ namespace UnitTests
Environment.SetEnvironmentVariable ("MONO_ADDINS_REGISTRY", rootDir);
Environment.SetEnvironmentVariable ("XDG_CONFIG_HOME", rootDir);
Runtime.Initialize (true);
- Xwt.Application.Initialize ();
+ Xwt.Application.Initialize (Xwt.ToolkitType.Gtk);
Gtk.Application.Init ();
DesktopService.Initialize ();
global::MonoDevelop.Projects.Services.ProjectService.DefaultTargetFramework
diff --git a/main/tests/UnitTests/UnitTests.csproj b/main/tests/UnitTests/UnitTests.csproj
index 42fe997a13..de8c5306f0 100644
--- a/main/tests/UnitTests/UnitTests.csproj
+++ b/main/tests/UnitTests/UnitTests.csproj
@@ -208,6 +208,11 @@
<Project>{A7A4246D-CEC4-42DF-A3C1-C31B9F51C4EC}</Project>
<Name>MonoDevelop.UnitTesting</Name>
</ProjectReference>
+ <ProjectReference Include="..\..\external\xwt\Xwt.Gtk\Xwt.Gtk.csproj">
+ <Project>{C3887A93-B2BD-4097-8E2F-3A063EFF32FD}</Project>
+ <Name>Xwt.Gtk</Name>
+ <Private>False</Private>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<Compile Include="Util.cs" />
diff --git a/main/tests/UserInterfaceTests/Controllers/NewFileController.cs b/main/tests/UserInterfaceTests/Controllers/NewFileController.cs
index b4e8879936..e5c3e7050b 100644
--- a/main/tests/UserInterfaceTests/Controllers/NewFileController.cs
+++ b/main/tests/UserInterfaceTests/Controllers/NewFileController.cs
@@ -74,7 +74,7 @@ namespace UserInterfaceTests
public bool SelectFileTypeCategory (string fileTypeCategory, string fileTypeCategoryRoot = "C#")
{
- var openChild = Session.ClickElement (c => categoryViewQuery (c).Text (fileTypeCategoryRoot));
+ Session.ClickElement (c => categoryViewQuery (c).Text (fileTypeCategoryRoot));
var resultParent = Session.SelectElement (c => categoryViewQuery (c).Text (fileTypeCategoryRoot).Children ().Text (fileTypeCategory));
var result = Session.SelectElement (c => categoryViewQuery (c).Text (fileTypeCategory)) &&
Session.WaitForElement (c => categoryViewQuery (c).Text (fileTypeCategory).Selected ()).Length > 0;
diff --git a/main/tests/UserInterfaceTests/Controllers/NewProjectController.cs b/main/tests/UserInterfaceTests/Controllers/NewProjectController.cs
index 05719054c0..27bddb8bae 100644
--- a/main/tests/UserInterfaceTests/Controllers/NewProjectController.cs
+++ b/main/tests/UserInterfaceTests/Controllers/NewProjectController.cs
@@ -38,9 +38,6 @@ namespace UserInterfaceTests
get { return TestService.Session; }
}
- Func<AppQuery, AppQuery> templateCategoriesTreeViewQuery = c => c.TreeView ().Marked ("templateCategoriesTreeView");
- Func<AppQuery, AppQuery> templatesTreeViewQuery = c => c.TreeView ().Marked ("templatesTreeView");
-
Func<AppQuery, AppQuery> previewTree = c => c.TreeView ().Marked ("folderTreeView").Model ("folderTreeStore__NodeName");
Func<AppQuery, AppQuery> templateCategoriesQuery = c => c.TreeView ().Marked ("templateCategoriesTreeView").Model ("templateCategoriesListStore__Name");
Func<AppQuery, AppQuery> templatesQuery = c => c.TreeView ().Marked ("templatesTreeView").Model ("templateListStore__Name");
diff --git a/main/tests/UserInterfaceTests/Controllers/NuGetController.cs b/main/tests/UserInterfaceTests/Controllers/NuGetController.cs
index 3425a7b31c..b864cad630 100644
--- a/main/tests/UserInterfaceTests/Controllers/NuGetController.cs
+++ b/main/tests/UserInterfaceTests/Controllers/NuGetController.cs
@@ -94,7 +94,7 @@ namespace UserInterfaceTests
takeScreenshot ("NuGet-Update-Is-"+isUpdate);
try {
WaitForNuGet.Success (packageOptions.PackageName, isUpdate ? NuGetOperations.Update : NuGetOperations.Add);
- } catch (TimeoutException e) {
+ } catch (TimeoutException) {
takeScreenshot ("Wait-For-NuGet-Operation-Failed");
throw;
}
diff --git a/main/tests/UserInterfaceTests/UserInterfaceTests.csproj b/main/tests/UserInterfaceTests/UserInterfaceTests.csproj
index 63d7d1963f..2b612cdd6a 100644
--- a/main/tests/UserInterfaceTests/UserInterfaceTests.csproj
+++ b/main/tests/UserInterfaceTests/UserInterfaceTests.csproj
@@ -21,6 +21,7 @@
<DefineConstants>DEBUG</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
diff --git a/main/tests/UserInterfaceTests/VersionControlTests/Git/GitBase.cs b/main/tests/UserInterfaceTests/VersionControlTests/Git/GitBase.cs
index 293015c5f9..aa76d1c033 100644
--- a/main/tests/UserInterfaceTests/VersionControlTests/Git/GitBase.cs
+++ b/main/tests/UserInterfaceTests/VersionControlTests/Git/GitBase.cs
@@ -234,7 +234,7 @@ namespace UserInterfaceTests
Session.WaitForElement (IdeQuery.GitConfigurationDialog);
TakeScreenShot ("Git-User-Not-Configured");
EnterGitUserConfig ("John Doe", "john.doe@example.com");
- } catch (TimeoutException e) { }
+ } catch (TimeoutException) { }
Session.WaitForElement (c => IdeQuery.GitConfigurationDialog (c));
TakeScreenShot ("Ok-Clicked");
}
diff --git a/main/tests/UserInterfaceTests/VersionControlTests/VCSBase.cs b/main/tests/UserInterfaceTests/VersionControlTests/VCSBase.cs
index e439d46580..a99e45862e 100644
--- a/main/tests/UserInterfaceTests/VersionControlTests/VCSBase.cs
+++ b/main/tests/UserInterfaceTests/VersionControlTests/VCSBase.cs
@@ -177,7 +177,7 @@ namespace UserInterfaceTests
Session.WaitForElement (c => c.Window ().Marked ("MonoDevelop.VersionControl.Git.UserGitConfigDialog"));
TakeScreenShot ("Git-User-Not-Configured");
EnterGitUserConfig ("John Doe", "john.doe@example.com");
- } catch (TimeoutException e) { }
+ } catch (TimeoutException) { }
}
protected void EnterGitUserConfig (string gitUser, string gitEmail)
diff --git a/main/tests/test-projects/msbuild-tests/aliased-references.csproj b/main/tests/test-projects/msbuild-tests/aliased-references.csproj
new file mode 100755
index 0000000000..495016caac
--- /dev/null
+++ b/main/tests/test-projects/msbuild-tests/aliased-references.csproj
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+ <ProjectGuid>{94F1D011-147F-43F6-9070-F95E5D4D36CB}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>borra104</RootNamespace>
+ <AssemblyName>borra104</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <Foo>Bar</Foo>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug</OutputPath>
+ <DefineConstants>DEBUG;</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <ExternalConsole>true</ExternalConsole>
+ <PlatformTarget>x86</PlatformTarget>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <ExternalConsole>true</ExternalConsole>
+ <PlatformTarget>x86</PlatformTarget>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System.Xml" />
+ <Reference Include="System.Data">
+ <Aliases>Foo</Aliases>
+ </Reference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project> \ No newline at end of file
diff --git a/version-checks b/version-checks
index ac4cfae7fa..933ca24bb5 100755
--- a/version-checks
+++ b/version-checks
@@ -25,7 +25,7 @@ DEP[1]=heap-shot
DEP_NAME[1]=HEAPSHOT
DEP_PATH[1]=${top_srcdir}/../heap-shot
DEP_MODULE[1]=git://github.com/mono/heap-shot.git
-DEP_NEEDED_VERSION[1]=786a4de7d7091e71f9b10756e94ec1eb7ee86b39
+DEP_NEEDED_VERSION[1]=c3acb21cafd80302786aee67c2f2c8a368a9baca
DEP_BRANCH_AND_REMOTE[1]="master origin/master"
# other dependencies