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; }
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); } }
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()); } }
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; } }
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); }
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)); } }
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); } }
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); } }
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); } }
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; } } }
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); } }
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); } } } } }
public void PreviewFile(FormattedGrepResult formattedGrepResult, RectangleF parentWindow) { if (PreviewFileContent) { previewFile(formattedGrepResult.GrepResult.FileNameReal, formattedGrepResult.GrepResult, 0, parentWindow); } }
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); } }