Skip to content

Commit 30ae61d

Browse files
author
fremag
committed
Explorer: drag/drop dump files
Closes #59
1 parent acbc237 commit 30ae61d

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

MemoScope/MemoScopeForm.Designer.cs

+5-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

MemoScope/MemoScopeForm.cs

+28
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using WinFwk.UIModules;
99
using WinFwk.UIServices;
1010
using MemoScope.Modules.Workplace;
11+
using System.Linq;
1112

1213
namespace MemoScope
1314
{
@@ -47,5 +48,32 @@ public void HandleMessage(ClrDumpLoadedMessage message)
4748
var dump = message.ClrDump;
4849
UIModuleFactory.CreateModule<TypeStatModule>( tsm => tsm.Setup(dump), tsm => DockModule(tsm));
4950
}
51+
52+
private void MemoScopeForm_DragEnter(object sender, DragEventArgs e)
53+
{
54+
if (e.Data.GetDataPresent(DataFormats.FileDrop))
55+
{
56+
e.Effect = DragDropEffects.Copy;
57+
}
58+
}
59+
60+
private void MemoScopeForm_DragDrop(object sender, DragEventArgs e)
61+
{
62+
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
63+
var fileInfos = files.Select(f => new FileInfo(f));
64+
var filteredFileInfos = fileInfos.Where(
65+
fi => fi.Extension.Equals(".dmp", System.StringComparison.InvariantCultureIgnoreCase)
66+
);
67+
if (filteredFileInfos.Any())
68+
{
69+
msgBus.SendMessage(new OpenDumpRequest(filteredFileInfos));
70+
var directory = filteredFileInfos.First().DirectoryName;
71+
UIModuleFactory.CreateModule<ExplorerModule>(module => { module.SetUp(directory); }, module => DockModule(module, DockState.DockLeft));
72+
}
73+
else
74+
{
75+
MessageBox.Show("Dropped files must have a .dmp extension !");
76+
}
77+
}
5078
}
5179
}

MemoScope/Modules/Explorer/ExplorerModule.cs

+6
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ private void OpenFilesFromData(IEnumerable<AbstractDumpExplorerData> datas)
102102
MessageBus.SendMessage(new OpenDumpRequest(fileInfos));
103103
}
104104

105+
internal void SetUp(string directory)
106+
{
107+
tbRootDir.Text = directory;
108+
RefreshRootDir();
109+
}
110+
105111
private void btnLoad_Click(object sender, System.EventArgs e)
106112
{
107113
var fileInfos = dtlvExplorer.CheckedObjects.OfType<AbstractDumpExplorerData>().Where(data => data.FileInfo != null).Select(data => data.FileInfo).ToList();

0 commit comments

Comments
 (0)