Browse Source

Merge branch 'master' into newNR.

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
9a405f1499
  1. 5
      README.txt
  2. 4
      src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanel.xaml.cs
  3. 230
      src/AddIns/BackendBindings/Python/PythonBinding/Project/Resources/Python.xshd
  4. 368
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Resources/Ruby.xshd
  5. 1
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/ClassCanvas.csproj
  6. 4
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs
  7. 21
      src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/XPathNavigatorExtensions.cs
  8. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  9. 2
      src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs
  10. 6
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeRegisteredPackageRepositories.cs
  11. 21
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs
  12. 8
      src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceViewModel.cs
  13. 5
      src/AddIns/Misc/PackageManagement/Project/Src/PackageFromRepository.cs
  14. 30
      src/AddIns/Misc/PackageManagement/Project/Src/PackageLicenseViewModel.cs
  15. 6
      src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs
  16. 2
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  17. 6
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesView.xaml
  18. 2
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  19. 7
      src/AddIns/Misc/PackageManagement/Project/Src/ProjectTemplatePackageRepositoryCache.cs
  20. 2
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageRepositories.cs
  21. 4
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs
  22. 15
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs
  23. 9
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs
  24. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  25. 4
      src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs
  26. 55
      src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs
  27. 11
      src/AddIns/Misc/PackageManagement/Test/Src/LicenseAcceptanceViewModelTests.cs
  28. 4
      src/AddIns/Misc/PackageManagement/Test/Src/ManagePackagesViewModelTests.cs
  29. 12
      src/AddIns/Misc/PackageManagement/Test/Src/PackageFromRepositoryTests.cs
  30. 24
      src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs
  31. 23
      src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs
  32. 18
      src/AddIns/Misc/PackageManagement/Test/Src/ProjectTemplatePackageRepositoryCacheTests.cs
  33. 14
      src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageRepositoriesTests.cs
  34. 24
      src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs
  35. 80
      src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackagesViewModelTests.cs
  36. 44
      src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchAndReplacePanel.cs
  37. 21
      src/AddIns/Misc/SearchAndReplace/Project/SearchOptions.cs
  38. 16
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs
  39. 3
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeSupport.cs
  40. 2
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HtmlClipboard.cs
  41. 4
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchCommands.cs
  42. 4
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchPanel.cs
  43. 14
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

5
README.txt

