예제 #1
0
        private async Task PreviousLineMatch()
        {
            FormattedGrepResult selectedResult = inputData.SelectedNodes.OfType <FormattedGrepResult>()
                                                 .Where(n => n != null)
                                                 .FirstOrDefault();
            FormattedGrepLine selectedLine = inputData.SelectedNodes.OfType <FormattedGrepLine>()
                                             .Where(n => n != null)
                                             .OrderBy(n => n.GrepLine.LineNumber)
                                             .FirstOrDefault();

            if (selectedResult == null && selectedLine == null)
            {
                var lastResult = inputData.LastOrDefault();
                if (lastResult != null)
                {
                    await SelectLastChild(lastResult);
                }
            }
            else if (selectedLine != null)
            {
                if (!SelectPreviousLine(selectedLine))
                {
                    selectedLine.Parent.IsExpanded = false;
                    await SelectPreviousResult(selectedLine);
                }
            }
            else
            {
                await SelectPreviousResult(selectedResult);
            }
        }
예제 #2
0
        private void treeDragStarted(UIElement uiElt)
        {
            _isMouseDown = false;
            Mouse.Capture(uiElt);

            DataObject data = new DataObject();

            if (tvSearchResult.SelectedItem is FormattedGrepLine)
            {
                FormattedGrepLine selectedNode = (FormattedGrepLine)tvSearchResult.SelectedItem;
                data.SetData(DataFormats.Text, selectedNode.GrepLine.LineText);
            }
            else if (tvSearchResult.SelectedItem is FormattedGrepResult)
            {
                FormattedGrepResult result = (FormattedGrepResult)tvSearchResult.SelectedItem;
                StringCollection    files  = new StringCollection();
                files.Add(result.GrepResult.FileNameReal);
                data.SetFileDropList(files);
            }


            DragDropEffects supportedEffects = DragDropEffects.Move | DragDropEffects.Copy;
            // Perform DragDrop
            DragDropEffects effects = System.Windows.DragDrop.DoDragDrop(_draggedElt, data, supportedEffects);

            // Clean up
            Mouse.Capture(null);
            _draggedElt = null;
        }
예제 #3
0
        private async Task NextFileMatch()
        {
            FormattedGrepResult selectedResult = inputData.SelectedNodes.OfType <FormattedGrepResult>()
                                                 .Where(n => n != null)
                                                 .LastOrDefault();
            FormattedGrepLine selectedLine = inputData.SelectedNodes.OfType <FormattedGrepLine>()
                                             .Where(n => n != null)
                                             .OrderBy(n => n.GrepLine.LineNumber)
                                             .LastOrDefault();

            if (selectedResult == null && selectedLine == null)
            {
                var firstResult = inputData.FirstOrDefault();
                if (firstResult != null)
                {
                    await SelectFirstChild(firstResult);
                }
            }
            else if (selectedLine != null)
            {
                await SelectNextResult(selectedLine);
            }
            else
            {
                await SelectNextResult(selectedResult.FormattedLines.First());
            }
        }
예제 #4
0
 private void btnCopyNameToClipboard_Click(object sender, RoutedEventArgs e)
 {
     if (tvSearchResult.SelectedItem is FormattedGrepLine)
     {
         FormattedGrepLine selectedNode = (FormattedGrepLine)tvSearchResult.SelectedItem;
         Clipboard.SetText(System.IO.Path.GetFileName(selectedNode.Parent.GrepResult.FileNameDisplayed));
     }
     else if (tvSearchResult.SelectedItem is FormattedGrepResult)
     {
         FormattedGrepResult result = (FormattedGrepResult)tvSearchResult.SelectedItem;
         Clipboard.SetText(System.IO.Path.GetFileName(result.GrepResult.FileNameDisplayed));
     }
 }
예제 #5
0
 private void copyToClipboard()
 {
     if (tvSearchResult.SelectedItem is FormattedGrepLine)
     {
         FormattedGrepLine selectedNode = (FormattedGrepLine)tvSearchResult.SelectedItem;
         Clipboard.SetText(selectedNode.GrepLine.LineText);
     }
     else if (tvSearchResult.SelectedItem is FormattedGrepResult)
     {
         FormattedGrepResult result = (FormattedGrepResult)tvSearchResult.SelectedItem;
         Clipboard.SetText(result.GrepResult.FileNameDisplayed);
     }
 }
예제 #6
0
 private void btnExclude_Click(object sender, RoutedEventArgs e)
 {
     if (tvSearchResult.SelectedItem is FormattedGrepLine)
     {
         FormattedGrepLine selectedNode = (FormattedGrepLine)tvSearchResult.SelectedItem;
         inputData.Remove(selectedNode.Parent);
     }
     else if (tvSearchResult.SelectedItem is FormattedGrepResult)
     {
         FormattedGrepResult selectedNode = (FormattedGrepResult)tvSearchResult.SelectedItem;
         inputData.Remove(selectedNode);
     }
 }
