diff options
author | Vsevolod Kukol <sevoku@xamarin.com> | 2016-05-23 15:13:46 +0300 |
---|---|---|
committer | Vsevolod Kukol <sevoku@xamarin.com> | 2016-05-23 15:13:46 +0300 |
commit | 3d429dc136049b292ec531922d12554162806ce7 (patch) | |
tree | c5a945623d384bca1e90cf76334c1da077a5c3a2 /main | |
parent | 09e9871fdac14cae9e86a2f8c264206c7f5589c5 (diff) | |
parent | f019727ae2405f91cf399aa7e960eb1b102fce78 (diff) |
Merge remote-tracking branch 'origin/master' into main-menu-redesign
Diffstat (limited to 'main')
419 files changed, 7344 insertions, 6794 deletions
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<TKey, TElement>", 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<TKey, TElement>", 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<" + Highlight ("in", colorStyle.KeywordIteration) + " T> {}"); + result.AddCategory (GettextCatalog.GetString ("Form"), + GettextCatalog.GetString ("{0} IMyInterface< {1} T> {}", 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<" + Highlight ("in", colorStyle.KeywordIteration) + " T> {}" + 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<{1} T> {{}}", + 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<" + Highlight ("out", colorStyle.KeywordParameter) + " T> {}"); + result.AddCategory (GettextCatalog.GetString ("Form"), + GettextCatalog.GetString ("{0} IMyInterface<{1} T> {}", 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<" + Highlight ("out", colorStyle.KeywordParameter) + " T> {}" - ); + result.AddCategory (GettextCatalog.GetString ("Form"), + GettextCatalog.GetString ("{0} parameter-name\n\nor\n\n{1} IMyInterface<{0} T> {{}}", + 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 <b>SomeFile.txt</b></property> + <property name="LabelProp" translatable="yes">A merge conflict has been detected in file <b>SomeFile.txt</b></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"><b>Reason</b></property> + <property name="LabelProp" translatable="yes"><b>Reason</b></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"><small><span color='red'>Invalid URL</span></small></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 |