public void UpdateLastDetectedChangedPath(ChangedPath fullPath)
 {
     Dispatcher.Invoke(() =>
     {
         PathLabel.Content = fullPath;
     });
 }
 public bool PathExists(ChangedPath fullPath)
 {
     _fileExists = fullPath.ToFileInfo().Exists;
     if (!_fileExists)
     {
         MessageBox.Show(fullPath + " does not exist anymore");
         MessageBox.Show(fullPath + " does not exist anymore");
     }
     return(_fileExists);
 }
 public void AddToClipboard(ChangedPath fullPath)
 {
     using (var stream = CreateCopyDescription())
     {
         IDataObject data = new DataObject();
         data.SetData(DataFormats.FileDrop, new[] { fullPath.ToString() }, true);
         data.SetData("Preferred DropEffect", stream);
         Clipboard.Clear();
         Clipboard.SetDataObject(data, true);
     }
 }
示例#4
0
 public void OnChanged(ChangedPath changedPath)
 {
     try
     {
         _pathContext.Save(changedPath);
     }
     catch (Exception ex)
     {
         _diagnosticMessages.NotifyOnError(ex);
     }
 }
 public void OnChanged(ChangedPath changedPath)
 {
     if (_globs.Any(Matches(changedPath)))
     {
         _applicationUseCases.OnChanged(changedPath);
     }
     else
     {
         Console.WriteLine("None of the " + _globs.Count + " globs matched " + changedPath);
         //bug change this to logging
     }
 }
示例#6
0
        public void ShouldAllowAllPathsWhenPassedBlob(string blob, string extension, int expectedInnerObserverCallCount)
        {
            //GIVEN
            var innerObserver = Substitute.For <PathChangesObserver>();
            var filter        = new FilteringObserver(innerObserver, blob);
            var changedPath   = new ChangedPath(Any.String() + extension);

            //WHEN
            filter.OnChanged(changedPath);

            //THEN
            innerObserver.Received(expectedInnerObserverCallCount).OnChanged(changedPath);
        }
示例#7
0
 internal ChangeArgs PrependViewModel(IViewModel viewModel)
 {
     return(new ChangeArgs(
                ChangeType,
                Stage,
                ChangedProperty,
                ChangedPath.Prepend(viewModel),
                Reason
                )
     {
         NewItems = NewItems,
         OldItems = OldItems
     });
 }
示例#8
0
        public void ShouldNotIssueNotificationWhenNoneOfThePatternsIsMatchedByInput()
        {
            //GIVEN
            var nonMatchablePattern = "*.lolokimono";
            var innerObserver       = Substitute.For <PathChangesObserver>();
            var filter      = new FilteringObserver(innerObserver, nonMatchablePattern);
            var changedPath = new ChangedPath(Any.String());

            //WHEN
            filter.OnChanged(changedPath);

            //THEN
            innerObserver.Received(0).OnChanged(changedPath);
        }
        public void ShouldDisplayInformationAndUpdateLastPathChangedInfoOnPathChangeEvent()
        {
            //GIVEN
            var context = new ArtifactNotificationDriver();

            context.StartApplication().ClearRecordedEvents();
            var changedPathDir  = Any.String();
            var changedPathFile = Any.String();
            var changedPath     = new ChangedPath(changedPathDir, changedPathFile);

            //WHEN
            context.FileSystem.ChangeOccursTo(changedPathDir, changedPathFile);

            //THEN
            context.DiagnosticBubble.ShouldDisplayMessageThatThereWasChangeTo(changedPath);
            context.LastDetectedPathChange.ShouldBeUpdatedTo(changedPath);
        }
示例#10
0
        public void Setup()
        {
            _context = new ArtifactNotificationDriver();

            //GIVEN
            _context = new ArtifactNotificationDriver();
            _context.StartApplication();
            var changedPathDir  = Any.String();
            var changedPathFile = Any.String();

            _changedPath = PathTo(changedPathDir, changedPathFile);

            _context.FileSystem.ChangeOccursTo(changedPathDir, changedPathFile);
            _context.ClearRecordedEvents();

            _context.FileSystem.Has(_changedPath);
        }
示例#11
0
 public void Save(ChangedPath fullPath)
 {
     _currentState = _pathStates.ForDetectedChangeTo(fullPath);
     _diagnosticMessages.NotifyMonitoredPathChanged(fullPath);
     _applicationEventsPresenter.UpdateLastDetectedChangedPath(fullPath);
 }
