public LogWindow AddFilterTab(FilterPipe pipe, string title, ILogLineColumnizer preProcessColumnizer) { LogWindow logWin = AddFileTab(pipe.FileName, true, title, false, preProcessColumnizer); if (pipe.FilterParams.searchText.Length > 0) { ToolTip tip = new ToolTip(this.components); tip.SetToolTip(logWin, "Filter: \"" + pipe.FilterParams.searchText + "\"" + (pipe.FilterParams.isInvert ? " (Invert match)" : "") + (pipe.FilterParams.columnRestrict ? "\nColumn restrict" : "") ); tip.AutomaticDelay = 10; tip.AutoPopDelay = 5000; LogWindowData data = logWin.Tag as LogWindowData; data.toolTip = tip; } return(logWin); }
void WriteFilterToTabFinished(FilterPipe pipe, string name, PersistenceData persistenceData) { _isSearching = false; if (!_shouldCancel) { string title = name; ILogLineColumnizer preProcessColumnizer = null; if (!(CurrentColumnizer is ILogLineXmlColumnizer)) { preProcessColumnizer = CurrentColumnizer; } LogWindow newWin = _parentLogTabWin.AddFilterTab(pipe, title, preProcessColumnizer); newWin.FilterPipe = pipe; pipe.OwnLogWindow = newWin; if (persistenceData != null) { Action<LogWindow, PersistenceData> fx = new Action<LogWindow, PersistenceData>(FilterRestore); fx.BeginInvoke(newWin, persistenceData, null, null); } } _progressEventArgs.Value = _progressEventArgs.MaxValue; _progressEventArgs.Visible = false; SendProgressBarUpdate(); _guiStateArgs.MenuEnabled = true; SendGuiStateUpdate(); StatusLineText(""); filterSearchButton.Enabled = true; }
void WritePipeToTab(FilterPipe pipe, IList<int> lineNumberList, string name, PersistenceData persistenceData) { Logger.logInfo("WritePipeToTab(): " + lineNumberList.Count + " lines."); _guiStateArgs.MenuEnabled = false; SendGuiStateUpdate(); StartProgressBar(lineNumberList.Count, "Writing to temp file... Press ESC to cancel."); _isSearching = true; _shouldCancel = false; lock (_filterPipeList) { _filterPipeList.Add(pipe); } pipe.Closed += new FilterPipe.ClosedEventHandler(Pipe_Disconnected); int count = 0; pipe.OpenFile(); LogExpertCallback callback = new LogExpertCallback(this); foreach (int i in lineNumberList) { if (_shouldCancel) { break; } string line = CurrentLogFileReader.GetLogLine(i); if (CurrentColumnizer is ILogLineXmlColumnizer) { callback.LineNum = i; line = (CurrentColumnizer as ILogLineXmlColumnizer).GetLineTextForClipboard(line, callback); } pipe.WriteToPipe(line, i); if (++count % PROGRESS_BAR_MODULO == 0) { _progressEventArgs.Value = count; Invoke(new MethodInvoker(SendProgressBarUpdate)); } } pipe.CloseFile(); Logger.logInfo("WritePipeToTab(): finished"); Invoke(new Action<FilterPipe, string, PersistenceData>(WriteFilterToTabFinished), new object[] { pipe, name, persistenceData }); }
void WriteFilterToTab() { FilterPipe pipe = new FilterPipe(_filterParams.CreateCopy(), this); lock (_filterResultList) { string namePrefix = "->F"; string title; if (IsTempFile) { title = TempTitleName + namePrefix + ++_filterPipeNameCounter; } else { title = Util.GetNameFromPath(FileName) + namePrefix + ++_filterPipeNameCounter; } WritePipeToTab(pipe, _filterResultList, title, null); } }
void RestoreFilterTabs(PersistenceData persistenceData) { foreach (FilterTabData data in persistenceData.filterTabDataList) { FilterParams persistFilterParams = data.filterParams; ReInitFilterParams(persistFilterParams); List<int> filterResultList = new List<int>(); List<int> filterHitList = new List<int>(); Filter(persistFilterParams, filterResultList, _lastFilterLinesList, filterHitList); FilterPipe pipe = new FilterPipe(persistFilterParams.CreateCopy(), this); WritePipeToTab(pipe, filterResultList, data.persistenceData.tabName, data.persistenceData); } }
void Pipe_Disconnected(FilterPipe sender) { lock (_filterPipeList) { _filterPipeList.Remove(sender); if (_filterPipeList.Count == 0) { // reset naming counter to 0 if no more open filter tabs for this source window _filterPipeNameCounter = 0; } } }
/// <summary> /// Used to create a new tab and pipe the given content into it. /// </summary> /// <param name="lineEntryList"></param> public void WritePipeTab(IList<LineEntry> lineEntryList, string title) { FilterPipe pipe = new FilterPipe(new FilterParams(), this); pipe.IsStopped = true; pipe.Closed += new FilterPipe.ClosedEventHandler(Pipe_Disconnected); pipe.OpenFile(); foreach (LineEntry entry in lineEntryList) { pipe.WriteToPipe(entry.logLine, entry.lineNum); } pipe.CloseFile(); Invoke(new Action<FilterPipe, string, PersistenceData>(WriteFilterToTabFinished), new object[] { pipe, title, null }); }
public void CopyMarkedLinesToTab() { if (dataGridView.SelectionMode == DataGridViewSelectionMode.FullRowSelect) { List<int> lineNumList = new List<int>(); foreach (DataGridViewRow row in dataGridView.SelectedRows) { if (row.Index != -1) { lineNumList.Add(row.Index); } } lineNumList.Sort(); // create dummy FilterPipe for connecting line numbers to original window // setting IsStopped to true prevents further filter processing FilterPipe pipe = new FilterPipe(new FilterParams(), this); pipe.IsStopped = true; WritePipeToTab(pipe, lineNumList, Text + "->C", null); } else { string fileName = Path.GetTempFileName(); FileStream fStream = new FileStream(fileName, FileMode.Append, FileAccess.Write, FileShare.Read); StreamWriter writer = new StreamWriter(fStream, Encoding.Unicode); DataObject data = dataGridView.GetClipboardContent(); string text = data.GetText(TextDataFormat.Text); writer.Write(text); writer.Close(); string title = Util.GetNameFromPath(FileName) + "->Clip"; _parentLogTabWin.AddTempFileTab(fileName, title); } }