Skip to content

Commit fbfdeaa

Browse files
committed
Added Drag&Drop support for file loading.
1 parent b52d98b commit fbfdeaa

File tree

2 files changed

+80
-43
lines changed

2 files changed

+80
-43
lines changed

Forms/MainForm.Designer.cs

Lines changed: 8 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Forms/MainForm.cs

Lines changed: 72 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -182,44 +182,7 @@ private void openProjectToolStripMenuItem_Click(object sender, EventArgs e)
182182

183183
if (ofd.ShowDialog() == DialogResult.OK)
184184
{
185-
IReClassImport import = null;
186-
switch (Path.GetExtension(ofd.SafeFileName))
187-
{
188-
case ReClassNetFile.FileExtension:
189-
import = new ReClassNetFile();
190-
break;
191-
case ReClassQtFile.FileExtension:
192-
import = new ReClassQtFile();
193-
break;
194-
case ReClassFile.FileExtension:
195-
import = new ReClassFile();
196-
break;
197-
case ReClass2007File.FileExtension:
198-
import = new ReClass2007File();
199-
break;
200-
default:
201-
Program.Logger.Log(LogLevel.Error, $"The file '{ofd.SafeFileName}' has an unknown type.");
202-
break;
203-
}
204-
if (import != null)
205-
{
206-
var schema = import.Load(ofd.FileName, Program.Logger);
207-
if (schema != null)
208-
{
209-
// If we have our filetype save the path to skip the Save As dialog.
210-
if (import is ReClassNetFile)
211-
{
212-
projectPath = ofd.FileName;
213-
}
214-
215-
var classes = schema.BuildNodes(Program.Logger);
216-
217-
ClassManager.Clear();
218-
classes.ForEach(c => ClassManager.AddClass(c));
219-
220-
memoryViewControl.ClassNode = classes.FirstOrDefault();
221-
}
222-
}
185+
LoadFileFromPath(ofd.SafeFileName);
223186
}
224187
}
225188
}
@@ -408,6 +371,35 @@ private void memoryTypeToolStripButton_Click(object sender, EventArgs e)
408371

409372
#endregion
410373

374+
private void MainForm_DragEnter(object sender, DragEventArgs e)
375+
{
376+
if (e.Data.GetDataPresent(DataFormats.FileDrop))
377+
{
378+
var files = e.Data.GetData(DataFormats.FileDrop) as string[];
379+
if (files != null && files.Any())
380+
{
381+
switch (Path.GetExtension(files.First()))
382+
{
383+
case ReClassNetFile.FileExtension:
384+
case ReClassQtFile.FileExtension:
385+
case ReClassFile.FileExtension:
386+
case ReClass2007File.FileExtension:
387+
e.Effect = DragDropEffects.Copy;
388+
break;
389+
}
390+
}
391+
}
392+
}
393+
394+
private void MainForm_DragDrop(object sender, DragEventArgs e)
395+
{
396+
var files = e.Data.GetData(DataFormats.FileDrop) as string[];
397+
if (files != null && files.Any())
398+
{
399+
LoadFileFromPath(files.First());
400+
}
401+
}
402+
411403
private void processUpdateTimer_Tick(object sender, EventArgs e)
412404
{
413405
if (updateProcessInformationsTask == null || updateProcessInformationsTask.IsCompleted)
@@ -514,5 +506,47 @@ private void AskAddOrInsertBytes(string title, Action<int> callback)
514506
}
515507
}
516508
}
509+
510+
private void LoadFileFromPath(string filePath)
511+
{
512+
IReClassImport import = null;
513+
switch (Path.GetExtension(filePath))
514+
{
515+
case ReClassNetFile.FileExtension:
516+
import = new ReClassNetFile();
517+
break;
518+
case ReClassQtFile.FileExtension:
519+
import = new ReClassQtFile();
520+
break;
521+
case ReClassFile.FileExtension:
522+
import = new ReClassFile();
523+
break;
524+
case ReClass2007File.FileExtension:
525+
import = new ReClass2007File();
526+
break;
527+
default:
528+
Program.Logger.Log(LogLevel.Error, $"The file '{filePath}' has an unknown type.");
529+
break;
530+
}
531+
if (import != null)
532+
{
533+
var schema = import.Load(filePath, Program.Logger);
534+
if (schema != null)
535+
{
536+
// If we have our filetype save the path to skip the Save As dialog.
537+
if (import is ReClassNetFile)
538+
{
539+
projectPath = filePath;
540+
}
541+
542+
var classes = schema.BuildNodes(Program.Logger);
543+
544+
ClassManager.Clear();
545+
classes.ForEach(c => ClassManager.AddClass(c));
546+
547+
memoryViewControl.ClassNode = classes.FirstOrDefault();
548+
}
549+
}
550+
}
517551
}
518552
}

0 commit comments

Comments
 (0)