@ -30,7 +30,8 @@ Extended Requirements (building SharpDevelop) @@ -30,7 +30,8 @@ Extended Requirements (building SharpDevelop)
- Windows SDK 7.1 (?? not sure if this still is necessary...)
- Windows SDK 7.0 (optional; C++ compiler needed for profiler)
- Windows PowerShell
- if you have cloned the SD git repository: git must be available on your PATH
Libraries and integrated tools:
AvalonDock: New BSD License (BSD) (thanks to Adolfo Marinucci)
GraphSharp
@ -70,4 +71,4 @@ SharpDevelop Contributors: @@ -70,4 +71,4 @@ SharpDevelop Contributors:
Siegfried Pammer
Peter Forstmeier (SharpDevelop Reports)
(for a full list see https://github.com/icsharpcode/SharpDevelop/wiki/Contributors)
(for a full list see https://github.com/icsharpcode/SharpDevelop/wiki/Contributors)

4
src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanel.xaml.cs

@ -36,12 +36,12 @@ namespace ICSharpCode.CodeAnalysis @@ -36,12 +36,12 @@ namespace ICSharpCode.CodeAnalysis
}
public ProjectProperty<string> CodeAnalysisRuleAssemblies {
get { return GetProperty("CodeAnalysisRuleAssemblies","",TextBoxEditMode.EditEvaluatedProperty); }
get { return GetProperty("CodeAnalysisRuleAssemblies", "", TextBoxEditMode.EditEvaluatedProperty); }
}
public ProjectProperty<string> CodeAnalysisRules {
get { return GetProperty("CodeAnalysisRules","",TextBoxEditMode.EditEvaluatedProperty); }
get { return GetProperty("CodeAnalysisRules", "", TextBoxEditMode.EditRawProperty); }
}
#region Rule Assemblies Property

230
src/AddIns/BackendBindings/Python/PythonBinding/Project/Resources/Python.xshd

@ -1,105 +1,135 @@ @@ -1,105 +1,135 @@
<SyntaxDefinition name="Python" extensions=".py">
<Properties>
<Property name="LineComment" value="#"/>
</Properties>
<Digits name="Digits" color="DarkBlue"/>
<SyntaxDefinition name="Python" extensions=".py" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
<RuleSets>
<RuleSet ignorecase="false">
<Delimiters>()[]{}@,:.`=;+-*/% &amp;|^&gt;&lt;</Delimiters>
<Span name="DocComment" color="Green">
<Begin>"""</Begin>
<End>"""</End>
</Span>
<Span name="SingleQuoteDocComment" color="Green">
<Begin>'''</Begin>
<End>'''</End>
</Span>
<Color name="Digits" foreground="DarkBlue" exampleText="0123456789" />
<Color name="DocComment" foreground="Green" exampleText='""" comment' />
<Color name="SingleQuoteDocComment" foreground="Green" exampleText="''' comment" />
<Color name="LineComment" foreground="Green" exampleText="# comment" />
<Color name="String" foreground="Blue" exampleText='name = "Joe"' />
<Color name="Char" foreground="Magenta" exampleText="char linefeed = '\n'" />
<Color name="Punctuation" exampleText="a(b.c);" />
<Color name="MethodCall" fontWeight="bold" foreground="MidnightBlue" exampleText="method(" />
<Color name="BuiltInStatements" fontWeight="bold" foreground="MidnightBlue" exampleText="print 'hello'" />
<Color name="ClassStatement" foreground="Blue" fontWeight="bold" exampleText="class Foo: pass" />
<Color name="ExceptionHandlingStatements" fontWeight="bold" foreground="Teal" exampleText="raise 'error'" />
<Color name="FunctionDefinition" fontWeight="bold" foreground="Blue" exampleText="def MyFunction" />
<Color name="Imports" fontWeight="bold" foreground="Green" exampleText="import System.Xml" />
<Color name="IterationStatements" fontWeight="bold" foreground="Blue" exampleText="for num in range(10,20):" />
<Color name="JumpStatements" foreground="Navy" exampleText="return val" />
<Color name="OperatorStatements" fontWeight="bold" foreground="DarkCyan" exampleText="not(a &amp;&amp; b)" />
<Color name="PassStatement" foreground="Gray" exampleText="pass" />
<Color name="NullStatement" foreground="Gray" exampleText="return None" />
<Color name="SelectionStatements" fontWeight="bold" foreground="Blue" exampleText="if (a):" />
<Color name="WithStatement" foreground="DarkViolet" exampleText='with open("a.txt") as file:' />
<Span name="LineComment" stopateol="true" color="Green">
<Begin>#</Begin>
</Span>
<Span name="String" stopateol="true" color="Blue" escapecharacter="\">
<Begin>"</Begin>
<End>"</End>
</Span>
<Span name="Char" stopateol="true" color="Magenta" escapecharacter="\">
<Begin>'</Begin>
<End>'</End>
</Span>
<MarkPrevious bold="true" color="MidnightBlue">(</MarkPrevious>
<Property name="LineComment" value="#"/>
<KeyWords name="BuiltInStatements" bold="true" color="MidnightBlue">
<Key word="assert"/>
<Key word="del"/>
<Key word="exec"/>
<Key word="global"/>
<Key word="lambda"/>
<Key word="print"/>
</KeyWords>
<RuleSet ignoreCase="false">
<KeyWords name="ClassStatement" color="Blue" bold="true">
<Key word="class"/>
</KeyWords>
<KeyWords name="ExceptionHandlingStatements" bold="true" color="Teal">
<Key word="except"/>
<Key word="finally"/>
<Key word="raise"/>
<Key word="try"/>
</KeyWords>
<KeyWords name="FunctionDefinition" bold="true" color="Blue">
<Key word="def"/>
</KeyWords>
<KeyWords name="Imports" bold="true" color="Green">
<Key word="import"/>
<Key word="from"/>
</KeyWords>
<KeyWords name="IterationStatements" bold="true" color="Blue">
<Key word="for"/>
<Key word="in"/>
<Key word="while"/>
</KeyWords>
<KeyWords name="JumpStatements" color="Navy">
<Key word="break"/>
<Key word="continue"/>
<Key word="yield"/>
<Key word="return"/>
</KeyWords>
<KeyWords name="OperatorStatements" bold="true" color="DarkCyan">
<Key word="and"/>
<Key word="as"/>
<Key word="is"/>
<Key word="not"/>
<Key word="or"/>
</KeyWords>
<KeyWords name="PassStatement" color="Gray">
<Key word="pass"/>
</KeyWords>
<KeyWords name="SelectionStatements" bold="true" color="Blue">
<Key word="elif"/>
<Key word="else"/>
<Key word="if"/>
</KeyWords>
<KeyWords name="WithStatement" color="DarkViolet">
<Key word="with"/>
</KeyWords>
</RuleSet>
</RuleSets>
<Span color="DocComment" multiline="true">
<Begin>"""</Begin>
<End>"""</End>
</Span>
<Span color="SingleQuoteDocComment" multiline="true">
<Begin>'''</Begin>
<End>'''</End>
</Span>
<Span color="LineComment">
<Begin>\#</Begin>
</Span>
<Span color="String">
<Begin>"</Begin>
<End>"</End>
<RuleSet>
<!-- span for escape sequences -->
<Span begin="\\" end="."/>
</RuleSet>
</Span>
<Span color="Char">
<Begin>'</Begin>
<End>'</End>
<RuleSet>
<!-- span for escape sequences -->
<Span begin="\\" end="."/>
</RuleSet>
</Span>
<Keywords color="BuiltInStatements">
<Word>assert</Word>
<Word>del</Word>
<Word>exec</Word>
<Word>global</Word>
<Word>lambda</Word>
<Word>print</Word>
</Keywords>
<Keywords color="ClassStatement">
<Word>class</Word>
</Keywords>
<Keywords color="ExceptionHandlingStatements">
<Word>except</Word>
<Word>finally</Word>
<Word>raise</Word>
<Word>try</Word>
</Keywords>
<Keywords color="FunctionDefinition">
<Word>def</Word>
</Keywords>
<Keywords color="Imports">
<Word>import</Word>
<Word>from</Word>
</Keywords>
<Keywords color="IterationStatements">
<Word>for</Word>
<Word>in</Word>
<Word>while</Word>
</Keywords>
<Keywords color="JumpStatements">
<Word>break</Word>
<Word>continue</Word>
<Word>yield</Word>
<Word>return</Word>
</Keywords>
<Keywords color="OperatorStatements">
<Word>and</Word>
<Word>as</Word>
<Word>is</Word>
<Word>not</Word>
<Word>or</Word>
</Keywords>
<Keywords color="PassStatement">
<Word>pass</Word>
</Keywords>
<Keywords color="SelectionStatements">
<Word>elif</Word>
<Word>else</Word>
<Word>if</Word>
</Keywords>
<Keywords color="WithStatement">
<Word>with</Word>
</Keywords>
<Keywords color="NullStatement">
<Word>None</Word>
</Keywords>
<Rule color="MethodCall">\b[\d\w_]+(?=(\s*\())</Rule>
<Rule color="Digits">\b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?</Rule>
<Rule color="Punctuation">
[?,.;()\[\]{}+\-/%*&lt;&gt;^+~!|&amp;]+
</Rule>
</RuleSet>
</SyntaxDefinition>

368
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Resources/Ruby.xshd

@ -1,174 +1,202 @@ @@ -1,174 +1,202 @@
<SyntaxDefinition name="Ruby" extensions=".rb">
<SyntaxDefinition name="Ruby" extensions=".rb" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
<Properties>
<Property name="LineComment" value="#"/>
</Properties>
<Digits name="Digits" color="DarkBlue"/>
<Color name="Digits" foreground="DarkBlue" exampleText="0123456789" />
<Color name="Char" foreground="Magenta" exampleText="char linefeed = '\n'" />
<Color name="DocComment" foreground="Green" exampleText='""" comment' />
<Color name="MultiLineComment" foreground="Green" exampleText="= comment" />
<Color name="LineComment" foreground="Green" exampleText="// comment" />
<Color name="String" foreground="Blue" exampleText='name = "Joe"' />
<Color name="Punctuation" exampleText="a(b.c);" />
<Color name="MethodCall" fontWeight="bold" foreground="MidnightBlue" exampleText="method(" />
<Color name="BuiltInStatements" fontWeight="bold" foreground="MidnightBlue" exampleText="print 'hello'" />
<Color name="ClassStatement" foreground="Blue" fontWeight="bold" exampleText="class Foo" />
<Color name="ExceptionHandlingStatements" fontWeight="bold" foreground="Teal" exampleText="raise 'error'" />
<Color name="FunctionDefinition" fontWeight="bold" foreground="Blue" exampleText="def MyFunction" />
<Color name="Imports" fontWeight="bold" foreground="Green" exampleText='require "System.Xml"' />
<Color name="IterationStatements" fontWeight="bold" foreground="Blue" exampleText="for i in 0..5" />
<Color name="JumpStatements" foreground="Navy" exampleText="return val" />
<Color name="OperatorStatements" fontWeight="bold" foreground="DarkCyan" exampleText="not(a &amp;&amp; b)" />
<Color name="NullStatement" foreground="Gray" exampleText="return nil" />
<Color name="SelectionStatements" fontWeight="bold" foreground="Blue" exampleText="if (a)" />
<Color name="BooleanStatements" foreground="DarkViolet" exampleText="return true" />
<Color name="DefinedStatement" foreground="DarkViolet" exampleText="defined? a" />
<Color name="ClassSelfStatement" foreground="DarkViolet" exampleText="self.a = ''" />
<Color name="ClassInheritanceStatement" foreground="DarkViolet" exampleText="super(value)" />
<RuleSets>
<RuleSet ignorecase="false">
<Delimiters>()[]{}@,:.`=;+-*/%~ &amp;|^&gt;&lt;</Delimiters>
<Span name="Char" stopateol="true" color="Magenta" escapecharacter="\">
<Begin>'</Begin>
<End>'</End>
</Span>
<Span name="DocComment" color="Green">
<Begin>"""</Begin>
<End>"""</End>
</Span>
<Span name="MultiLineComment" color="Green">
<Begin>=begin</Begin>
<End>=end</End>
</Span>
<Span name="LineComment" stopateol="true" color="Green">
<Begin>#</Begin>
</Span>
<Span name="String" stopateol="true" color="Blue" escapecharacter="\">
<Begin>"</Begin>
<End>"</End>
</Span>
<MarkPrevious bold="true" color="MidnightBlue">(</MarkPrevious>
<Property name="LineComment" value="#"/>
<KeyWords name="BuiltInStatements" bold="true" color="MidnightBlue">
<Key word="abort"/>
<Key word="Array"/>
<Key word="at_exit"/>
<Key word="autoload"/>
<Key word="binding"/>
<Key word="callcc"/>
<Key word="caller"/>
<Key word="chomp"/>
<Key word="chop"/>
<Key word="eval"/>
<Key word="exec"/>
<Key word="exit"/>
<Key word="fail"/>
<Key word="Float"/>
<Key word="fork"/>
<Key word="format"/>
<Key word="gets"/>
<Key word="global_variables"/>
<Key word="gsub"/>
<Key word="Integer"/>
<Key word="lambda"/>
<Key word="proc"/>
<Key word="load"/>
<Key word="local_variables"/>
<Key word="loop"/>
<Key word="open"/>
<Key word="p"/>
<Key word="print"/>
<Key word="print"/>
<Key word="printf"/>
<Key word="putc"/>
<Key word="puts"/>
<Key word="rand"/>
<Key word="readline"/>
<Key word="scan"/>
<Key word="select"/>
<Key word="set_trace_func"/>
<Key word="sleep"/>
<Key word="split"/>
<Key word="sprintf"/>
<Key word="srand"/>
<Key word="String"/>
<Key word="syscall"/>
<Key word="system"/>
<Key word="sub"/>
<Key word="test"/>
<Key word="throw"/>
<Key word="trace_var"/>
<Key word="trap"/>
<Key word="untrace_var"/>
</KeyWords>
<KeyWords name="ClassStatement" color="Blue" bold="true">
<Key word="class"/>
<Key word="module"/>
<Key word="public"/>
<Key word="protected"/>
<Key word="private"/>
</KeyWords>
<KeyWords name="ExceptionHandlingStatements" bold="true" color="Teal">
<Key word="begin"/>
<Key word="rescue"/>
<Key word="ensure"/>
<Key word="raise"/>
<Key word="catch"/>
</KeyWords>
<KeyWords name="FunctionDefinition" bold="true" color="Blue">
<Key word="def"/>
<Key word="end"/>
<Key word="undef"/>
</KeyWords>
<KeyWords name="Imports" bold="true" color="Green">
<Key word="import"/>
<Key word="alias"/>
</KeyWords>
<KeyWords name="IterationStatements" bold="true" color="Blue">
<Key word="for"/>
<Key word="do"/>
<Key word="in"/>
<Key word="while"/>
<Key word="until"/>
</KeyWords>
<KeyWords name="JumpStatements" color="Navy">
<Key word="break"/>
<Key word="yield"/>
<Key word="redo"/>
<Key word="return"/>
<Key word="retry"/>
<Key word="next"/>
</KeyWords>
<KeyWords name="OperatorStatements" bold="true" color="DarkCyan">
<Key word="and"/>
<Key word="not"/>
<Key word="or"/>
</KeyWords>
<KeyWords name="NullStatement" color="Gray">
<Key word="nil"/>
</KeyWords>
<KeyWords name="SelectionStatements" bold="true" color="Blue">
<Key word="elsif"/>
<Key word="else"/>
<Key word="if"/>
<Key word="then"/>
<Key word="case"/>
<Key word="unless"/>
</KeyWords>
<KeyWords name="BooleanStatements" color="DarkViolet">
<Key word="true"/>
<Key word="false"/>
</KeyWords>
<KeyWords name="DefinedStatement" color="DarkViolet">
<Key word="defined"/>
</KeyWords>
<KeyWords name="ClassSelfStatement" color="DarkViolet">
<Key word="self"/>
</KeyWords>
<KeyWords name="ClassInheritanceStatement" color="DarkViolet">
<Key word="super"/>
</KeyWords>
</RuleSet>
</RuleSets>
<RuleSet ignoreCase="false">
<Span color="Char">
<Begin>'</Begin>
<End>'</End>
<RuleSet>
<!-- span for escape sequences -->
<Span begin="\\" end="."/>
</RuleSet>
</Span>
<Span color="DocComment" multiline="true">
<Begin>"""</Begin>
<End>"""</End>
</Span>
<Span color="MultiLineComment" multiline="true">
<Begin>=begin</Begin>
<End>=end</End>
</Span>
<Span color="LineComment">
<Begin>\#</Begin>
</Span>
<Span color="String">
<Begin>"</Begin>
<End>"</End>
<RuleSet>
<!-- span for escape sequences -->
<Span begin="\\" end="."/>
</RuleSet>
</Span>
<Keywords color="BuiltInStatements">
<Word>abort</Word>
<Word>Array</Word>
<Word>at_exit</Word>
<Word>autoload</Word>
<Word>binding</Word>
<Word>callcc</Word>
<Word>caller</Word>
<Word>chomp</Word>
<Word>chop</Word>
<Word>eval</Word>
<Word>exec</Word>
<Word>exit</Word>
<Word>fail</Word>
<Word>Float</Word>
<Word>fork</Word>
<Word>format</Word>
<Word>gets</Word>
<Word>global_variables</Word>
<Word>gsub</Word>
<Word>Integer</Word>
<Word>lambda</Word>
<Word>proc</Word>
<Word>load</Word>
<Word>local_variables</Word>
<Word>loop</Word>
<Word>open</Word>
<Word>p</Word>
<Word>print</Word>
<Word>print</Word>
<Word>printf</Word>
<Word>putc</Word>
<Word>puts</Word>
<Word>rand</Word>
<Word>readline</Word>
<Word>scan</Word>
<Word>select</Word>
<Word>set_trace_func</Word>
<Word>sleep</Word>
<Word>split</Word>
<Word>sprintf</Word>
<Word>srand</Word>
<Word>String</Word>
<Word>syscall</Word>
<Word>system</Word>
<Word>sub</Word>
<Word>test</Word>
<Word>throw</Word>
<Word>trace_var</Word>
<Word>trap</Word>
<Word>untrace_var</Word>
</Keywords>
<Keywords color="ClassStatement">
<Word>class</Word>
<Word>module</Word>
<Word>public</Word>
<Word>protected</Word>
<Word>private</Word>
</Keywords>
<Keywords color="ExceptionHandlingStatements">
<Word>begin</Word>
<Word>rescue</Word>
<Word>ensure</Word>
<Word>raise</Word>
<Word>catch</Word>
</Keywords>
<Keywords color="FunctionDefinition">
<Word>def</Word>
<Word>end</Word>
<Word>undef</Word>
</Keywords>
<Keywords color="Imports">
<Word>require</Word>
<Word>alias</Word>
</Keywords>
<Keywords color="IterationStatements">
<Word>for</Word>
<Word>do</Word>
<Word>in</Word>
<Word>while</Word>
<Word>until</Word>
</Keywords>
<Keywords color="JumpStatements">
<Word>break</Word>
<Word>yield</Word>
<Word>redo</Word>
<Word>return</Word>
<Word>retry</Word>
<Word>next</Word>
</Keywords>
<Keywords color="OperatorStatements">
<Word>and</Word>
<Word>not</Word>
<Word>or</Word>
</Keywords>
<Keywords color="NullStatement">
<Word>nil</Word>
</Keywords>
<Keywords color="SelectionStatements">
<Word>elsif</Word>
<Word>else</Word>
<Word>if</Word>
<Word>then</Word>
<Word>case</Word>
<Word>unless</Word>
</Keywords>
<Keywords color="BooleanStatements">
<Word>true</Word>
<Word>false</Word>
</Keywords>
<Keywords color="DefinedStatement">
<Word>defined</Word>
</Keywords>
<Keywords color="ClassSelfStatement">
<Word>self</Word>
</Keywords>
<Keywords color="ClassInheritanceStatement">
<Word>super</Word>
</Keywords>
<Rule color="MethodCall">\b[\d\w_]+(?=(\s*\())</Rule>
<Rule color="Digits">\b0[xX][0-9a-fA-F]+|(\b\d+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?</Rule>
<Rule color="Punctuation">
[?,.;()\[\]{}+\-/%*&lt;&gt;^+~!|&amp;]+
</Rule>
</RuleSet>
</SyntaxDefinition>

1
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/ClassCanvas.csproj

@ -78,6 +78,7 @@ @@ -78,6 +78,7 @@
<Compile Include="Shapes\RouteInheritanceShape.cs" />
<Compile Include="Shapes\RouteShape.cs" />
<Compile Include="Shapes\PropertyShape.cs" />
<Compile Include="Src\XPathNavigatorExtensions.cs" />
<EmbeddedResource Include="Src\ClassCanvas.resx">
<DependentUpon>ClassCanvas.Designer.cs</DependentUpon>
</EmbeddedResource>

4
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/ClassCanvasItem.cs

@ -625,7 +625,7 @@ namespace ClassDiagram @@ -625,7 +625,7 @@ namespace ClassDiagram
{
base.LoadFromXml(navigator);
Collapsed = bool.Parse(navigator.GetAttribute("Collapsed", ""));
Collapsed = navigator.GetBooleanAttribute("Collapsed");
XPathNodeIterator compNI = navigator.Select("Compartments/Compartment");
while (compNI.MoveNext())
@ -634,7 +634,7 @@ namespace ClassDiagram @@ -634,7 +634,7 @@ namespace ClassDiagram
InteractiveHeaderedItem grp;
if (groupsByName.TryGetValue(compNav.GetAttribute("Name", ""), out grp))
{
grp.Collapsed = bool.Parse(compNav.GetAttribute("Collapsed", ""));
grp.Collapsed = compNav.GetBooleanAttribute("Collapsed");
}
}
}

21
src/AddIns/DisplayBindings/ClassDiagram/ClassCanvas/Src/XPathNavigatorExtensions.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Xml.XPath;
namespace ClassDiagram
{
public static class XPathNavigatorExtensions
{
public static bool GetBooleanAttribute(this XPathNavigator navigator, string name, string namespaceUri = "")
{
string attributeValue = navigator.GetAttribute(name, namespaceUri);
bool result = false;
if (bool.TryParse(attributeValue, out result)) {
return true;
}
return false;
}
}
}

2
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -149,6 +149,7 @@ @@ -149,6 +149,7 @@
<Compile Include="Src\EnvDTE\Window.cs" />
<Compile Include="Src\IClassKindUpdater.cs" />
<Compile Include="Src\IDocumentNamespaceCreator.cs" />
<Compile Include="Src\IPackageExtensions.cs" />
<Compile Include="Src\IProjectBuilder.cs" />
<Compile Include="Src\IProjectContentExtensions.cs" />
<Compile Include="Src\IVirtualMethodUpdater.cs" />
@ -220,6 +221,7 @@ @@ -220,6 +221,7 @@
<Compile Include="Src\ManagePackagesUserPrompts.cs" />
<Compile Include="Src\ManagePackagesViewTitle.cs" />
<Compile Include="Src\MSBuildBasedProjectExtensions.cs" />
<Compile Include="Src\PackageLicenseViewModel.cs" />
<Compile Include="Src\PackageManagementServiceProvider.cs" />
<Compile Include="Src\ProjectBuilder.cs" />
<Compile Include="Src\VirtualMethodUpdater.cs" />

2
src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs

@ -21,7 +21,7 @@ namespace ICSharpCode.PackageManagement @@ -21,7 +21,7 @@ namespace ICSharpCode.PackageManagement
: base(registeredPackageRepositories, packageViewModelFactory, taskFactory)
{
IsSearchable = true;
ShowPackageSources = registeredPackageRepositories.HasMultiplePackageSources;
ShowPackageSources = true;
}
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()

6
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeRegisteredPackageRepositories.cs

@ -70,9 +70,11 @@ namespace ICSharpCode.PackageManagement.Design @@ -70,9 +70,11 @@ namespace ICSharpCode.PackageManagement.Design
PackageSources.AddRange(sources);
}
public FakePackage AddFakePackageWithVersionToAggregrateRepository(string version)
public FakePackage AddFakePackageWithVersionToActiveRepository(string version)
{
return AddFakePackageWithVersionToAggregrateRepository("Test", version);
var package = FakePackage.CreatePackageWithVersion("Test", version);
FakeActiveRepository.FakePackages.Add(package);
return package;
}
public FakePackage AddFakePackageWithVersionToAggregrateRepository(string id, string version)

21
src/AddIns/Misc/PackageManagement/Project/Src/IPackageExtensions.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public static class IPackageExtensions
{
/// <summary>
/// Returns description if summary is missing.
/// </summary>
public static string SummaryOrDescription(this IPackage package)
{
if (String.IsNullOrEmpty(package.Summary))
return package.Description;
return package.Summary;
}
}
}

8
src/AddIns/Misc/PackageManagement/Project/Src/LicenseAcceptanceViewModel.cs

@ -10,14 +10,16 @@ namespace ICSharpCode.PackageManagement @@ -10,14 +10,16 @@ namespace ICSharpCode.PackageManagement
{
public class LicenseAcceptanceViewModel : ViewModelBase<LicenseAcceptanceViewModel>
{
IList<IPackage> packages;
IList<PackageLicenseViewModel> packages;
public LicenseAcceptanceViewModel(IEnumerable<IPackage> packages)
{
this.packages = packages.ToList();
this.packages = packages
.Select(p => new PackageLicenseViewModel(p))
.ToList();
}
public IEnumerable<IPackage> Packages {
public IEnumerable<PackageLicenseViewModel> Packages {
get { return packages; }
}

5
src/AddIns/Misc/PackageManagement/Project/Src/PackageFromRepository.cs

@ -169,5 +169,10 @@ namespace ICSharpCode.PackageManagement @@ -169,5 +169,10 @@ namespace ICSharpCode.PackageManagement
{
return package.GetSupportedFrameworks();
}
public override string ToString()
{
return package.ToString();
}
}
}

30
src/AddIns/Misc/PackageManagement/Project/Src/PackageLicenseViewModel.cs

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public class PackageLicenseViewModel : ViewModelBase<PackageLicenseViewModel>
{
IPackage package;
public PackageLicenseViewModel(IPackage package)
{
this.package = package;
}
public string Id {
get { return package.Id; }
}
public string Summary {
get { return package.SummaryOrDescription(); }
}
public Uri LicenseUrl {
get { return package.LicenseUrl; }
}
}
}

6
src/AddIns/Misc/PackageManagement/Project/Src/PackageRepositoryCache.cs

@ -69,13 +69,13 @@ namespace ICSharpCode.PackageManagement @@ -69,13 +69,13 @@ namespace ICSharpCode.PackageManagement
public IPackageRepository CreateAggregateRepository()
{
IEnumerable<IPackageRepository> allRepositories = CreateAllRepositories();
IEnumerable<IPackageRepository> allRepositories = CreateAllEnabledRepositories();
return CreateAggregateRepository(allRepositories);
}
IEnumerable<IPackageRepository> CreateAllRepositories()
IEnumerable<IPackageRepository> CreateAllEnabledRepositories()
{
foreach (PackageSource source in registeredPackageSources) {
foreach (PackageSource source in registeredPackageSources.GetEnabledPackageSources()) {
yield return CreateRepository(source.Source);
}
}

2
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

@ -130,7 +130,7 @@ namespace ICSharpCode.PackageManagement @@ -130,7 +130,7 @@ namespace ICSharpCode.PackageManagement
}
public string Summary {
get { return package.Summary; }
get { return package.SummaryOrDescription(); }
}
public SemanticVersion Version {

6
src/AddIns/Misc/PackageManagement/Project/Src/PackagesView.xaml

@ -310,7 +310,7 @@ @@ -310,7 +310,7 @@
<RowDefinition />
</Grid.RowDefinitions>
<Grid
Visibility="{Binding Path=IsSearchable, Converter={StaticResource BoolToVisibility}}">
Visibility="{Binding Path=ShowPackageSources, Converter={StaticResource BoolToVisibility}}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
@ -330,6 +330,7 @@ @@ -330,6 +330,7 @@
<TextBox
Grid.Row="1"
Grid.Column="0"
Visibility="{Binding Path=IsSearchable, Converter={StaticResource BoolToVisibility}}"
Text="{Binding Path=SearchTerms, UpdateSourceTrigger=PropertyChanged}">
<TextBox.InputBindings>
<KeyBinding
@ -340,7 +341,8 @@ @@ -340,7 +341,8 @@
<TextBlock
Grid.Row="1"
Grid.Column="1"
Margin="4">
Margin="4"
Visibility="{Binding Path=IsSearchable, Converter={StaticResource BoolToVisibility}}">
<Hyperlink
TextDecorations="{x:Null}"
Command="{Binding Path=SearchCommand}">

2
src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs

@ -345,7 +345,7 @@ namespace ICSharpCode.PackageManagement @@ -345,7 +345,7 @@ namespace ICSharpCode.PackageManagement
foreach (PackageSource packageSource in registeredPackageRepositories.PackageSources.GetEnabledPackageSources()) {
yield return packageSource;
}
if (registeredPackageRepositories.PackageSources.HasMultiplePackageSources) {
if (registeredPackageRepositories.PackageSources.HasMultipleEnabledPackageSources) {
yield return RegisteredPackageSourceSettings.AggregatePackageSource;
}
}

7
src/AddIns/Misc/PackageManagement/Project/Src/ProjectTemplatePackageRepositoryCache.cs

@ -41,11 +41,16 @@ namespace ICSharpCode.PackageManagement @@ -41,11 +41,16 @@ namespace ICSharpCode.PackageManagement
IEnumerable<IPackageRepository> GetRegisteredPackageRepositories()
{
foreach (PackageSource packageSource in registeredPackageSources.PackageSources) {
foreach (PackageSource packageSource in GetEnabledPackageSources()) {
yield return CreateRepository(packageSource.Source);
}
}
public IEnumerable<PackageSource> GetEnabledPackageSources()
{
return registeredPackageSources.PackageSources.GetEnabledPackageSources();
}
public ISharedPackageRepository CreateSharedRepository(IPackagePathResolver pathResolver, IFileSystem fileSystem, IFileSystem configSettingsFileSystem)
{
throw new NotImplementedException();

2
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageRepositories.cs

@ -43,7 +43,7 @@ namespace ICSharpCode.PackageManagement @@ -43,7 +43,7 @@ namespace ICSharpCode.PackageManagement
}
public bool HasMultiplePackageSources {
get { return registeredPackageSources.HasMultiplePackageSources; }
get { return registeredPackageSources.HasMultipleEnabledPackageSources; }
}
public PackageSource ActivePackageSource {

4
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs

@ -48,8 +48,8 @@ namespace ICSharpCode.PackageManagement @@ -48,8 +48,8 @@ namespace ICSharpCode.PackageManagement
get { return Count == 0; }
}
public bool HasMultiplePackageSources {
get { return Count > 1; }
public bool HasMultipleEnabledPackageSources {
get { return GetEnabledPackageSources().Count() > 1; }
}
public IEnumerable<PackageSource> GetEnabledPackageSources()

15
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs

@ -170,7 +170,7 @@ namespace ICSharpCode.PackageManagement @@ -170,7 +170,7 @@ namespace ICSharpCode.PackageManagement
}
public bool CanRemovePackageSource {
get { return selectedPackageSourceViewModel != null; }
get { return IsPackageSourceSelected(); }
}
void RemoveSelectedPackageSourceViewModel()
@ -192,10 +192,17 @@ namespace ICSharpCode.PackageManagement @@ -192,10 +192,17 @@ namespace ICSharpCode.PackageManagement
public bool CanMovePackageSourceUp {
get {
return HasAtLeastTwoPackageSources() && !IsFirstPackageSourceSelected();
return HasAtLeastTwoPackageSources() &&
IsPackageSourceSelected() &&
!IsFirstPackageSourceSelected();
}
}
bool IsPackageSourceSelected()
{
return selectedPackageSourceViewModel != null;
}
bool IsFirstPackageSourceSelected()
{
return selectedPackageSourceViewModel == packageSourceViewModels[0];
@ -210,7 +217,9 @@ namespace ICSharpCode.PackageManagement @@ -210,7 +217,9 @@ namespace ICSharpCode.PackageManagement
public bool CanMovePackageSourceDown {
get {
return HasAtLeastTwoPackageSources() && !IsLastPackageSourceSelected();
return HasAtLeastTwoPackageSources() &&
IsPackageSourceSelected() &&
!IsLastPackageSourceSelected();
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs

@ -18,7 +18,7 @@ namespace ICSharpCode.PackageManagement @@ -18,7 +18,7 @@ namespace ICSharpCode.PackageManagement
public UpdatedPackagesViewModel(
IPackageManagementSolution solution,
IRegisteredPackageRepositories registeredPackageRepositories,
UpdatedPackageViewModelFactory packageViewModelFactory,
UpdatedPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(
registeredPackageRepositories,
@ -26,14 +26,15 @@ namespace ICSharpCode.PackageManagement @@ -26,14 +26,15 @@ namespace ICSharpCode.PackageManagement
taskFactory)
{
this.selectedProjects = new PackageManagementSelectedProjects(solution);
ShowPackageSources = true;
}
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
{
try {
IPackageRepository aggregateRepository = RegisteredPackageRepositories.CreateAggregateRepository();
IQueryable<IPackage> installedPackages = GetInstalledPackages(aggregateRepository);
updatedPackages = new UpdatedPackages(installedPackages, aggregateRepository);
IPackageRepository repository = RegisteredPackageRepositories.ActiveRepository;
IQueryable<IPackage> installedPackages = GetInstalledPackages(repository);
updatedPackages = new UpdatedPackages(installedPackages, repository);
} catch (Exception ex) {
errorMessage = ex.Message;
}

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -134,6 +134,7 @@ @@ -134,6 +134,7 @@
<Compile Include="Src\Helpers\UsingHelper.cs" />
<Compile Include="Src\Helpers\UsingScopeHelper.cs" />
<Compile Include="Src\InstalledPackageViewModelTests.cs" />
<Compile Include="Src\IPackageExtensionsTests.cs" />
<Compile Include="Src\ManagePackagesCommandTests.cs" />
<Compile Include="Src\ConsolePackageActionRunnerTests.cs" />
<Compile Include="Src\DefaultProjectTemplatePackageSourceTests.cs" />

4
src/AddIns/Misc/PackageManagement/Test/Src/AvailablePackagesViewModelTests.cs

@ -221,13 +221,13 @@ namespace PackageManagement.Tests @@ -221,13 +221,13 @@ namespace PackageManagement.Tests
}
[Test]
public void ShowPackageSources_OnePackageSources_ReturnsFalse()
public void ShowPackageSources_OnePackageSources_ReturnsTrue()
{
CreateRegisteredPackageRepositories();
AddOnePackageSourceToRegisteredSources();
CreateViewModel(registeredPackageRepositories);
Assert.IsFalse(viewModel.ShowPackageSources);
Assert.IsTrue(viewModel.ShowPackageSources);
}
[Test]

55
src/AddIns/Misc/PackageManagement/Test/Src/IPackageExtensionsTests.cs

@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.SharpDevelop;
using ICSharpCode.PackageManagement.Design;
using NuGet;
using NUnit.Framework;
namespace PackageManagement.Tests
{
[TestFixture]
public class IPackageExtensionsTests
{
FakePackage package;
void CreatePackageWithSummary(string summary)
{
package = new FakePackage() { Summary = summary };
}
[Test]
public void SummaryOrDescription_PackageHasSummary_ReturnsSummary()
{
CreatePackageWithSummary("summary");
string result = package.SummaryOrDescription();
Assert.AreEqual("summary", result);
}
[Test]
public void SummaryOrDescription_PackageHasDescriptionButNullSummary_ReturnsDescription()
{
CreatePackageWithSummary(null);
package.Description = "description";
string result = package.SummaryOrDescription();
Assert.AreEqual("description", result);
}
[Test]
public void SummaryOrDescription_PackageHasDescriptionButEmptySummary_ReturnsDescription()
{
CreatePackageWithSummary(String.Empty);
package.Description = "description";
string result = package.SummaryOrDescription();
Assert.AreEqual("description", result);
}
}
}

11
src/AddIns/Misc/PackageManagement/Test/Src/LicenseAcceptanceViewModelTests.cs

@ -3,6 +3,8 @@ @@ -3,6 +3,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
@ -65,7 +67,14 @@ namespace PackageManagement.Tests @@ -65,7 +67,14 @@ namespace PackageManagement.Tests
{
CreateViewModelWithOnePackage();
CollectionAssert.AreEqual(packages, viewModel.Packages);
List<PackageLicenseViewModel> packageViewModels = viewModel.Packages.ToList();
PackageLicenseViewModel firstPackageViewModel = packageViewModels.FirstOrDefault();
FakePackage expectedPackage = packages[0];
Assert.AreEqual(1, packageViewModels.Count);
Assert.AreEqual(expectedPackage.Id, firstPackageViewModel.Id);
Assert.AreEqual(expectedPackage.LicenseUrl, firstPackageViewModel.LicenseUrl);
Assert.AreEqual(expectedPackage.SummaryOrDescription(), firstPackageViewModel.Summary);
}
[Test]

4
src/AddIns/Misc/PackageManagement/Test/Src/ManagePackagesViewModelTests.cs

@ -175,11 +175,11 @@ namespace PackageManagement.Tests @@ -175,11 +175,11 @@ namespace PackageManagement.Tests
Id = "Test",
Version = new SemanticVersion("2.0.0.0")
};
fakeRegisteredPackageRepositories.FakeAggregateRepository.FakePackages.Add(newPackage);
fakeRegisteredPackageRepositories.FakeActiveRepository.FakePackages.Add(newPackage);
CreateViewModel(fakeSolution);
List<FakePackage> expectedPackages = fakeRegisteredPackageRepositories.FakeAggregateRepository.FakePackages;
List<FakePackage> expectedPackages = fakeRegisteredPackageRepositories.FakeActiveRepository.FakePackages;
PackageCollectionAssert.AreEqual(expectedPackages, viewModel.UpdatedPackagesViewModel.PackageViewModels);
}

12
src/AddIns/Misc/PackageManagement/Test/Src/PackageFromRepositoryTests.cs

@ -395,5 +395,17 @@ namespace PackageManagement.Tests @@ -395,5 +395,17 @@ namespace PackageManagement.Tests
Assert.AreEqual(1, supportedFrameworks.Count);
Assert.AreEqual(expectedFramework, supportedFrameworks[0]);
}
[Test]
public void ToString_PackageHasIdAndVersion_ReturnsWrappedPackageToString()
{
CreatePackage();
fakePackage.Id = "MyPackage";
fakePackage.Version = new SemanticVersion("1.1");
string result = package.ToString();
Assert.AreEqual("MyPackage 1.1", result);
}
}
}

24
src/AddIns/Misc/PackageManagement/Test/Src/PackageRepositoryCacheTests.cs

@ -159,6 +159,30 @@ namespace PackageManagement.Tests @@ -159,6 +159,30 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedRepository, aggregateRepository);
}
[Test]
public void CreateAggregatePackageRepository_TwoRegisteredPackageSourcesButOneDisabled_ReturnsAggregateRepositoryCreatedWithOnlyEnabledPackageSource()
{
CreatePackageSources();
packageSourcesHelper.AddTwoPackageSources("Source1", "Source2");
packageSourcesHelper.RegisteredPackageSources[0].IsEnabled = false;
CreateCacheUsingPackageSources();
FakePackageRepository repository1 = AddFakePackageRepositoryForPackageSource("Source1");
FakePackageRepository repository2 = AddFakePackageRepositoryForPackageSource("Source2");
var expectedRepositories = new FakePackageRepository[] {
repository2
};
cache.CreateAggregateRepository();
IEnumerable<IPackageRepository> repositoriesUsedToCreateAggregateRepository =
fakePackageRepositoryFactory.RepositoriesPassedToCreateAggregateRepository;
var actualRepositoriesAsList = new List<IPackageRepository>(repositoriesUsedToCreateAggregateRepository);
IPackageRepository[] actualRepositories = actualRepositoriesAsList.ToArray();
CollectionAssert.AreEqual(expectedRepositories, actualRepositories);
}
[Test]
public void CreateAggregatePackageRepository_TwoRegisteredPackageRepositories_AllRegisteredRepositoriesUsedToCreateAggregateRepositoryFromFactory()
{

23
src/AddIns/Misc/PackageManagement/Test/Src/PackageViewModelTests.cs

@ -1246,5 +1246,28 @@ namespace PackageManagement.Tests @@ -1246,5 +1246,28 @@ namespace PackageManagement.Tests
ILogger actualLogger = project.Logger;
Assert.AreEqual(expectedLogger, actualLogger);
}
[Test]
public void Summary_PackageHasSummary_PackageSummaryReturned()
{
CreateViewModel();
fakePackage.Summary = "Expected summary";
string summary = viewModel.Summary;
Assert.AreEqual("Expected summary", summary);
}
[Test]
public void Summary_PackageHasDescriptionButNoSummary_PackageDescriptionReturned()
{
CreateViewModel();
fakePackage.Summary = String.Empty;
fakePackage.Description = "Expected description";
string summary = viewModel.Summary;
Assert.AreEqual("Expected description", summary);
}
}
}

