diff --git a/SharpDevelop.Tests.sln b/SharpDevelop.Tests.sln
index c2dd89c17a..5dbdb0c226 100644
--- a/SharpDevelop.Tests.sln
+++ b/SharpDevelop.Tests.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 10
-# SharpDevelop 4.0.0.4894
+# SharpDevelop 4.0.0.4915
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@@ -311,6 +311,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}"
+ ProjectSection(ProjectDependencies) = postProject
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
+ EndProjectSection
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchAndReplace.Tests", "src\AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
@@ -879,6 +884,10 @@ Global
{70966F84-74C9-4067-A379-0C674A929233}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Any CPU.Build.0 = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -964,6 +973,7 @@ Global
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{DD9AE6A5-2B9D-443A-BC71-38BE578C36BD} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{A569DCC1-C608-45FD-B770-4F79335EF154} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{A4C858C8-51B6-4265-A695-A20FCEBA1D19} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
diff --git a/SharpDevelop.sln b/SharpDevelop.sln
index 196a48a27e..b5ea30d2e7 100644
--- a/SharpDevelop.sln
+++ b/SharpDevelop.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 10
-# SharpDevelop 4.0.0.4894
+# SharpDevelop 4.0.0.4915
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@@ -234,6 +234,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddI
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}"
+ ProjectSection(ProjectDependencies) = postProject
+ {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
+ EndProjectSection
+EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@@ -699,6 +704,10 @@ Global
{70966F84-74C9-4067-A379-0C674A929233}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Any CPU.Build.0 = Release|Any CPU
{70966F84-74C9-4067-A379-0C674A929233}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -741,6 +750,7 @@ Global
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
+ {6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{3CA90546-3B4C-4663-9445-C4E9371750A7} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{461606BD-E824-4D0A-8CBA-01810B1F5E02} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
diff --git a/src/AddIns/Misc/StartPage/Project/Src/RecentProjectsControl.xaml b/src/AddIns/Misc/StartPage/Project/Src/RecentProjectsControl.xaml
new file mode 100644
index 0000000000..cfbb1ce666
--- /dev/null
+++ b/src/AddIns/Misc/StartPage/Project/Src/RecentProjectsControl.xaml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AddIns/Misc/StartPage/Project/Src/RecentProjectsControl.xaml.cs b/src/AddIns/Misc/StartPage/Project/Src/RecentProjectsControl.xaml.cs
new file mode 100644
index 0000000000..3c40d4c883
--- /dev/null
+++ b/src/AddIns/Misc/StartPage/Project/Src/RecentProjectsControl.xaml.cs
@@ -0,0 +1,97 @@
+//
+//
+//
+//
+// $Revision$
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Input;
+
+using ICSharpCode.Core.Presentation;
+using ICSharpCode.SharpDevelop;
+using ICSharpCode.SharpDevelop.Project;
+
+namespace ICSharpCode.StartPage
+{
+ ///
+ /// Interaction logic for RecentProjectsControl.xaml
+ ///
+ public partial class RecentProjectsControl : UserControl
+ {
+ public RecentProjectsControl()
+ {
+ InitializeComponent();
+
+ SetBinding(HeaderProperty, new LocalizeExtension("StartPage.StartMenu.BarNameName").CreateBinding());
+ BuildRecentProjectList();
+ }
+
+ public static readonly DependencyProperty HeaderProperty = HeaderedContentControl.HeaderProperty.AddOwner(typeof(RecentProjectsControl));
+
+ public object Header {
+ get { return GetValue(HeaderProperty); }
+ set { SetValue(HeaderProperty, value); }
+ }
+
+ void BuildRecentProjectList()
+ {
+ List items = new List();
+ foreach (string path in FileService.RecentOpen.RecentProject) {
+ FileInfo file = new FileInfo(path);
+ if (file.Exists) {
+ items.Add(
+ new RecentOpenItem {
+ Name = System.IO.Path.GetFileNameWithoutExtension(path),
+ LastModification = file.LastWriteTime.ToShortDateString(),
+ Path = path
+ });
+ }
+ }
+ lastProjectsListView.ItemsSource = items;
+ }
+
+ class RecentOpenItem
+ {
+ public string Name { get; set; }
+ public string LastModification { get; set; }
+ public string Path { get; set; }
+ }
+
+ void lastProjectsDoubleClick(object sender, RoutedEventArgs e)
+ {
+ RecentOpenItem item = (RecentOpenItem)lastProjectsListView.SelectedItem;
+ if (item != null) {
+ ProjectService.LoadSolutionOrProject(item.Path);
+ }
+ }
+
+ void lastProjectsKeyDown(object sender, KeyEventArgs e)
+ {
+ if (e.Key == Key.Return) {
+ lastProjectsDoubleClick(null, null);
+ }
+ }
+
+ void listViewHyperlinkClick(object sender, RoutedEventArgs e)
+ {
+ RecentOpenItem item = (RecentOpenItem)((Hyperlink)sender).Tag;
+ ProjectService.LoadSolutionOrProject(item.Path);
+ }
+
+ void openSolutionClick(object sender, RoutedEventArgs e)
+ {
+ new ICSharpCode.SharpDevelop.Project.Commands.LoadSolution().Run();
+ }
+
+ void newSolutionClick(object sender, RoutedEventArgs e)
+ {
+ new ICSharpCode.SharpDevelop.Project.Commands.CreateNewSolution().Run();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml b/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml
index ca4ec707a6..e00948bc13 100644
--- a/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml
+++ b/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml
@@ -2,104 +2,82 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright ©2000-2009
- IC#SharpCode
-
-
-
+ Grid.Row="2"
+ Padding="4,0,4,0"
+ TextWrapping="Wrap">
+ Copyright ©2000-2009
+ IC#SharpCode
+
+
\ No newline at end of file
diff --git a/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml.cs b/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml.cs
index 457becc03f..7130860c1b 100644
--- a/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml.cs
+++ b/src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml.cs
@@ -7,14 +7,9 @@
using System;
using System.Collections.Generic;
-using System.IO;
-using System.Windows;
using System.Windows.Controls;
-using System.Windows.Documents;
-using ICSharpCode.SharpDevelop;
-using ICSharpCode.SharpDevelop.Project;
-using System.Windows.Input;
+using ICSharpCode.Core;
namespace ICSharpCode.StartPage
{
@@ -26,63 +21,15 @@ namespace ICSharpCode.StartPage
public StartPageControl()
{
InitializeComponent();
-
- BuildRecentProjectList();
+ List