private static void FinishBookmarkEdit(ListViewItem item) { if (item != editingBookmark || editingBookmark == null) { return; } FrameBookmark data = (FrameBookmark)item.Tag; if (bookmarkWindow != null && ListViewBookmarks.SelectedItem != item) { if (ListViewBookmarks.SelectedItem != null) { ((ListViewItem)ListViewBookmarks.SelectedItem).Focus(); } else { FocusManager.SetFocusedElement(bookmarkWindow, bookmarkWindow); } } data.TextBoxName.Visibility = Visibility.Collapsed; data.TextName.Text = data.TextBoxName.Text; editingBookmark = null; }
private static int GetBookmarkIndexOfFrame(int frame) { for (int i = 0; i < bookmarkItems.Count; i++) { FrameBookmark data = (FrameBookmark)bookmarkItems[i].Tag; if (data.Frame >= frame) { return(i); } } return(bookmarkItems.Count); }
private static void StartBookmarkEdit(int frame) { if (editingBookmark != null) { FinishBookmarkEdit(editingBookmark); } editingBookmark = bookmarkLookup[frame]; FrameBookmark data = (FrameBookmark)editingBookmark.Tag; data.TextBoxName.Visibility = Visibility.Visible; data.TextBoxName.Focus(); }
private static void RemoveBookmark(int frame) { ListViewItem item = bookmarkLookup[frame]; FrameBookmark data = (FrameBookmark)item.Tag; bookmarkLookup.Remove(data.Frame); int index = bookmarkItems.IndexOf(item); bookmarkItems.RemoveAt(index); if (index < bookmarkItems.Count) { UpdateBookmarkItemAt(index); } }
private static void UpdateBookmarkItemAt(int index) { ListViewItem item = bookmarkItems[index]; FrameBookmark data = (FrameBookmark)item.Tag; data.TextTimelapse.Margin = new Thickness(0); data.ColumnTimelapse.Width = new GridLength(0); if (index > 0) { ListViewItem item2 = bookmarkItems[index - 1]; FrameBookmark data2 = (FrameBookmark)item2.Tag; data.TextTimelapse.Text = "(+" + (data.Frame - data2.Frame) + ")"; if ((!item.IsMouseOver || data.TextName.Text.Length == 0) && showBookmarkTimes) { data.ColumnTimelapse.Width = new GridLength(1, GridUnitType.Auto); data.TextTimelapse.Margin = TextTimelapseMargin; } } else { data.TextTimelapse.Text = ""; } }
private static ListViewItem MakeBookmarkItem(int frame) { ListViewItem item = new ListViewItem(); item.FocusVisualStyle = null; Grid grid = new Grid(); grid.Background = null; ColumnDefinition column = new ColumnDefinition(); column.Width = new GridLength(56); grid.ColumnDefinitions.Add(column); column = new ColumnDefinition(); column.Width = new GridLength(1, GridUnitType.Star); grid.ColumnDefinitions.Add(column); ColumnDefinition columnTimelapse = new ColumnDefinition(); columnTimelapse.Width = new GridLength(1, GridUnitType.Auto); grid.ColumnDefinitions.Add(columnTimelapse); column = new ColumnDefinition(); column.Width = new GridLength(40); grid.ColumnDefinitions.Add(column); item.Content = grid; TextBlock textFrame = new TextBlock(); textFrame.VerticalAlignment = VerticalAlignment.Center; textFrame.HorizontalAlignment = HorizontalAlignment.Left; textFrame.Text = frame.ToString(); textFrame.Margin = new Thickness(5, 0, 0, 0); textFrame.IsHitTestVisible = false; grid.Children.Add(textFrame); Grid.SetColumn(textFrame, 0); TextBlock textName = new TextBlock(); textName.VerticalAlignment = VerticalAlignment.Center; textName.HorizontalAlignment = HorizontalAlignment.Left; textName.IsHitTestVisible = false; textName.TextTrimming = TextTrimming.CharacterEllipsis; textName.Margin = new Thickness(2, 0, 0, 0); grid.Children.Add(textName); Grid.SetColumn(textName, 1); TextBlock textTimelapse = new TextBlock(); textTimelapse.VerticalAlignment = VerticalAlignment.Center; textTimelapse.HorizontalAlignment = HorizontalAlignment.Left; textTimelapse.IsHitTestVisible = false; textTimelapse.Margin = TextTimelapseMargin; grid.Children.Add(textTimelapse); Grid.SetColumn(textTimelapse, 2); ImageButton buttonEdit = new ImageButton(); buttonEdit.VerticalAlignment = VerticalAlignment.Center; buttonEdit.HorizontalAlignment = HorizontalAlignment.Right; buttonEdit.Source = PGImages.BookmarkEdit; buttonEdit.Height = 16; buttonEdit.Width = 16; buttonEdit.Margin = new Thickness(0, 1, 22, 0); buttonEdit.Padding = new Thickness(0); buttonEdit.Click += (o, e) => { StartBookmarkEdit(frame); }; grid.Children.Add(buttonEdit); Grid.SetColumn(buttonEdit, 3); ImageButton buttonRemove = new ImageButton(); buttonRemove.VerticalAlignment = VerticalAlignment.Center; buttonRemove.HorizontalAlignment = HorizontalAlignment.Right; buttonRemove.Source = PGImages.BookmarkRemove; buttonRemove.Height = 16; buttonRemove.Width = 16; buttonRemove.Margin = new Thickness(0, 1, 2, 0); buttonRemove.Padding = new Thickness(0); buttonRemove.Click += (o, e) => { RemoveBookmark(frame); }; grid.Children.Add(buttonRemove); Grid.SetColumn(buttonRemove, 3); TextBox textBoxName = new TextBox(); textBoxName.VerticalAlignment = VerticalAlignment.Stretch; textBoxName.HorizontalAlignment = HorizontalAlignment.Stretch; textBoxName.Padding = new Thickness(0, 0, 0, 0); textBoxName.Visibility = Visibility.Collapsed; textBoxName.LostKeyboardFocus += (o, e) => { FinishBookmarkEdit(item); }; textBoxName.PreviewKeyDown += (o, e) => { if (e.Key == Key.Enter || e.Key == Key.Escape) { FinishBookmarkEdit(item); } }; grid.Children.Add(textBoxName); Grid.SetColumn(textBoxName, 0); Grid.SetColumnSpan(textBoxName, 4); item.MouseEnter += (o, e) => { FrameBookmark data = (FrameBookmark)item.Tag; if (data.TextName.Text.Length > 0 && showBookmarkTimes) { data.ColumnTimelapse.Width = new GridLength(0); data.TextTimelapse.Margin = new Thickness(0); } }; item.MouseLeave += (o, e) => { FrameBookmark data = (FrameBookmark)item.Tag; if (showBookmarkTimes && bookmarkItems.IndexOf(item) > 0) { data.ColumnTimelapse.Width = new GridLength(1, GridUnitType.Auto); data.TextTimelapse.Margin = TextTimelapseMargin; } }; item.Tag = new FrameBookmark(item, columnTimelapse, textTimelapse, textName, textBoxName, frame); item.Style = Application.Current.Resources[typeof(ListViewItem)] as Style; return(item); }