diff --git a/src/MicroStationTagExplorer/MainWindow.xaml b/src/MicroStationTagExplorer/MainWindow.xaml
index 0efbb17..d1fd872 100644
--- a/src/MicroStationTagExplorer/MainWindow.xaml
+++ b/src/MicroStationTagExplorer/MainWindow.xaml
@@ -21,12 +21,13 @@
GetFiles()
+ {
+ IList files = null;
+
+ if (DataGridFiles.DataContext != null)
+ {
+ files = DataGridFiles.DataContext as IList;
+ }
+ else
+ {
+ files = new ObservableCollection();
+ DataGridFiles.DataContext = files;
+ }
+
+ return files;
+ }
+
private void AddFiles()
{
var dlg = new OpenFileDialog
@@ -32,16 +49,7 @@ namespace MicroStationTagExplorer
var result = dlg.ShowDialog(this);
if (result == true)
{
- IList files = null;
- if (DataGridFiles.DataContext != null)
- {
- files = DataGridFiles.DataContext as IList;
- }
- else
- {
- files = new ObservableCollection();
- DataGridFiles.DataContext = files;
- }
+ IList files = GetFiles();
foreach (var fileName in dlg.FileNames)
{
@@ -54,24 +62,54 @@ namespace MicroStationTagExplorer
}
}
+ private void AddPaths(string[] paths)
+ {
+ IList files = GetFiles();
+
+ foreach (var path in paths)
+ {
+ System.IO.FileAttributes attributes = System.IO.File.GetAttributes(path);
+ if (attributes.HasFlag(System.IO.FileAttributes.Directory))
+ {
+ var fileNames = System.IO.Directory.EnumerateFiles(path, "*.*", System.IO.SearchOption.AllDirectories)
+ .Where(s => s.EndsWith(".dwg") || s.EndsWith(".dgn")); ;
+ foreach (var fileName in fileNames)
+ {
+ var file = new File()
+ {
+ Path = fileName
+ };
+ files.Add(file);
+ }
+ }
+ else
+ {
+ if (path.EndsWith(".dwg") || path.EndsWith(".dgn"))
+ {
+ var file = new File()
+ {
+ Path = path
+ };
+ files.Add(file);
+ }
+ }
+ }
+ }
+
private void GetTags()
{
- if (DataGridFiles.DataContext == null)
- return;
-
if (IsRunning == false)
{
- int selectedIndex = DataGridFiles.SelectedIndex;
- IList files = DataGridFiles.DataContext as IList;
- if (files == null)
- return;
-
IsRunning = true;
- FileGetTags.Header = "S_top";
- TextBoxStatus.Text = "";
+
+ DisableWindow();
+ UpdateStatus("");
+
TokenSource = new CancellationTokenSource();
Token = TokenSource.Token;
+ IList files = GetFiles();
+
Task.Factory.StartNew(() =>
{
try
@@ -90,7 +128,7 @@ namespace MicroStationTagExplorer
Dispatcher.Invoke(() =>
{
- TextBoxStatus.Text = "[" + i + "/" + count + "] " + System.IO.Path.GetFileName(file.Path);
+ UpdateStatus("[" + i + "/" + count + "] " + System.IO.Path.GetFileName(file.Path));
});
using (var microstation = new MicrostationInterop(file.Path))
@@ -109,8 +147,8 @@ namespace MicroStationTagExplorer
Dispatcher.Invoke(() =>
{
- FileGetTags.Header = "_Get Tags";
- TextBoxStatus.Text = "";
+ EnableWindow();
+ UpdateStatus("");
});
TokenSource.Dispose();
@@ -121,11 +159,32 @@ namespace MicroStationTagExplorer
{
TokenSource.Cancel();
TokenSource.Dispose();
- FileGetTags.Header = "_Get Tags";
- TextBoxStatus.Text = "";
+ EnableWindow();
+ UpdateStatus("");
}
}
+ private void UpdateStatus(string message)
+ {
+ TextBoxStatus.Text = message;
+ }
+
+ private void EnableWindow()
+ {
+ FileMenu.IsEnabled = true;
+ TagsImport.IsEnabled = true;
+ TagsExport.IsEnabled = true;
+ TagsGet.Header = "_Get";
+ }
+
+ private void DisableWindow()
+ {
+ FileMenu.IsEnabled = false;
+ TagsImport.IsEnabled = false;
+ TagsExport.IsEnabled = false;
+ TagsGet.Header = "S_top";
+ }
+
private void ImportTags()
{
}
@@ -153,15 +212,9 @@ namespace MicroStationTagExplorer
private void ExportTags()
{
- if (DataGridFiles.DataContext == null)
- return;
-
if (IsRunning == false)
{
- int selectedIndex = DataGridFiles.SelectedIndex;
- IList files = DataGridFiles.DataContext as IList;
- if (files == null)
- return;
+ IList files = GetFiles();
try
{
@@ -216,46 +269,7 @@ namespace MicroStationTagExplorer
var data = e.Data.GetData(DataFormats.FileDrop);
if (data != null && data is string[])
{
- IList files = null;
- if (DataGridFiles.DataContext != null)
- {
- files = DataGridFiles.DataContext as IList;
- }
- else
- {
- files = new ObservableCollection();
- DataGridFiles.DataContext = files;
- }
-
- var droppedFiles = data as string[];
- foreach (var droppedFile in droppedFiles)
- {
- System.IO.FileAttributes attributes = System.IO.File.GetAttributes(droppedFile);
- if (attributes.HasFlag(System.IO.FileAttributes.Directory))
- {
- var allFiles = System.IO.Directory.EnumerateFiles(droppedFile, "*.*", System.IO.SearchOption.AllDirectories)
- .Where(s => s.EndsWith(".dwg") || s.EndsWith(".dgn")); ;
- foreach (var allFile in allFiles)
- {
- var file = new File()
- {
- Path = allFile
- };
- files.Add(file);
- }
- }
- else
- {
- if (droppedFile.EndsWith(".dwg") || droppedFile.EndsWith(".dgn"))
- {
- var file = new File()
- {
- Path = droppedFile
- };
- files.Add(file);
- }
- }
- }
+ AddPaths(data as string[]);
}
}
}
@@ -273,17 +287,17 @@ namespace MicroStationTagExplorer
AddFiles();
}
- private void FileGetTags_Click(object sender, RoutedEventArgs e)
+ private void TagsGet_Click(object sender, RoutedEventArgs e)
{
GetTags();
}
- private void FileImportTags_Click(object sender, RoutedEventArgs e)
+ private void TagsImport_Click(object sender, RoutedEventArgs e)
{
ImportTags();
}
- private void FileExportTags_Click(object sender, RoutedEventArgs e)
+ private void TagsExport_Click(object sender, RoutedEventArgs e)
{
ExportTags();
}