예제 #1
0
        void PerformStep(bool isForward)
        {
            MediaFileVM file = projectVM.FileSet.FirstOrDefault(f => f.SelectedGrabber == SelectionPosition.All);

            if (file != null)
            {
                var oneFrame = new Time(1000 / file.Fps);
                if (isForward)
                {
                    file.Offset = file.Offset + oneFrame;
                }
                else
                {
                    file.Offset = file.Offset - oneFrame;
                }
            }
            else
            {
                if (isForward)
                {
                    videoPlayerVM.SeekToNextFrameCommand.Execute();
                }
                else
                {
                    videoPlayerVM.SeekToPreviousFrameCommand.Execute();
                }
            }
        }
예제 #2
0
        public async Task Replace_FileNotContained_Added()
        {
            dialogMock.Setup(d => d.OpenMediaFile(It.IsAny <object> ())).Returns(new MediaFile {
                FilePath = "new"
            });

            MediaFileSet   fileSet   = new MediaFileSet();
            MediaFileSetVM fileSetVM = new MediaFileSetVM {
                Model = fileSet
            };

            fileSet.Add(new MediaFile {
                FilePath = "old"
            });

            MediaFileVM newFileVM = await App.Current.EventsBroker.PublishWithReturn <ReplaceMediaFileEvent, MediaFileVM> (new ReplaceMediaFileEvent {
                OldFileSet = fileSetVM,
                OldFile    = new MediaFileVM {
                    Model = new MediaFile {
                        FilePath = "not contained"
                    }
                },
            });

            Assert.IsNotNull(newFileVM);
            Assert.IsNotNull(newFileVM.Model);
            Assert.AreEqual("new", newFileVM.FilePath);
            Assert.AreEqual("new", newFileVM.Model.FilePath);
            Assert.AreEqual(2, fileSetVM.Count());
        }
        void Update()
        {
            MediaFileVM file = ViewModel.FileSet.FirstOrDefault();

            if (ViewModel.HomeTeamShield != null)
            {
                homeShield    = ViewModel.HomeTeamShield.Scale(Constants.SHIELD_IMAGE_SIZE, Constants.SHIELD_IMAGE_SIZE);
                homeMaskColor = null;
            }
            else
            {
                homeShield    = App.Current.ResourcesLocator.LoadIcon("vas-default-shield", Constants.SHIELD_IMAGE_SIZE);
                homeMaskColor = Colors.DefaultShield;
            }
            if (ViewModel.AwayTeamShield != null)
            {
                awayShield    = ViewModel.AwayTeamShield.Scale(Constants.SHIELD_IMAGE_SIZE, Constants.SHIELD_IMAGE_SIZE);
                awayMaskColor = null;
            }
            else
            {
                awayShield    = App.Current.ResourcesLocator.LoadIcon("vas-default-shield", Constants.SHIELD_IMAGE_SIZE);
                awayMaskColor = Colors.DefaultShield;
            }
            description = FormatDesc();
        }
예제 #4
0
        void AddCamera(MediaFileVM fileVM, int width, int height, ref int row)
        {
            var l = App.Current.ViewLocator.Retrieve("CameraLabelView") as CameraLabelView;

            l.Width           = width;
            l.Height          = height;
            l.OffsetY         = row * height;
            l.BackgroundColor = App.Current.Style.PaletteBackgroundLight;
            l.ViewModel       = fileVM;
            AddLabel(l);
            row++;
        }
예제 #5
0
        public void TestHotkey_FrameStepDown_NoCameraSelected()
        {
            Start();
            MediaFileVM mediaFile      = projectVM.FileSet.First();
            Time        previousOffset = mediaFile.Offset;

            mediaFile.SelectedGrabber = SelectionPosition.All;
            App.Current.KeyContextManager.HandleKeyPressed(App.Current.Keyboard.ParseName("Right"));

            Assert.AreEqual(previousOffset + new Time(1000 / mediaFile.Fps), mediaFile.Offset);
            // FIXME: It should be called once but the forwarder bug makes it 3
            videoPlayerControllerMock.Verify(pl => pl.Seek(new Time(0), true, false, false), Times.Exactly(3));
        }
예제 #6
0
        void HandleReplaceMediaFile(ReplaceMediaFileEvent evt)
        {
            MediaFile file = App.Current.Dialogs.OpenMediaFile();

            if (file == null)
            {
                evt.ReturnValue = evt.OldFile;
                return;
            }
            MediaFileVM fileVM = new MediaFileVM {
                Model = file
            };

            Replace(evt.OldFileSet, evt.OldFile, fileVM);
            evt.ReturnValue = fileVM;
        }
예제 #7
0
        async void HandleButtonPressEvent(object o, Gtk.ButtonPressEventArgs args)
        {
            if (args.Event.Button != 1 || disableChanges)
            {
                return;
            }
            MediaFileVM file = await App.Current.EventsBroker.PublishWithReturn <ReplaceMediaFileEvent, MediaFileVM> (new ReplaceMediaFileEvent {
                OldFileSet = ViewModel,
                OldFile    = mediaFile
            });

            mediaFile = file;
            UpdateMediaFile();
            if (Changed != null)
            {
                Changed(this, new EventArgs());
            }
        }
예제 #8
0
        // Copied and migrated from MediaFileSet.cs
        bool Replace(MediaFileSetVM fileSet, MediaFileVM oldFile, MediaFileVM newFile)
        {
            bool found = false;

            if (fileSet.Contains(oldFile))
            {
                if (newFile != null && oldFile != null)
                {
                    newFile.Name   = oldFile.Name;
                    newFile.Offset = oldFile.Offset;
                }

                fileSet.ViewModels [fileSet.ViewModels.IndexOf(oldFile)] = newFile;
                found = true;
            }
            else
            {
                fileSet.ViewModels.Add(newFile);
            }

            return(found);
        }
예제 #9
0
        public async Task Replace_FileNotSelected_NothingChanged()
        {
            dialogMock.Setup(d => d.OpenMediaFile(It.IsAny <object> ())).Returns <MediaFile> (null);

            MediaFileSet   fileSet   = new MediaFileSet();
            MediaFileSetVM fileSetVM = new MediaFileSetVM {
                Model = fileSet
            };

            fileSet.Add(new MediaFile {
                FilePath = "old"
            });

            MediaFileVM newFileVM = await App.Current.EventsBroker.PublishWithReturn <ReplaceMediaFileEvent, MediaFileVM> (new ReplaceMediaFileEvent {
                OldFileSet = fileSetVM,
                OldFile    = fileSetVM.ViewModels.First(),
            });

            Assert.IsNotNull(newFileVM);
            Assert.IsNotNull(newFileVM.Model);
            Assert.AreSame(fileSetVM.ViewModels.First(), newFileVM);
            Assert.AreEqual(fileSetVM.ViewModels.First().Model, newFileVM.Model);
            Assert.AreEqual(1, fileSetVM.Count());
        }
예제 #10
0
 public void SetMediaFile(MediaFileVM file, bool editable = false)
 {
     mediaFile      = file;
     disableChanges = !editable;
     UpdateMediaFile();
 }
예제 #11
0
 public void SetMediaFileSet(MediaFileSetVM files, MediaFileVM file)
 {
     viewModel = files;
     SetMediaFile(file, true);
 }