private void CrawlFolders(string path, List <SenseLogInfo> info, bool recursive)
 {
     if (!_fileSystem.DirectoryExists(path))
     {
         return;
     }
     if (recursive)
     {
         var dirs = _fileSystem.EnumerateDirectories(path).ToList();
         dirs.ForEach(p =>
         {
             var dir = new SenseLogInfo
             {
                 Name        = _fileSystem.Path.GetFileName(p),
                 IsDirectory = true,
                 LogFilePath = p,
             };
             info.Add(dir);
             CrawlFolders(p, dir.LogInfos, true);
         });
     }
     _fileSystem.EnumerateFiles(path, "*.*").ToList().ForEach(pfile =>
     {
         AddToFile(pfile, info);
     });
 }
Esempio n. 2
0
 private DateTime GetDateColumnGetter(SenseLogInfo model)
 {
     return(model.LastModified);
 }
        private void AddNewLog(SenseLogInfo logInfo, string key)
        {
            var splash = SplashManager.Loader.ShowFloatingSplash(this, "Opening log");

            try
            {
                if (_gridAndData.ContainsKey(key))
                {
                    return;
                }
                _gridAndData.Add(key, new DataWrapper
                {
                    Name         = logInfo.Name,
                    IsDirectory  = logInfo.IsDirectory,
                    LogFilePath  = logInfo.LogFilePath,
                    LastModified = logInfo.LastModified
                });

                ctrlTab1.SuspendLayout();
                ctrlTab1.TabPages.Add(key, logInfo.Name);


                var tab = ctrlTab1.TabPages[key];
                tab.Tag        = key;
                tab.ImageIndex = 0;


                var gridCtrl = new GridWrapperControl <GenericDataWrapper>(RecalcFilterBox, _gridAndData[key].GridAndDataWrapper);
                gridCtrl.Grid.Scroll                    += GridCtrlOnScroll;
                gridCtrl.Grid.MouseMove                 += GridOnMouseMove;
                gridCtrl.Grid.MouseDown                 += (sender, args) => { ctrlPreview.HideDisplay(); };
                gridCtrl.RightClikFilterGenerator        = GenerateRightClickMenu;
                gridCtrl.RightClikFilterDateColumnGetter = RightClikFilterDateColumnGetter;

                gridCtrl.ClearFiltersInAllGrids = ClearFiltersInAllGrids;
                gridCtrl.Dock = DockStyle.Fill;
                tab.Controls.Add(gridCtrl);

                _gridAndData[key].GenericDataWrapperService.LogFileAnalyzer = new LogFileAnalyzerService();

                var fileCutoff = _gridAndData[key].GenericDataWrapperService.LoadToJson(logInfo.LogFilePath);
                _gridAndData[key].GridAndDataWrapper.GridHelper  = CreateGrid(gridCtrl.Grid, key, _gridAndData[key]);
                _gridAndData[key].GridAndDataWrapper.GridInvoked = true;
                _gridAndData[key].GridAndDataWrapper.GridHelper.Grid.FormatRow += GridOnFormatRow;
                _gridAndData[key].GridAndDataWrapper.DateColumnGetter           = GetDateColumnGetter;
                _gridAndData[key].GridWrapperControl = gridCtrl;


                ResizeAllToCurrentSize(gridCtrl.Controls);
                _closeTabHelper[0].SetTabHeader(tab, _gridAndData[key].GenericDataWrapperService.LogFileAnalyzer.SimplifiedFailureLevel);

                ctrlTab1.SelectedTab = tab;
                ctrlTab1.ResumeLayout();
                if (ctrlTab1.TabPages.Count > 1 || ctrlTab1.TabPages.Count > 1)
                {
                    picDown.Visible = true;
                }
                splash.Dispose();
                if (fileCutoff > 0)
                {
                    Mbox.Show("This file is too large and has been capped at 1 million lines.", "I'm sorry about this");
                }
            }
            catch (Exception e)
            {
                splash.Dispose();
                Mbox.Show($"Failed opening log \r\n{e}", "Failure");
            }
        }