18
src/AddIns/Misc/PackageManagement/Test/Src/ProjectTemplatePackageRepositoryCacheTests.cs

@ -83,5 +83,23 @@ namespace PackageManagement.Tests @@ -83,5 +83,23 @@ namespace PackageManagement.Tests
Assert.AreEqual(expectedRepositories, repositories);
}
[Test]
public void CreateAggregatePackageRepository_TwoRegisteredPackageSourcesButOneDisabled_ReturnsAggregateRepositoryCreatedWithOnlyEnabledPackageSource()
{
CreateCache();
ClearRegisteredPackageSources();
FakePackageRepository fakeRepository1 = AddRegisteredPackageRepository("http://sharpdevelop.com", "Test");
FakePackageRepository fakeRepository2 = AddRegisteredPackageRepository("http://test", "Test2");
registeredPackageSources.PackageSources[0].IsEnabled = false;
IPackageRepository repository = cache.CreateAggregateRepository();
IEnumerable<IPackageRepository> repositories = fakeMainCache.RepositoriesPassedToCreateAggregateRepository;
var expectedRepositories = new List<IPackageRepository>();
expectedRepositories.Add(fakeRepository2);
Assert.AreEqual(expectedRepositories, repositories);
}
}
}

14
src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageRepositoriesTests.cs

