Range TrimRange(Range range, TrimDialog.Result result) { var index = range.Start; var length = range.Length; Data.Trim(ref index, ref length, result.TrimChars, result.Start, result.End); if ((index == range.Start) && (length == range.Length)) return range; return Range.FromIndex(index, length); }
string TrimString(string str, TrimDialog.Result result) { var start = 0; var end = str.Length; if (result.Start) { while ((start < end) && (result.TrimChars.Contains(str[start]))) ++start; } if (result.End) { while ((start < end) && (result.TrimChars.Contains(str[end - 1]))) --end; } return str.Substring(start, end - start); }
/// <summary> /// This event is raised when the user clicks on the Trim By Length or Trim By Quality Score /// menu item. It will start the Trim dialog. /// </summary> /// <param name="sender">MenuItem element</param> /// <param name="e">Routed event args</param> private void OnTrimClick(object sender, RoutedEventArgs e) { MenuItem menu = sender as MenuItem; TrimDialog trim = null; /// If an instance of SeqcosMainWindow is available, populate the input file /// with the input filename. Otherwise, leave blank. if (this.application != null) { trim = new TrimDialog(this.fileTypes, this.application.FileList.FileName, this.application.SelectedParser); } else { trim = new TrimDialog(this.fileTypes); } trim.PrepareToTrim += new EventHandler <FilterToolArgs>(this.OnTrimRunClicked); trim.Owner = this; // Determine which tab should be in focus upon opening if (menu.Uid.Equals("TrimByLength")) { trim.tabByLength.IsSelected = true; trim.trimLengthValue.Focus(); } else if (menu.Uid.Equals("TrimByQualityScore")) { trim.tabByQuality.IsSelected = true; trim.trimQualityValue.Focus(); } else if (menu.Uid.Equals("TrimByRegex")) { trim.tabByRegex.IsSelected = true; trim.trimRegexPattern.Focus(); } trim.ShowDialog(); }
void Command_Text_Select_Trim(TrimDialog.Result result) => Selections.Replace(Selections.AsParallel().AsOrdered().Select(range => TrimRange(range, result)).ToList());
void Command_Text_Trim(TrimDialog.Result result) => ReplaceSelections(Selections.AsParallel().AsOrdered().Select(str => TrimString(GetString(str), result)).ToList());
public MainForm() { instance = this; InitializeComponent(); CheckForIllegalCrossThreadCalls = false; #region Right Click Menu var menu = new ContextMenu(); menu_play = menu.MenuItems.Add("Play", (sender, e) => { var path = getGameConfigPath(listView1.SelectedItems[0].Text, false); MusicPlayForm.getInstance(path + (File.Exists(path + ".modified") ? ".modified" : ".original")).Show(); MusicPlayForm.player.Play(); }); menu_edit = menu.MenuItems.Add("Edit", new MenuItem[] { menu_trim = new MenuItem("Trim", (sender, e) => { var dialog = new TrimDialog(); if (dialog.ShowDialog() == DialogResult.OK) { // TODO. } }), menu_volume = new MenuItem("Adjust Volume", (sender, e) => { var dialog = new AdjustVolumeDialog(); if (dialog.ShowDialog() == DialogResult.OK) { var items = listView1.SelectedItems; var processing = new ProcessingDialog(0, items.Count); new Thread(new ThreadStart(() => { int result = dialog.Result; var failed = ""; foreach (ListViewItem item in items) { item.SubItems[2].Text = result.ToString(); if (!reConvertModifiedMedia(item)) { failed += "\n" + item.Text; item.SubItems[2].Text = "100"; File.Delete(getGameConfigPath(item.Text, false) + ".modified"); } processing.update(); } processing.update(); saveTracks(); MessageBox.Show("Processed " + items.Count + " file(s)." + (failed == "" ? "" : "\n\nFollowing file(s) process failed:" + failed), "Done", MessageBoxButtons.OK, MessageBoxIcon.Information); })).Start(); processing.ShowDialog(); } }) }); menu_alias = menu.MenuItems.Add("Set Alias", (sender, e) => { listView1_MouseDoubleClick(); }); menu_remove = menu.MenuItems.Add("Remove", (sender, e) => { if (!Running && listView1.SelectedItems.Count != 0) { foreach (ListViewItem item in listView1.SelectedItems) { listView1.Items.Remove(item); var path = getGameConfigPath(item.Text, false); File.Delete(path + ".original"); File.Delete(path + ".modified"); } for (int i = 0; i < listView1.Items.Count; i++) { listView1.Items[i].SubItems[3].Text = (i + 1).ToString(); } saveTracks(); } }); menu.Popup += (sender, e) => { if (listView1.SelectedItems.Count == 0) { menu_play.Visible = menu_alias.Visible = menu_edit.Visible = menu_remove.Visible = false; } else { menu_edit.Visible = menu_remove.Visible = true; menu_play.Visible = menu_alias.Visible = menu_trim.Visible = listView1.SelectedItems.Count == 1; } }; listView1.ContextMenu = menu; #endregion }