/// <summary> /// Close menu item on click event /// </summary> /// <param name="sender">sender</param> /// <param name="e">event args</param> private void CloseItem_Click(object sender, ExecutedRoutedEventArgs e) { if (UnsavedChanges) { if (MessageBox.Show("There are unsaved changes, are you sure you want to close the current file?", "Unsaved Changes", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No) { return; } } BlangStringsDataGrid.ItemsSource = null; BlangStringsView = null; CurrentBlangFile = null; CurrentFilePath = string.Empty; SaveMenuItem.IsEnabled = false; SaveToMenuItem.IsEnabled = false; CloseMenuItem.IsEnabled = false; Title = WindowTitle; }
/// <summary> /// Blang file entry constructor /// </summary> /// <param name="blangFile">deserialized .blang file</param> /// <param name="chunk">resource chunk</param> public BlangFileEntry(BlangFile blangFile, ResourceChunk chunk) { BlangFile = blangFile; Chunk = chunk; }
/// <summary> /// Open menu item on click event /// </summary> /// <param name="sender">sender</param> /// <param name="e">event args</param> private void OpenItem_Click(object sender, ExecutedRoutedEventArgs e) { var openFileDialog = new OpenFileDialog() { Filter = "All Files (.*)|*.*", FilterIndex = 1, Multiselect = false, Title = "Open a Blang file for viewing or editing" }; if (openFileDialog.ShowDialog() == true) { if (CurrentBlangFile != null) { if (MessageBox.Show("Are you sure you want to close the current file to open a new one?", "Make sure you save your changes", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No) { return; } } try { CurrentBlangFile = BlangFile.Parse(openFileDialog.FileName); } catch (Exception) { MessageBox.Show("Unsupported file format.", "Error while opening file", MessageBoxButton.OK, MessageBoxImage.Error); return; } // Create a backup of this file first try { File.Copy(openFileDialog.FileName, openFileDialog.FileName + ".bak", true); } catch (Exception) { MessageBox.Show("IO Error.", "An error occured while creating the backup file.", MessageBoxButton.OK, MessageBoxImage.Error); } var blangStringsViewSource = new CollectionViewSource() { Source = CurrentBlangFile.Strings }; BlangStringsView = blangStringsViewSource.View; BlangStringsView.Filter += (obj) => { if (obj == null) { return(false); } if (string.IsNullOrEmpty(FilterText.Text) || string.IsNullOrWhiteSpace(FilterText.Text)) { return(true); } if (((BlangString)obj).Identifier.ToLowerInvariant().Contains(FilterText.Text.ToLowerInvariant()) || ((BlangString)obj).Text.ToLowerInvariant().Contains(FilterText.Text.ToLowerInvariant())) { return(true); } return(false); }; BlangStringsDataGrid.ItemsSource = BlangStringsView; BlangStringsDataGrid.CellEditEnding += CellEditEnding; Title = $"{WindowTitle} - {openFileDialog.FileName}"; CurrentFilePath = openFileDialog.FileName; SaveMenuItem.IsEnabled = true; SaveToMenuItem.IsEnabled = true; CloseMenuItem.IsEnabled = true; } }