@ -80,6 +80,7 @@ namespace PackageManagement.Tests @@ -80,6 +80,7 @@ namespace PackageManagement.Tests
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddOnePackageSource();
bool result = registeredRepositories.HasMultiplePackageSources;
Assert.IsFalse(result);
@ -90,11 +91,24 @@ namespace PackageManagement.Tests @@ -90,11 +91,24 @@ namespace PackageManagement.Tests
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddTwoPackageSources();
bool result = registeredRepositories.HasMultiplePackageSources;
Assert.IsTrue(result);
}
[Test]
public void HasMultiplePackageSources_TwoPackageSourcesButOneIsDisabled_ReturnsFalse()
{
CreateRegisteredPackageRepositories();
packageSourcesHelper.AddTwoPackageSources();
packageSourcesHelper.RegisteredPackageSources[0].IsEnabled = false;
bool result = registeredRepositories.HasMultiplePackageSources;
Assert.IsFalse(result);
}
[Test]
public void ActivePackageSource_TwoPackageSources_ByDefaultReturnsFirstPackageSource()
{

24
src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs

@ -445,6 +445,30 @@ namespace PackageManagement.Tests @@ -445,6 +445,30 @@ namespace PackageManagement.Tests
Assert.IsFalse(result);
}
[Test]
public void CanMovePackageSourceUp_TwoPackageSourcesAndNothingIsSelected_ReturnsFalse()
{
CreateViewModelWithTwoPackageSources();
viewModel.Load();
viewModel.SelectedPackageSourceViewModel = null;
bool result = viewModel.CanMovePackageSourceUp;
Assert.IsFalse(result);
}
[Test]
public void CanMovePackageSourceDown_TwoPackageSourcesAndNothingIsSelected_ReturnsFalse()
{
CreateViewModelWithTwoPackageSources();
viewModel.Load();
viewModel.SelectedPackageSourceViewModel = null;
bool result = viewModel.CanMovePackageSourceDown;
Assert.IsFalse(result);
}
[Test]
public void SelectedPackageSourceViewModel_PropertyChanged_FiresPropertyChangedEvent()
{

80
src/AddIns/Misc/PackageManagement/Test/Src/UpdatedPackagesViewModelTests.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using ICSharpCode.PackageManagement;
using ICSharpCode.PackageManagement.Design;
using NuGet;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
@ -36,9 +37,14 @@ namespace PackageManagement.Tests @@ -36,9 +37,14 @@ namespace PackageManagement.Tests
}
void CreateViewModel(FakePackageManagementSolution solution)
{
CreateRegisteredPackageRepositories();
CreateViewModel(solution, registeredPackageRepositories);
}
void CreateViewModel(FakePackageManagementSolution solution, FakeRegisteredPackageRepositories registeredPackageRepositories)
{
taskFactory = new FakeTaskFactory();
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
var packageViewModelFactory = new FakePackageViewModelFactory();
var updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory);
viewModel = new UpdatedPackagesViewModel(
@ -48,6 +54,17 @@ namespace PackageManagement.Tests @@ -48,6 +54,17 @@ namespace PackageManagement.Tests
taskFactory);
}
void CreateRegisteredPackageRepositories()
{
registeredPackageRepositories = new FakeRegisteredPackageRepositories();
}
void CreateViewModel(FakeRegisteredPackageRepositories registeredPackageRepositories)
{
CreateSolution();
CreateViewModel(solution, registeredPackageRepositories);
}
void CreateExceptionThrowingSolution()
{
exceptionThrowingSolution = new ExceptionThrowingPackageManagementSolution();
@ -66,9 +83,9 @@ namespace PackageManagement.Tests @@ -66,9 +83,9 @@ namespace PackageManagement.Tests
return package;
}
FakePackage AddPackageToAggregateRepository(string version)
FakePackage AddPackageToActiveRepository(string version)
{
return registeredPackageRepositories.AddFakePackageWithVersionToAggregrateRepository(version);
return registeredPackageRepositories.AddFakePackageWithVersionToActiveRepository(version);
}
FakePackage AddPackageToSolution(string version)
@ -78,12 +95,35 @@ namespace PackageManagement.Tests @@ -78,12 +95,35 @@ namespace PackageManagement.Tests
return package;
}
void AddOnePackageSourceToRegisteredSources()
{
registeredPackageRepositories.ClearPackageSources();
registeredPackageRepositories.AddOnePackageSource();
registeredPackageRepositories.HasMultiplePackageSources = false;
}
void AddTwoPackageSourcesToRegisteredSources()
{
var expectedPackageSources = new PackageSource[] {
new PackageSource("http://first.com", "First"),
new PackageSource("http://second.com", "Second")
};
AddPackageSourcesToRegisteredSources(expectedPackageSources);
registeredPackageRepositories.HasMultiplePackageSources = true;
}
void AddPackageSourcesToRegisteredSources(PackageSource[] sources)
{
registeredPackageRepositories.ClearPackageSources();
registeredPackageRepositories.AddPackageSources(sources);
}
[Test]
public void ReadPackages_OneNewerPackageVersionAvailable_NewerPackageVersionDisplayed()
{
CreateViewModel();
AddPackageToLocalRepository("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0");
FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages();
CompleteReadPackagesTask();
@ -100,8 +140,8 @@ namespace PackageManagement.Tests @@ -100,8 +140,8 @@ namespace PackageManagement.Tests
{
CreateViewModel();
AddPackageToLocalRepository("1.0.0.0");
AddPackageToAggregateRepository("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0");
AddPackageToActiveRepository("1.0.0.0");
FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages();
CompleteReadPackagesTask();
@ -118,7 +158,7 @@ namespace PackageManagement.Tests @@ -118,7 +158,7 @@ namespace PackageManagement.Tests
{
CreateViewModel();
AddPackageToLocalRepository("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0");
FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages();
@ -148,7 +188,7 @@ namespace PackageManagement.Tests @@ -148,7 +188,7 @@ namespace PackageManagement.Tests
NoProjectsSelected();
CreateViewModel(solution);
AddPackageToSolution("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0");
FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages();
CompleteReadPackagesTask();
@ -167,7 +207,7 @@ namespace PackageManagement.Tests @@ -167,7 +207,7 @@ namespace PackageManagement.Tests
NoProjectsSelected();
CreateViewModel(solution);
AddPackageToSolution("1.0.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0.0");
FakePackage newerPackage = AddPackageToActiveRepository("1.1.0.0");
viewModel.ReadPackages();
CompleteReadPackagesTask();
@ -192,12 +232,32 @@ namespace PackageManagement.Tests @@ -192,12 +232,32 @@ namespace PackageManagement.Tests
CreateViewModel();
AddPackageToLocalRepository("1.0.0");
FakePackage newerPackage = AddPackageToAggregateRepository("1.1.0-alpha");
FakePackage newerPackage = AddPackageToActiveRepository("1.1.0-alpha");
viewModel.ReadPackages();
CompleteReadPackagesTask();
Assert.AreEqual(0, viewModel.PackageViewModels.Count);
}
[Test]
public void ShowSources_TwoPackageSources_ReturnsTrue()
{
CreateRegisteredPackageRepositories();
AddTwoPackageSourcesToRegisteredSources();
CreateViewModel(registeredPackageRepositories);
Assert.IsTrue(viewModel.ShowPackageSources);
}
[Test]
public void ShowPackageSources_OnePackageSources_ReturnsTrue()
{
CreateRegisteredPackageRepositories();
AddOnePackageSourceToRegisteredSources();
CreateViewModel(registeredPackageRepositories);
Assert.IsTrue(viewModel.ShowPackageSources);
}
}
}