예제 #7
0
        private async Task SelectPreviousResult(FormattedGrepLine currentLine)
        {
            var grepResult = currentLine.Parent;
            int idx        = inputData.IndexOf(grepResult) - 1;

            if (idx < 0)
            {
                idx = inputData.Count - 1;
            }

            var previousResult = inputData[idx];

            await SelectLastChild(previousResult);
        }
예제 #8
0
        private async Task SelectNextResult(FormattedGrepLine currentLine)
        {
            var grepResult = currentLine.Parent;
            int idx        = inputData.IndexOf(grepResult) + 1;

            if (idx >= inputData.Count)
            {
                idx = 0;
            }

            var nextResult = inputData[idx];

            await SelectFirstChild(nextResult);
        }
예제 #9
0
 private void btnOpenContainingFolder_Click(object sender, RoutedEventArgs e)
 {
     if (tvSearchResult.SelectedItem is FormattedGrepLine)
     {
         FormattedGrepLine selectedNode = (FormattedGrepLine)tvSearchResult.SelectedItem;
         //ShellIntegration.OpenFolder(selectedNode.Parent.GrepResult.FileNameReal);
         Utils.OpenContainingFolder(selectedNode.Parent.GrepResult.FileNameReal, selectedNode.GrepLine.LineNumber);
     }
     else if (tvSearchResult.SelectedItem is FormattedGrepResult)
     {
         FormattedGrepResult selectedNode = (FormattedGrepResult)tvSearchResult.SelectedItem;
         //ShellIntegration.OpenFolder(selectedNode.GrepResult.FileNameReal);
         Utils.OpenContainingFolder(selectedNode.GrepResult.FileNameReal, -1);
     }
 }
예제 #10
0
        private void btnShowFileProperties_Click(object sender, RoutedEventArgs e)
        {
            string fileName = "";

            if (tvSearchResult.SelectedItem is FormattedGrepLine)
            {
                FormattedGrepLine selectedNode = (FormattedGrepLine)tvSearchResult.SelectedItem;
                fileName = selectedNode.Parent.GrepResult.FileNameReal;
            }
            else if (tvSearchResult.SelectedItem is FormattedGrepResult)
            {
                FormattedGrepResult selectedNode = (FormattedGrepResult)tvSearchResult.SelectedItem;
                fileName = selectedNode.GrepResult.FileNameReal;
            }

            if (fileName != "" && File.Exists(fileName))
            {
                ShellIntegration.ShowFileProperties(fileName);
            }
        }
예제 #11
0
        private bool SelectPreviousLine(FormattedGrepLine currentLine)
        {
            var grepResult   = currentLine.Parent;
            var previousLine = grepResult.FormattedLines.Where(l => !l.GrepLine.IsContext &&
                                                               l.GrepLine.LineNumber < currentLine.GrepLine.LineNumber)
                               .LastOrDefault();

            if (previousLine != null)
            {
                var          parent    = GetTreeViewItemParent(treeView, currentLine);
                ItemsControl container = parent as ItemsControl ?? treeView;
                int          depth     = parent != null ? 1 : 2;
                var          tvi       = GetTreeViewItem(container, previousLine, currentLine, SearchDirection.Up, depth);
                if (tvi != null)
                {
                    tvi.IsSelected = true;
                    return(true);
                }
            }
            return(false);
        }
예제 #12
0
 public void PreviewFile(FormattedGrepLine formattedGrepLine, RectangleF parentWindow)
 {
     if (PreviewFileContent)
     {
         int lineNumber = formattedGrepLine.GrepLine.LineNumber;
         FormattedGrepResult result = formattedGrepLine.Parent;
         previewFile(result.GrepResult.FileNameReal, result.GrepResult, lineNumber, parentWindow);
     }
 }
예제 #13
0
        public void OpenFile(FormattedGrepLine selectedNode, bool useCustomEditor)
        {
            try
            {
                // Line was selected
                int lineNumber = selectedNode.GrepLine.LineNumber;

                FormattedGrepResult result = selectedNode.Parent;
                OpenFileArgs fileArg = new OpenFileArgs(result.GrepResult, result.GrepResult.Pattern, lineNumber, useCustomEditor, settings.Get<string>(GrepSettings.Key.CustomEditor), settings.Get<string>(GrepSettings.Key.CustomEditorArgs));
                dnGREP.Engines.GrepEngineFactory.GetSearchEngine(result.GrepResult.FileNameReal, new GrepEngineInitParams(false, 0, 0, 0.5)).OpenFile(fileArg);
                if (fileArg.UseBaseEngine)
                    Utils.OpenFile(new OpenFileArgs(result.GrepResult, result.GrepResult.Pattern, lineNumber, useCustomEditor, settings.Get<string>(GrepSettings.Key.CustomEditor), settings.Get<string>(GrepSettings.Key.CustomEditorArgs)));
            }
            catch (Exception ex)
            {
                logger.LogException(LogLevel.Error, "Failed to open file.", ex);
                if (useCustomEditor)
                    MessageBox.Show("There was an error opening file by custom editor. \nCheck editor path via \"Options..\".", "Failure", MessageBoxButton.OK, MessageBoxImage.Error);
                else
                    MessageBox.Show("There was an error opening file. Please examine the error log.", "Failure", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }