Browse Source

Allow opening files/projects by drag+drop onto the start page.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3280 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
2d9ae728ac
  1. 29
      src/AddIns/Misc/StartPage/Project/Src/StartPage.cs
  2. 46
      src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs

29
src/AddIns/Misc/StartPage/Project/Src/StartPage.cs

@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
// <version>$Revision$</version>
// </file>
using ICSharpCode.SharpDevelop;
using System;
using System.Windows.Forms;
using ICSharpCode.Core;
@ -45,6 +46,34 @@ namespace ICSharpCode.StartPage @@ -45,6 +46,34 @@ namespace ICSharpCode.StartPage
if (btn != null) {
btn.Click += delegate {new ICSharpCode.SharpDevelop.Project.Commands.CreateNewSolution().Run();};
}
pane.WebBrowser.Navigating += pane_WebBrowser_Navigating;
pane.WebBrowser.Navigated += pane_WebBrowser_Navigated;
}
void pane_WebBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
WebBrowser webBrowser = (WebBrowser)sender;
webBrowser.Navigating -= pane_WebBrowser_Navigating;
webBrowser.Navigated -= pane_WebBrowser_Navigated;
}
void pane_WebBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
try {
if (e.Url.IsFile) {
e.Cancel = true;
string file = e.Url.LocalPath;
IProjectLoader loader = ProjectService.GetProjectLoader(file);
if (loader != null) {
FileUtility.ObservedLoad(new NamedFileOperationDelegate(loader.Load), file);
} else {
FileService.OpenFile(file);
}
}
} catch (Exception ex) {
MessageService.ShowError(ex);
}
}
public override void GoHome(HtmlViewPane pane)

46
src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs

@ -639,35 +639,43 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -639,35 +639,43 @@ namespace ICSharpCode.SharpDevelop.Gui
protected override void OnDragEnter(DragEventArgs e)
{
base.OnDragEnter(e);
if (e.Data != null && e.Data.GetDataPresent(DataFormats.FileDrop)) {
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string file in files) {
if (File.Exists(file)) {
e.Effect = DragDropEffects.Copy;
return;
try {
base.OnDragEnter(e);
if (e.Data != null && e.Data.GetDataPresent(DataFormats.FileDrop)) {
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string file in files) {
if (File.Exists(file)) {
e.Effect = DragDropEffects.Copy;
return;
}
}
}
e.Effect = DragDropEffects.None;
} catch (Exception ex) {
MessageService.ShowError(ex);
}
e.Effect = DragDropEffects.None;
}
protected override void OnDragDrop(DragEventArgs e)
{
base.OnDragDrop(e);
if (e.Data != null && e.Data.GetDataPresent(DataFormats.FileDrop)) {
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string file in files) {
if (File.Exists(file)) {
IProjectLoader loader = ProjectService.GetProjectLoader(file);
if (loader != null) {
FileUtility.ObservedLoad(new NamedFileOperationDelegate(loader.Load), file);
} else {
FileService.OpenFile(file);
try {
base.OnDragDrop(e);
if (e.Data != null && e.Data.GetDataPresent(DataFormats.FileDrop)) {
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string file in files) {
if (File.Exists(file)) {
IProjectLoader loader = ProjectService.GetProjectLoader(file);
if (loader != null) {
FileUtility.ObservedLoad(new NamedFileOperationDelegate(loader.Load), file);
} else {
FileService.OpenFile(file);
}
}
}
}
} catch (Exception ex) {
MessageService.ShowError(ex);
}
}

Loading…
Cancel
Save