44
src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchAndReplacePanel.cs

@ -100,33 +100,37 @@ namespace SearchAndReplace @@ -100,33 +100,37 @@ namespace SearchAndReplace
void FindAllButtonClicked(object sender, EventArgs e)
{
WritebackOptions();
using (var monitor = SD.StatusBar.CreateProgressMonitor()) {
monitor.TaskName = StringParser.Parse("${res:AddIns.SearchReplace.SearchProgressTitle}");
try {
var location = new SearchLocation(SearchOptions.SearchTarget, SearchOptions.LookIn, SearchOptions.LookInFiletypes, SearchOptions.IncludeSubdirectories, SearchOptions.SearchTarget == SearchTarget.CurrentSelection ? SearchManager.GetActiveSelection(false) : null);
var strategy = SearchStrategyFactory.Create(SearchOptions.FindPattern, !SearchOptions.MatchCase, SearchOptions.MatchWholeWord, SearchOptions.SearchMode);
var results = SearchManager.FindAllParallel(strategy, location, monitor);
SearchManager.ShowSearchResults(SearchOptions.FindPattern, results);
} catch (SearchPatternException ex) {
MessageService.ShowError(ex.Message);
} catch (OperationCanceledException) {}
var location = new SearchLocation(SearchOptions.SearchTarget, SearchOptions.LookIn, SearchOptions.LookInFiletypes, SearchOptions.IncludeSubdirectories, SearchOptions.SearchTarget == SearchTarget.CurrentSelection ? SearchManager.GetActiveSelection(false) : null);
ISearchStrategy strategy;
try {
strategy = SearchStrategyFactory.Create(SearchOptions.FindPattern, !SearchOptions.MatchCase, SearchOptions.MatchWholeWord, SearchOptions.SearchMode);
} catch (SearchPatternException ex) {
MessageService.ShowError(ex.Message);
return;
}
// No using block for the monitor; it is disposed when the asynchronous search finishes
var monitor = WorkbenchSingleton.StatusBar.CreateProgressMonitor();
monitor.TaskName = StringParser.Parse("${res:AddIns.SearchReplace.SearchProgressTitle}");
var results = SearchManager.FindAllParallel(strategy, location, monitor);
SearchManager.ShowSearchResults(SearchOptions.FindPattern, results);
}
void BookmarkAllButtonClicked(object sender, EventArgs e)
{
WritebackOptions();
using (var monitor = SD.StatusBar.CreateProgressMonitor()) {
monitor.TaskName = StringParser.Parse("${res:AddIns.SearchReplace.SearchProgressTitle}");
try {
var location = new SearchLocation(SearchOptions.SearchTarget, SearchOptions.LookIn, SearchOptions.LookInFiletypes, SearchOptions.IncludeSubdirectories, SearchOptions.SearchTarget == SearchTarget.CurrentSelection ? SearchManager.GetActiveSelection(false) : null);
var strategy = SearchStrategyFactory.Create(SearchOptions.FindPattern, !SearchOptions.MatchCase, SearchOptions.MatchWholeWord, SearchOptions.SearchMode);
var results = SearchManager.FindAllParallel(strategy, location, monitor);
SearchManager.MarkAll(results);
} catch (SearchPatternException ex) {
MessageService.ShowError(ex.Message);
} catch (OperationCanceledException) {}
var location = new SearchLocation(SearchOptions.SearchTarget, SearchOptions.LookIn, SearchOptions.LookInFiletypes, SearchOptions.IncludeSubdirectories, SearchOptions.SearchTarget == SearchTarget.CurrentSelection ? SearchManager.GetActiveSelection(false) : null);
ISearchStrategy strategy;
try {
strategy = SearchStrategyFactory.Create(SearchOptions.FindPattern, !SearchOptions.MatchCase, SearchOptions.MatchWholeWord, SearchOptions.SearchMode);
} catch (SearchPatternException ex) {
MessageService.ShowError(ex.Message);
return;
}
// No using block for the monitor; it is disposed when the asynchronous search finishes
var monitor = WorkbenchSingleton.StatusBar.CreateProgressMonitor();
monitor.TaskName = StringParser.Parse("${res:AddIns.SearchReplace.SearchProgressTitle}");
var results = SearchManager.FindAllParallel(strategy, location, monitor);
SearchManager.MarkAll(results);
}
void ReplaceAllButtonClicked(object sender, EventArgs e)

21
src/AddIns/Misc/SearchAndReplace/Project/SearchOptions.cs

@ -158,15 +158,18 @@ namespace SearchAndReplace @@ -158,15 +158,18 @@ namespace SearchAndReplace
public class SearchAndReplaceBinding : DefaultLanguageBinding
{
TextArea textArea;
SearchInputHandler handler;
public override void Attach(ITextEditor editor)
{
TextArea textArea = editor.GetService(typeof(TextArea)) as TextArea;
if (textArea == null) return;
handler = new SearchInputHandler(textArea);
textArea.DefaultInputHandler.NestedInputHandlers.Add(handler);
handler.SearchOptionsChanged += SearchOptionsChanged;
base.Attach(editor);
textArea = editor.GetService(typeof(TextArea)) as TextArea;
if (textArea != null) {
handler = new SearchInputHandler(textArea);
textArea.DefaultInputHandler.NestedInputHandlers.Add(handler);
handler.SearchOptionsChanged += SearchOptionsChanged;
}
}
void SearchOptionsChanged(object sender, SearchOptionsChangedEventArgs e)
@ -179,10 +182,12 @@ namespace SearchAndReplace @@ -179,10 +182,12 @@ namespace SearchAndReplace
public override void Detach()
{
if (handler != null) {
handler.SearchOptionsChanged -= SearchOptionsChanged;
base.Detach();
if (textArea != null) {
textArea.DefaultInputHandler.NestedInputHandlers.Remove(handler);
textArea = null;
handler = null;
}
handler = null;
}
}
}

16
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeNativeWrapper.cs

@ -211,14 +211,14 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -211,14 +211,14 @@ namespace ICSharpCode.AvalonEdit.Editing
{
void Activate(out int clientId);
void Deactivate();
void CreateDocumentMgr(out object docMgr);
void EnumDocumentMgrs(out object enumDocMgrs);
void GetFocus(out object docMgr);
void SetFocus(object docMgr);
void AssociateFocus(IntPtr hwnd, object newDocMgr, out object prevDocMgr);
void CreateDocumentMgr(out IntPtr docMgr);
void EnumDocumentMgrs(out IntPtr enumDocMgrs);
void GetFocus(out IntPtr docMgr);
void SetFocus(IntPtr docMgr);
void AssociateFocus(IntPtr hwnd, IntPtr newDocMgr, out IntPtr prevDocMgr);
void IsThreadFocus([MarshalAs(UnmanagedType.Bool)] out bool isFocus);
void GetFunctionProvider(ref Guid classId, out object funcProvider);
void EnumFunctionProviders(out object enumProviders);
void GetGlobalCompartment(out object compartmentMgr);
void GetFunctionProvider(ref Guid classId, out IntPtr funcProvider);
void EnumFunctionProviders(out IntPtr enumProviders);
void GetGlobalCompartment(out IntPtr compartmentMgr);
}
}

3
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Editing/ImeSupport.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
@ -77,7 +78,7 @@ namespace ICSharpCode.AvalonEdit.Editing @@ -77,7 +78,7 @@ namespace ICSharpCode.AvalonEdit.Editing
if (threadMgr != null) {
// Even though the docu says passing null is invalid, this seems to help
// activating the IME on the default input context that is shared with WPF
threadMgr.SetFocus(null);
threadMgr.SetFocus(IntPtr.Zero);
}
}
}

