private void CmExportCustom(object sender, RoutedEventArgs e) { if (AccountsDataGrid.SelectedItems.Count == 0) { return; } ExportWindow window = new ExportWindow(AccountsDataGrid.SelectedItems.Cast <Account>()); window.ShowDialog(); }
private void CmExportCustom(object sender, RoutedEventArgs e) { if (AccountsDataGrid.SelectedItem == null) { return; } var accounts = AccountsDataGrid.SelectedItems.Cast <Account>(); var window = new ExportWindow(accounts); window.ShowDialog(); }
public ExportWindow(IEnumerable <Account> accounts) { InitializeComponent(); Instance = this; _accounts = accounts; if (File.Exists("ExportFormat.txt")) { using (var sr = new StreamReader("ExportFormat.txt")) { FormatBox.Text = sr.ReadToEnd(); } } }
public ExportWindow(IEnumerable<Account> accounts) { InitializeComponent(); Instance = this; _accounts = accounts; if (File.Exists("ExportFormat.txt")) { using (var sr = new StreamReader("ExportFormat.txt")) { FormatBox.Text = sr.ReadToEnd(); } } }
private void CmExportCustom(object sender, RoutedEventArgs e) { if (AccountsDataGrid.SelectedItem == null) { return; } var accounts = AccountsDataGrid.SelectedItems.Cast<Account>(); var window = new ExportWindow(accounts); window.ShowDialog(); }
private async void ButtonClick(object sender, RoutedEventArgs e) { if (!(sender is Button)) { return; } Button s = (Button)sender; if (s.Name == "HelpButton") { ExportWindow w = new ExportWindow("CustomExport.nfo"); w.Show(); return; } SaveFileDialog sfd = new SaveFileDialog { InitialDirectory = Directory.GetCurrentDirectory() }; if (s.Name == "OpenButton") { OpenFileDialog ofd = new OpenFileDialog { InitialDirectory = Directory.GetCurrentDirectory(), Filter = "Text File(*.txt) | *.txt", Multiselect = false, CheckFileExists = true }; if (ofd.ShowDialog() == true) { if (LoadFile(ofd.FileName)) { Settings.Config.DefaultCustomExportFilename = ofd.SafeFileName; } } } else if (s.Name == "SaveButton") { sfd.Filter = "Text File (*.txt)|*.txt"; if (sfd.ShowDialog() == true && !string.IsNullOrEmpty(sfd.FileName)) { using (var sw = new StreamWriter(sfd.FileName)) { sw.Write(FormatBox.Text); } Settings.Config.DefaultCustomExportFilename = sfd.SafeFileName; await this.ShowMessageAsync("Export Template", "Template has been successfully saved."); } } else if (s.Name == "ExportButton") { Regex accountBlockRegex = new Regex("\\[Account](.+?)\\[\\/Account]", RegexOptions.Singleline); Match accountBlock = accountBlockRegex.Match(FormatBox.Text); if (string.IsNullOrEmpty(FormatBox.Text) || !accountBlock.Success) { return; } sfd.FileName = "output"; sfd.Filter = "Text File (*.txt)|*.txt|Html Document (*.htm)|*.htm"; if (new Regex(@"<[^>]+>").IsMatch(FormatBox.Text)) { sfd.DefaultExt = ".htm"; Utils.UseDefaultExtAsFilterIndex(sfd); } if (sfd.ShowDialog() != true || string.IsNullOrEmpty(sfd.FileName)) { return; } StringBuilder sb = new StringBuilder(); try { foreach (Account account in _accounts) { string accountTemplate = accountBlock.Groups[1].Value; accountTemplate = PopulateLists(accountTemplate, account); accountTemplate = accountTemplate.HenriFormat(account); sb.Append(accountTemplate); } string output = sb.ToString().Trim(Environment.NewLine.ToCharArray()); output = FormatBox.Text.Replace(accountBlock.Groups[0].Value, output); Regex indexRegex = new Regex("%index=?(\\d+)?:?(\\d+)?%"); MatchCollection indexMatches = indexRegex.Matches(output); if (indexMatches.Count > 0) { int index = 1; int digits = 1; string indexStartValue = indexMatches[0].Groups[1].Value; if (!string.IsNullOrEmpty(indexStartValue)) { index = int.Parse(indexStartValue); } string indexDigitsValue = indexMatches[0].Groups[2].Value; if (!string.IsNullOrEmpty(indexDigitsValue)) { int d = int.Parse(indexDigitsValue); if (d > 0) { digits = d; } } output = indexRegex.Replace(output, m => index++.ToString(new string('0', digits))); } using (var sw = new StreamWriter(sfd.FileName)) { sw.Write(output); } await this.ShowMessageAsync("Export", $"Accounts Exported: {_accounts.Count()}"); Close(); } catch (Exception ex) { Utils.ExportException(ex); await this.ShowMessageAsync("Export", "An error occured. Check the logs for more information."); } } }
private async void ButtonClick(object sender, RoutedEventArgs e) { if (!(sender is Button)) { return; } Button s = (Button) sender; if (s.Name == "HelpButton") { ExportWindow w = new ExportWindow("CustomExport.nfo"); w.Show(); return; } SaveFileDialog sfd = new SaveFileDialog { InitialDirectory = Directory.GetCurrentDirectory() }; if (s.Name == "OpenButton") { OpenFileDialog ofd = new OpenFileDialog { InitialDirectory = Directory.GetCurrentDirectory(), Filter = "Text File(*.txt) | *.txt", Multiselect = false, CheckFileExists = true }; if (ofd.ShowDialog() == true) { if (LoadFile(ofd.FileName)) { Settings.Config.DefaultCustomExportFilename = ofd.SafeFileName; } } } else if (s.Name == "SaveButton") { sfd.Filter = "Text File (*.txt)|*.txt"; if (sfd.ShowDialog() == true && !string.IsNullOrEmpty(sfd.FileName)) { using (var sw = new StreamWriter(sfd.FileName)) { sw.Write(FormatBox.Text); } Settings.Config.DefaultCustomExportFilename = sfd.SafeFileName; await this.ShowMessageAsync("Export Template", "Template has been successfully saved."); } } else if (s.Name == "ExportButton") { Regex accountBlockRegex = new Regex("\\[Account](.+?)\\[\\/Account]", RegexOptions.Singleline); Match accountBlock = accountBlockRegex.Match(FormatBox.Text); if (string.IsNullOrEmpty(FormatBox.Text) || !accountBlock.Success) { return; } sfd.FileName = "output"; sfd.Filter = "Text File (*.txt)|*.txt|Html Document (*.htm)|*.htm"; if (new Regex(@"<[^>]+>").IsMatch(FormatBox.Text)) { sfd.DefaultExt = ".htm"; Utils.UseDefaultExtAsFilterIndex(sfd); } if (sfd.ShowDialog() != true || string.IsNullOrEmpty(sfd.FileName)) { return; } StringBuilder sb = new StringBuilder(); try { foreach (Account account in _accounts) { string accountTemplate = accountBlock.Groups[1].Value; accountTemplate = PopulateLists(accountTemplate, account); accountTemplate = accountTemplate.HenriFormat(account); sb.Append(accountTemplate); } string output = sb.ToString().Trim(Environment.NewLine.ToCharArray()); output = FormatBox.Text.Replace(accountBlock.Groups[0].Value, output); Regex indexRegex = new Regex("%index=?(\\d+)?:?(\\d+)?%"); MatchCollection indexMatches = indexRegex.Matches(output); if (indexMatches.Count > 0) { int index = 1; int digits = 1; string indexStartValue = indexMatches[0].Groups[1].Value; if (!string.IsNullOrEmpty(indexStartValue)) { index = int.Parse(indexStartValue); } string indexDigitsValue = indexMatches[0].Groups[2].Value; if (!string.IsNullOrEmpty(indexDigitsValue)) { int d = int.Parse(indexDigitsValue); if (d > 0) { digits = d; } } output = indexRegex.Replace(output, m => index++.ToString(new string('0', digits))); } using (var sw = new StreamWriter(sfd.FileName)) { sw.Write(output); } await this.ShowMessageAsync("Export", $"Accounts Exported: {_accounts.Count()}"); Close(); } catch (Exception ex) { Utils.ExportException(ex); await this.ShowMessageAsync("Export", "An error occured. Check the logs for more information."); } } }
private void CmExportCustom(object sender, RoutedEventArgs e) { if (AccountsDataGrid.SelectedItems.Count == 0) { return; } ExportWindow window = new ExportWindow(AccountsDataGrid.SelectedItems.Cast<Account>()); window.ShowDialog(); }