示例#12
0
        void RevisionListViewSelectionChanged(object sender, EventArgs e)
        {
            changesList.Items.Clear();
            if (revisionList.SelectedItems.Count == 0)
            {
                commentRichTextBox.Text    = "";
                commentRichTextBox.Enabled = false;
                return;
            }
            commentRichTextBox.Enabled = true;
            ListViewItem item       = revisionList.SelectedItems[0];
            LogMessage   logMessage = item.Tag as LogMessage;

            commentRichTextBox.Text = logMessage.Message;
            ChangedPathDictionary changes = logMessage.ChangedPaths;

            if (changes == null)
            {
                changesList.Items.Add("Loading...");
                if (!isLoadingChangedPaths)
                {
                    isLoadingChangedPaths = true;
                    loadChangedPathsItem  = item;
                    ThreadPool.QueueUserWorkItem(LoadChangedPaths);
                }
            }
            else
            {
                int pathWidth     = 70;
                int copyFromWidth = 70;
                using (Graphics g = CreateGraphics())
                {
                    foreach (DictionaryEntry entry in changes)
                    {
                        string path = (string)entry.Key;
                        path = path.Replace('\\', '/');
                        SizeF size = g.MeasureString(path, changesList.Font);
                        if (size.Width + 4 > pathWidth)
                        {
                            pathWidth = (int)size.Width + 4;
                        }
                        ChangedPath change   = (ChangedPath)entry.Value;
                        string      copyFrom = change.CopyFromPath;
                        if (copyFrom == null)
                        {
                            copyFrom = string.Empty;
                        }
                        else
                        {
                            copyFrom = copyFrom + " : r" + change.CopyFromRevision;
                            size     = g.MeasureString(copyFrom, changesList.Font);
                            if (size.Width + 4 > copyFromWidth)
                            {
                                copyFromWidth = (int)size.Width + 4;
                            }
                        }
                        ListViewItem newItem = new ListViewItem(new string[] {
                            SvnClient.GetActionString(change.Action),
                            path,
                            copyFrom
                        });
                        changesList.Items.Add(newItem);
                    }
                }
                changesList.Columns[1].Width = pathWidth;
                changesList.Columns[2].Width = copyFromWidth;
            }
        }
示例#13
0
 public void ShouldDisplayMessageThatThereWasChangeTo(ChangedPath changedPath)
 {
     _diagnosticMessages.Received(1).NotifyMonitoredPathChanged(changedPath);
 }
示例#14
0
 public void ShouldReceiveItemFrom(ChangedPath changedPath)
 {
     _systemServices.Received(1).AddToClipboard(changedPath);
 }
 private static Func <Minimatcher, bool> Matches(ChangedPath changedPath)
 {
     return(g => g.IsMatch(changedPath.ToString()));
 }
 public void ShouldBeUpdatedTo(ChangedPath changedPath)
 {
     _presenter.Received(1).UpdateLastDetectedChangedPath(changedPath);
 }
示例#17
0
 public void ShouldOpenPathView(ChangedPath path)
 {
     _systemServices.Received(1).StartExplorer(path);
 }
 public void NotifyMonitoredPathChanged(ChangedPath fullPath)
 {
     _taskbarIcon.ShowBalloonTipInfo("Changed", fullPath.ToString());
 }
示例#19
0
 public PathDetectedState ForDetectedChangeTo(ChangedPath fullPath)
 {
     return(new PathDetectedState(fullPath, _systemServices, _applicationEventsPresenter));
 }
 public void UpdateLastPathCopiedToClipboard(ChangedPath fullPath)
 {
     FileInClipboard.Content = fullPath;
 }
 public void StartExplorer(ChangedPath fullPath)
 {
     Process.Start("explorer.exe", "/select," + fullPath + "\"");
 }
 public void Has(ChangedPath anyPath)
 {
     _systemServices.PathExists(anyPath).Returns(true);
 }
 public PathDetectedState(ChangedPath fullPath, SystemServices systemServices, ApplicationEventsPresenter applicationEventsPresenter)
 {
     _fullPath                   = fullPath;
     _systemServices             = systemServices;
     _applicationEventsPresenter = applicationEventsPresenter;
 }
示例#24
0
 void OnPathChanged()
 {
     ChangedPath?.Invoke();
 }