2
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Highlighting/HtmlClipboard.cs

@ -23,7 +23,7 @@ namespace ICSharpCode.AvalonEdit.Highlighting @@ -23,7 +23,7 @@ namespace ICSharpCode.AvalonEdit.Highlighting
static string BuildHeader(int startHTML, int endHTML, int startFragment, int endFragment)
{
StringBuilder b = new StringBuilder();
b.AppendLine("Version:1.0");
b.AppendLine("Version:0.9");
b.AppendLine("StartHTML:" + startHTML.ToString("d8", CultureInfo.InvariantCulture));
b.AppendLine("EndHTML:" + endHTML.ToString("d8", CultureInfo.InvariantCulture));
b.AppendLine("StartFragment:" + startFragment.ToString("d8", CultureInfo.InvariantCulture));

4
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchCommands.cs

@ -73,9 +73,7 @@ namespace ICSharpCode.AvalonEdit.Search @@ -73,9 +73,7 @@ namespace ICSharpCode.AvalonEdit.Search
void ExecuteFind(object sender, ExecutedRoutedEventArgs e)
{
if (panel.IsClosed) {
panel.Open();
}
panel.Open();
panel.SearchPattern = TextArea.Selection.GetText();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Input, (Action)delegate { panel.Reactivate(); });
}

