コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: LogWindow.cs プロジェクト: gspatace/logexpert
 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;
 }
コード例 #3
0
ファイル: LogWindow.cs プロジェクト: gspatace/logexpert
        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 });
        }
コード例 #4
0
ファイル: LogWindow.cs プロジェクト: gspatace/logexpert
        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);
            }
        }
コード例 #5
0
ファイル: LogWindow.cs プロジェクト: gspatace/logexpert
 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);
     }
 }
コード例 #6
0
ファイル: LogWindow.cs プロジェクト: gspatace/logexpert
 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;
         }
     }
 }
コード例 #7
0
ファイル: LogWindow.cs プロジェクト: gspatace/logexpert
 /// <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 });
 }
コード例 #8
0
ファイル: LogWindow.cs プロジェクト: gspatace/logexpert
        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);
            }
        }