protected override void OnDrop(DragEventArgs e) { base.OnDrop(e); if (e.Data.GetDataPresent(DataFormats.FileDrop)) { try { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); foreach (var file in files) { if (file.EndsWith(GestureSign.Common.Constants.GesturesExtension, StringComparison.OrdinalIgnoreCase)) { var newGestures = GestureManager.LoadGesturesFromFile(file); ImportGesture(newGestures); } } } catch (Exception exception) { UIHelper.GetParentWindow(this).ShowModalMessageExternal(exception.GetType().Name, exception.Message); } } e.Handled = true; }
public static void LoadFromArchive(string sourceArchiveFileName, out IEnumerable <IApplication> applications, out IEnumerable <IGesture> gestures) { string tempArchivePath = ExtractToTempDirectory(sourceArchiveFileName); applications = FileManager.LoadObject <List <IApplication> >(Path.Combine(tempArchivePath, Constants.ActionFileName), false, true, true); gestures = GestureManager.LoadGesturesFromFile(Path.Combine(tempArchivePath, Constants.GesturesFileName), true); Directory.Delete(tempArchivePath, true); }
private void RestoreButton_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog() { Filter = $"{LocalizationProvider.Instance.GetTextValue("Options.BackupFile")}|*{GestureSign.Common.Constants.BackupFileExtension}", Title = LocalizationProvider.Instance.GetTextValue("Common.Import"), CheckFileExists = true }; if (openFileDialog.ShowDialog().Value) { try { string tempArchivePath = Archive.ExtractToTempDirectory(openFileDialog.FileName); string configPath = Path.Combine(tempArchivePath, Path.GetFileName(AppConfig.ConfigPath)); if (File.Exists(configPath)) { File.Copy(configPath, AppConfig.ConfigPath, true); } AppConfig.Reload(); LoadSettings(); var applications = FileManager.LoadObject <List <IApplication> >(Path.Combine(tempArchivePath, GestureSign.Common.Constants.ActionFileName), false, true, true); var gestures = GestureManager.LoadGesturesFromFile(Path.Combine(tempArchivePath, GestureSign.Common.Constants.GesturesFileName), true); if (gestures != null) { var oldGestures = GestureManager.Instance.Gestures; foreach (var g in oldGestures) { GestureManager.Instance.DeleteGesture(g.Name); } foreach (var g in gestures) { GestureManager.Instance.AddGesture(g); } GestureManager.Instance.SaveGestures(); } if (applications != null) { ApplicationManager.Instance.RemoveAllApplication(); ApplicationManager.Instance.AddApplicationRange(applications); ApplicationManager.Instance.SaveApplications(); } Directory.Delete(tempArchivePath, true); UIHelper.GetParentWindow(this).ShowModalMessageExternal(LocalizationProvider.Instance.GetTextValue("Options.Messages.RestoreCompleteTitle"), null); } catch (Exception exception) { UIHelper.GetParentWindow(this).ShowModalMessageExternal(LocalizationProvider.Instance.GetTextValue("Messages.Error"), exception.Message); } } }
private void LoadSettingFile(byte[] file) { if (Directory.Exists(_tempDirectory)) { Directory.Delete(_tempDirectory, true); } Directory.CreateDirectory(_tempDirectory); string filePath = Path.Combine(_tempDirectory, "Setting.zip"); File.WriteAllBytes(filePath, file); ZipFile.ExtractToDirectory(filePath, _tempDirectory); var newApps = new List <IApplication>(); var gestures = new List <IGesture>(); foreach (string settingFile in Directory.GetFiles(_tempDirectory, "*.*", SearchOption.AllDirectories)) { switch (Path.GetExtension(settingFile)) { case GestureSign.Common.Constants.ActionExtension: var currentApps = FileManager.LoadObject <List <IApplication> >(settingFile, false, true); if (currentApps != null) { newApps.AddRange(currentApps); } break; case GestureSign.Common.Constants.GesturesExtension: var currentGestures = GestureManager.LoadGesturesFromFile(settingFile); if (currentGestures != null) { gestures.AddRange(currentGestures); } break; } } Dispatcher.InvokeAsync(() => { ApplicationSelector.Initialize(newApps, gestures); ProgressRing.Visibility = Visibility.Collapsed; ApplicationSelector.Visibility = Visibility.Visible; } , DispatcherPriority.Input); File.Delete(filePath); Directory.Delete(_tempDirectory, true); }
private void ImportGestureMenuItem_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofdGestures = new OpenFileDialog() { Filter = LocalizationProvider.Instance.GetTextValue("Gesture.GestureFile") + "|*" + GestureSign.Common.Constants.GesturesExtension, Title = LocalizationProvider.Instance.GetTextValue("Gesture.ImportGesture"), CheckFileExists = true }; if (ofdGestures.ShowDialog().GetValueOrDefault()) { var newGestures = GestureManager.LoadGesturesFromFile(ofdGestures.FileName); ImportGesture(newGestures); } }