4
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Search/SearchPanel.cs

@ -379,10 +379,12 @@ namespace ICSharpCode.AvalonEdit.Search @@ -379,10 +379,12 @@ namespace ICSharpCode.AvalonEdit.Search
/// </summary>
public void Open()
{
if (!IsClosed) return;
var layer = AdornerLayer.GetAdornerLayer(textArea);
if (layer != null)
layer.Add(adorner);
textArea.TextView.BackgroundRenderers.Add(renderer);
IsClosed = false;
}
/// <summary>
@ -391,7 +393,7 @@ namespace ICSharpCode.AvalonEdit.Search @@ -391,7 +393,7 @@ namespace ICSharpCode.AvalonEdit.Search
public event EventHandler<SearchOptionsChangedEventArgs> SearchOptionsChanged;
/// <summary>
/// Raises the <see cref="SearchOptionsChanged" /> event.
/// Raises the <see cref="SearchPanel.SearchOptionsChanged" /> event.
/// </summary>
protected virtual void OnSearchOptionsChanged(SearchOptionsChangedEventArgs e)
{

14
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -588,12 +588,14 @@ @@ -588,12 +588,14 @@
icon = "Icons.16x16.PasteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
<MenuItem id = "Remove"
label = "${res:Global.RemoveButtonText}"
type = "Item"
icon = "Icons.16x16.DeleteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
</Condition>
<MenuItem id = "Remove"
label = "${res:Global.RemoveButtonText}"
type = "Item"
icon = "Icons.16x16.DeleteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.DeleteProjectBrowserNode"/>
<Condition name="WriteableProject" action="Disable">
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"

Loading…
Cancel
Save