Beispiel #1
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;
        }
Beispiel #2
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);
            }
        }
Beispiel #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());
            }
        }
Beispiel #4
0
 public LazyResultsList(GrepSearchResult result, FormattedGrepResult formattedResult)
 {
     this.result          = result;
     this.formattedResult = formattedResult;
     if ((result.Matches != null && result.Matches.Count > 0) || !result.IsSuccess)
     {
         GrepSearchResult.GrepLine emptyLine = new GrepSearchResult.GrepLine(-1, "", true, null);
         var dummyLine = new FormattedGrepLine(emptyLine, formattedResult, 30, false);
         this.Add(dummyLine);
         isLoaded = false;
     }
 }
Beispiel #5
0
        private async Task SelectPreviousResult(FormattedGrepResult result)
        {
            int idx = inputData.IndexOf(result) - 1;

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

            var previousResult = inputData[idx];

            await SelectLastChild(previousResult);
        }
Beispiel #6
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));
     }
 }
Beispiel #7
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);
     }
 }
Beispiel #8
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);
     }
 }
Beispiel #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);
     }
 }
Beispiel #10
0
        private async Task SelectLastChild(FormattedGrepResult grepResult)
        {
            if (!grepResult.IsExpanded)
            {
                await grepResult.ExpandTreeNode();
            }
            var lastLine = grepResult.FormattedLines.Where(l => !l.GrepLine.IsContext).LastOrDefault();

            if (lastLine != null)
            {
                var          parent    = GetTreeViewItem(treeView, grepResult, null, SearchDirection.Up, 1);
                ItemsControl container = parent as ItemsControl ?? treeView;
                int          depth     = parent != null ? 1 : 2;
                var          tvi       = GetTreeViewItem(container, lastLine, null, SearchDirection.Up, depth);
                if (tvi != null)
                {
                    tvi.IsSelected = true;
                }
            }
        }
Beispiel #11
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);
            }
        }
Beispiel #12
0
        private void btnRenameFile_Click(object sender, RoutedEventArgs e)
        {
            FormattedGrepResult searchResult = null;
            var node = inputData.SelectedNodes.FirstOrDefault();

            if (node is FormattedGrepLine lineNode)
            {
                searchResult = lineNode.Parent;
            }
            else if (node is FormattedGrepResult fileNode)
            {
                searchResult = fileNode;
            }

            if (searchResult != null && searchResult.GrepResult != null &&
                !string.IsNullOrEmpty(searchResult.GrepResult.FileNameReal))
            {
                var grepResult = searchResult.GrepResult;
                var dlg        = new RenameWindow
                {
                    Owner      = Application.Current.MainWindow,
                    SourcePath = grepResult.FileNameReal
                };

                var result = dlg.ShowDialog();
                if (result.HasValue && result.Value)
                {
                    string destPath = dlg.DestinationPath;
                    if (!string.IsNullOrEmpty(destPath) && !File.Exists(destPath))
                    {
                        try
                        {
                            string ext = string.Empty;
                            if (grepResult.FileNameReal != grepResult.FileNameDisplayed)
                            {
                                int index = grepResult.FileNameDisplayed.IndexOf(grepResult.FileNameReal, StringComparison.Ordinal);
                                if (index >= 0)
                                {
                                    ext = grepResult.FileNameDisplayed.Remove(index, grepResult.FileNameReal.Length);
                                }
                            }

                            File.Move(grepResult.FileNameReal, destPath);

                            grepResult.FileNameReal      = destPath;
                            grepResult.FileNameDisplayed = destPath + ext;

                            // update label in the results tree
                            searchResult.SetLabel();
                            // update label on the preview window
                            OnSelectedItemsChanged(this, e);
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Rename failed: " + ex.Message, "Rename File",
                                            MessageBoxButton.OK, MessageBoxImage.Error);
                        }
                    }
                }
            }
        }
Beispiel #13
0
 public void PreviewFile(FormattedGrepResult formattedGrepResult, RectangleF parentWindow)
 {
     if (PreviewFileContent)
     {                
         previewFile(formattedGrepResult.GrepResult.FileNameReal, formattedGrepResult.GrepResult, 0, parentWindow);
     }            
 }
Beispiel #14
0
 public void OpenFile(FormattedGrepResult result, bool useCustomEditor)
 {
     try
     {
         // Line was selected
         int lineNumber = 0;
         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);
     }
 }