Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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 = "";
            }
        }
Ejemplo n.º 6
0
        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);
        }