private static void DoSomethingWithVariable()
        {
            if (Selection.activeObject == null)
            {
                return;
            }

            List <string> notRelativePaths = new List <string>();
            string        path;

            foreach (UnityEngine.Object obj in Selection.objects)
            {
                path = AssetDatabase.GetAssetPath(obj);
                FileInfo fileinfo = new FileInfo(path);
                if (fileinfo.Extension.ToLower() != ".cs" && fileinfo.Extension.ToLower() != ".js")
                {
                    DirectoryInfo dirInfo = new DirectoryInfo(path);
                    if (!dirInfo.Exists)
                    {
                        continue;
                    }
                }
                notRelativePaths.Add(CTL_Tools.GetNotRelativePath(path));
            }
            CTL_Settings.AddExludedPath(notRelativePaths.ToArray());
        }
        public bool IsPathExcluded(string path, bool useOptimisedList = false)
        {
            List <string> pathList;

            if (useOptimisedList)
            {
                pathList = mOptimisedNotRelativePaths;
            }
            else
            {
                pathList = mExcludedRelativePath;
            }
            if (pathList == null || pathList.Count == 0)
            {
                return(false);
            }
            path = CTL_Tools.NormalizePath(path);
            if (string.IsNullOrEmpty(path))
            {
                return(false);
            }
            for (int i = 0; i < pathList.Count; i++)
            {
                if (path.StartsWith(pathList[i]))
                {
                    return(true);
                }
            }
            return(false);
        }
        void OnGUI()
        {
            if (sInstance == null)
            {
                OpenWindow();
            }

            if (Event.current.type == EventType.Repaint)
            {
                mRepaintDeltaTime    = (float)(CTL_Tools.ThreadSafeTimeStamp() - mPreviousRepaintTime) / 1000f;
                mPreviousRepaintTime = CTL_Tools.ThreadSafeTimeStamp();
            }
            Init();

            if (sRefreshJustFinished)
            {
                mMultiColumnHeader_TodoObjects.RefreshSorting();
                sRefreshJustFinished = false;
            }

            mMouseIsInWindow = (Event.current.mousePosition.x > 0 &&
                                Event.current.mousePosition.x < position.width &&
                                Event.current.mousePosition.y > 0 &&
                                Event.current.mousePosition.y < position.height);

            DrawHeader();

            switch (mCurPanel)
            {
            case eMenuPanel.MAIN:
                DrawMainPanel();
                if (Event.current.type == EventType.Layout && sNeedRefreshAuto && CTL_Settings.AutoRefresh)
                {
                    RefreshList();
                }
                break;

            case eMenuPanel.SETTINGS:
                DrawSettingsPanel();
                break;

            case eMenuPanel.KEYWORD_LIST:
                DrawKeywordsListPanel();
                break;
            }

            if (mIsDragging)
            {
                if (mCurPanel != eMenuPanel.KEYWORD_LIST)
                {
                    CTL_Settings.KeywordsList.ClearAllDraggedObjects();
                    mIsDragging = false;
                }
            }


            CTL_Settings.Instance.AutoSave();
        }
Esempio n. 4
0
 public bool AutoSave()
 {
     if (sShouldSave && CTL_Tools.ThreadSafeTimeStamp() - sLastSaveTime > sMinMsBetweekAutoSave)
     {
         Export();
         return(true);
     }
     return(false);
 }
 public void GenerateOptimisedExcludeList()
 {
     mOptimisedNotRelativePaths.Clear();
     for (int i = 0; i < mExcludedRelativePath.Count; i++)
     {
         if (!IsInsideExcludedFolder(mExcludedRelativePath[i]))
         {
             mOptimisedNotRelativePaths.Add(CTL_Tools.GetNotRelativePath(mExcludedRelativePath[i], false));
         }
     }
 }
Esempio n. 6
0
        public void Export()
        {
            sLastSaveTime = CTL_Tools.ThreadSafeTimeStamp();
            sShouldSave   = false;

            if (DEBUG_MODE)
            {
                Debug.Log("export");
            }

            StreamWriter _sw = null;

            try
            {
                string _filePath = GetFilePath();
                if (File.Exists(_filePath))
                {
                    File.Delete(_filePath);
                }

                _sw = File.CreateText(_filePath);
                WriteDataToStreamWriter("a", mAutoRefresh.ToString(), _sw);
                WriteDataToStreamWriter("b", mKeywordsList.Export(), _sw);
                WriteDataToStreamWriter("c", mCaseSensitive.ToString(), _sw);
                WriteDataToStreamWriter("d", ((int)mDisplayContainerType).ToString(), _sw);
                WriteDataToStreamWriter("e", mEnableHelpTooltips.ToString(), _sw);
                WriteDataToStreamWriter("f", ExcludedPaths.Export(), _sw);
                WriteDataToStreamWriter("g", ColumnSortIndex.ToString(), _sw);
                WriteDataToStreamWriter("h", mColumnSortAscending.ToString(), _sw);
                WriteDataToStreamWriter("i", GetColumnVisibilityExportString(), _sw);
                WriteDataToStreamWriter("j", mEnableCommentTooltip.ToString(), _sw);
                WriteDataToStreamWriter("k", mDisplayKeywordInCommentTooltip.ToString(), _sw);
                WriteDataToStreamWriter("l", mDisplayFilenameAndLineInCommentTooltip.ToString(), _sw);
                WriteDataToStreamWriter("m", ((int)mDisplayTooltipModifier).ToString(), _sw);
                WriteDataToStreamWriter("n", GetColumnSizeExportString(), _sw);
                WriteDataToStreamWriter("o", mSearchFieldContent, _sw);
                WriteDataToStreamWriter("p", ((int)mCommentClickModifier_OpenFile).ToString(), _sw);
                WriteDataToStreamWriter("q", ParseCSFiles.ToString(), _sw);
                WriteDataToStreamWriter("r", ParseJSFiles.ToString(), _sw);
                WriteDataToStreamWriter("s", ((int)KeywordSortOrder).ToString(), _sw);
                WriteDataToStreamWriter("t", TrimCommentOnParse.ToString(), _sw);
            }
            catch (Exception e) { Debug.LogError("Fail during prefs export:" + e.ToString()); }
            finally { if (_sw != null)
                      {
                          _sw.Dispose();
                      }
            }
        }
Esempio n. 7
0
 public static void SaveOrAutoSave(bool instantSave = true, bool autosave = false, bool refreshSaveTimer = false)
 {
     if (instantSave)
     {
         Instance.Export();
     }
     if (autosave)
     {
         sShouldSave = true;
     }
     if (refreshSaveTimer)
     {
         sLastSaveTime = CTL_Tools.ThreadSafeTimeStamp();
     }
 }
 public bool IsInsideExcludedFolder(string path)
 {
     if (mExcludedRelativePath.Count == 0)
     {
         return(false);
     }
     path = CTL_Tools.GetNotRelativePath(path, false);
     for (int i = 0; i < mExcludedRelativePath.Count; i++)
     {
         if (path.StartsWith(mExcludedRelativePath[i]) && path.Length != mExcludedRelativePath[i].Length)
         {
             return(true);
         }
     }
     return(false);
 }
        public void AddKeyword(string keyword = "", bool needFocus = false, bool generateRandomColor = false)
        {
            CTL_KeywordObject newObj = new CTL_KeywordObject();

            newObj.Key        = keyword;
            newObj.mNeedFocus = needFocus;

            if (generateRandomColor)
            {
                newObj.Color = CTL_Tools.GenerateRandomKeywordColor();
            }

            mKeywords.Add(newObj);
            KeywordModified(newObj, true);

            CTL_Settings.sShouldSave        = true;
            CTL_MainWindow.sNeedRefreshAuto = true;
        }
 public bool AddExludedPath(string path)
 {
     path = CTL_Tools.NormalizePath(path);
     if (string.IsNullOrEmpty(path))
     {
         return(false);
     }
     path = CTL_Tools.GetRelativePath(path);
     if (string.IsNullOrEmpty(path))
     {
         return(false);
     }
     if (!mExcludedRelativePath.Contains(path))
     {
         mExcludedRelativePath.Add(path);
         Sort();
         CTL_Settings.sShouldSave        = true;
         CTL_MainWindow.sNeedRefreshAuto = true;
         return(true);
     }
     return(false);
 }
Esempio n. 11
0
        public void Work()
        {
            mValidsKeywords   = CTL_Settings.KeywordsList.GetValidKeywordList();
            sStringComparison = CTL_Settings.CaseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;

            List <CTL_TodoFile> fileObjectList = new List <CTL_TodoFile>();
            CTL_TodoFile        fileObject;

            sProgress_GetFileList  = 0;
            sProgress_ExcludePaths = 0;
            sProgress_ProcessFiles = 0;

            sFilesInProjectCount   = 0;
            sFilesProcessedCount   = 0;
            sCommentProcessedCount = 0;
            sTotalLinesCount       = 0;

            long time_RealStart             = CTL_Tools.ThreadSafeTimeStamp();
            long timeSpan_GetScriptFilePath = time_RealStart;
            long timeSpan_ProcessFiles      = 0;
            long time_StartProcessFiles     = 0;
            long timeSpan_ExcludeFiles      = 0;
            long time_StartExcludeFiles     = 0;

            long time_Start = time_RealStart;
            long time_Cur   = time_RealStart;


            ProcessChanged(0, 0, "Get files paths...");
            string[] scriptFilesPath = GetScriptFilesPath();
            sProgress_GetFileList = 1;
            sFilesInProjectCount  = scriptFilesPath.Length;


            if (CTL_Settings.DEBUG_MODE)
            {
                time_Cur = CTL_Tools.ThreadSafeTimeStamp();
                timeSpan_GetScriptFilePath = time_Cur - time_RealStart;
                time_StartExcludeFiles     = time_Cur;
            }


            //CTL...start exclude paths
            ProcessChanged(0, 0, "Exclude paths...");
            List <string> notExcludedPath = new List <string>(scriptFilesPath.Length);

            CTL_Settings.ExcludedPaths.GenerateOptimisedExcludeList();
            for (int i = 0; i < scriptFilesPath.Length; i++)
            {
                if (!CTL_Settings.ExcludedPaths.IsPathExcluded(scriptFilesPath[i], true))
                {
                    notExcludedPath.Add(scriptFilesPath[i]);
                }
                sProgress_ExcludePaths = (float)i / (float)scriptFilesPath.Length;
            }
            sProgress_ExcludePaths = 1;
            scriptFilesPath        = notExcludedPath.ToArray();
            //CTL...end exclude path


            if (CTL_Settings.DEBUG_MODE)
            {
                time_Cur = CTL_Tools.ThreadSafeTimeStamp();
                timeSpan_ExcludeFiles  = time_Cur - time_StartExcludeFiles;
                time_StartProcessFiles = time_Cur;
            }


            //CTL...start process files
            ProcessChanged(0, 0, "Process files...");
            for (int i = 0; i < scriptFilesPath.Length; i++)
            {
                if (mCanceled)
                {
                    break;
                }

                fileObject = ParseFileAtPath(scriptFilesPath[i]);
                if (fileObject != null)
                {
                    fileObjectList.Add(fileObject);
                }

                sProgress_ProcessFiles = (float)i / (float)scriptFilesPath.Length;
            }
            sProgress_ProcessFiles = 1;
            sFilesProcessedCount   = scriptFilesPath.Length;
            time_Cur = CTL_Tools.ThreadSafeTimeStamp();

            //CTL...end process  files
            if (CTL_Settings.DEBUG_MODE)
            {
                timeSpan_ProcessFiles = time_Cur - time_StartProcessFiles;
                Debug.Log("Refresh done in " + (time_Cur - time_RealStart) +
                          " -- GetScriptFilesPath: " + timeSpan_GetScriptFilePath +
                          " -- ExcludeFiles: " + timeSpan_ExcludeFiles +
                          " -- ProcessFiles: " + timeSpan_ProcessFiles +
                          "\nScript files in project: " + sFilesInProjectCount +
                          "\nScript files processed: " + sFilesProcessedCount +
                          "\nComments processed: " + sCommentProcessedCount +
                          "\nTotal lines count: " + sTotalLinesCount);
            }

            ProcessChanged(scriptFilesPath.Length, scriptFilesPath.Length, "COMPLETE");
            WorkCompleted.Invoke(fileObjectList, mCanceled);
        }
        //CTL...DRAW panel settings
        void DrawSettingsPanel()
        {
            mScrollPosSettingsTab = EditorGUILayout.BeginScrollView(mScrollPosSettingsTab);

            bool prevState = false;

            //CTL...SETTINGS toogle auto refresh
            CTL_Settings.AutoRefresh = EditorGUILayout.Toggle(CTL_Styles.sGUIC_Settings_AutoRefresh, CTL_Settings.AutoRefresh);

            //CTL...SETTINGS trim comment
            prevState = CTL_Settings.TrimCommentOnParse;
            CTL_Settings.TrimCommentOnParse = EditorGUILayout.Toggle(CTL_Styles.sGUIC_Settings_TrimCommentOnRefresh, CTL_Settings.TrimCommentOnParse);
            if (CTL_Settings.TrimCommentOnParse != prevState)
            {
                sNeedRefreshAuto = true;
            }

            //CTL...SETTINGS CS/JS parsing
            prevState = CTL_Settings.ParseCSFiles;
            CTL_Settings.ParseCSFiles = EditorGUILayout.Toggle(CTL_Styles.sGUIC_Settings_ParseCSFiles, CTL_Settings.ParseCSFiles);
            if (CTL_Settings.ParseCSFiles != prevState)
            {
                sNeedRefreshAuto = true;
            }

            prevState = CTL_Settings.ParseJSFiles;
            CTL_Settings.ParseJSFiles = EditorGUILayout.Toggle(CTL_Styles.sGUIC_Settings_ParseJSFiles, CTL_Settings.ParseJSFiles);
            if (CTL_Settings.ParseCSFiles != prevState)
            {
                sNeedRefreshAuto = true;
            }

            //CTL...SETTINGS toogle case sensitive
            prevState = CTL_Settings.CaseSensitive;
            CTL_Settings.CaseSensitive = EditorGUILayout.Toggle(CTL_Styles.sGUIC_Settings_CaseSensitive, CTL_Settings.CaseSensitive);
            if (CTL_Settings.CaseSensitive != prevState)
            {
                sNeedRefreshAuto = true;
            }


            //CTL...SETTINGS toogle enable help tooltip
            prevState = CTL_Settings.EnableHelpTooltips;
            CTL_Settings.EnableHelpTooltips = EditorGUILayout.Toggle(CTL_Styles.sGUIC_Settings_EnableHelpTooltips, CTL_Settings.EnableHelpTooltips);
            if (CTL_Settings.EnableHelpTooltips != prevState)
            {
                CTL_Styles.SetupStyles(true);
            }


            EventModifiers[] modifiers        = new EventModifiers[] { EventModifiers.None, EventModifiers.Shift, EventModifiers.Control, EventModifiers.Alt };
            string[]         optionsModifiers = { "None", "Shift", "Control", "Alt" };
            int index = 0;

            for (int i = 0; i < modifiers.Length; i++)
            {
                if (modifiers[i] == CTL_Settings.CommentClickModifier_OpenFile)
                {
                    index = i;
                    break;
                }
            }
            index = EditorGUILayout.Popup(
                CTL_Styles.sGUIC_Settings_CommentClickModifier_OpenFile,
                index,
                optionsModifiers);
            CTL_Settings.CommentClickModifier_OpenFile = modifiers[index];


            CTL_Settings.eKeywordSortOrder[] keywordSortOrders = new CTL_Settings.eKeywordSortOrder[] { CTL_Settings.eKeywordSortOrder.ALPHABETICAL, CTL_Settings.eKeywordSortOrder.KEYWORD_ORDER };
            string[] optionskeywordSortOrders = { "Alphabetical", "Keyword order" };
            index = 0;
            for (int i = 0; i < keywordSortOrders.Length; i++)
            {
                if (keywordSortOrders[i] == CTL_Settings.KeywordSortOrder)
                {
                    index = i;
                    break;
                }
            }
            index = EditorGUILayout.Popup(
                CTL_Styles.sGUIC_Settings_KeywordSortOrder,
                index,
                optionskeywordSortOrders);
            CTL_Settings.KeywordSortOrder = keywordSortOrders[index];

            //CTL...SETTINGS toogle enable comments tooltip
            EditorGUILayout.BeginVertical(EditorStyles.helpBox);
            EditorGUILayout.LabelField("Comments Tooltip", EditorStyles.boldLabel);
            CTL_Settings.EnableCommentTooltip = EditorGUILayout.Toggle(CTL_Styles.sGUIC_Settings_EnableCommentTooltip, CTL_Settings.EnableCommentTooltip);
            if (CTL_Settings.EnableCommentTooltip)
            {
                CTL_Settings.DisplayKeywordInCommentTooltip         = EditorGUILayout.Toggle(CTL_Styles.sGUIC_Settings_DisplayKeywordInCommentTooltip, CTL_Settings.DisplayKeywordInCommentTooltip);
                CTL_Settings.DisplayFilenameAndLineInCommentTooltip = EditorGUILayout.Toggle(CTL_Styles.sGUIC_Settings_DisplayFilenameAndLineInCommentTooltip, CTL_Settings.DisplayFilenameAndLineInCommentTooltip);

                index = 0;
                for (int i = 0; i < modifiers.Length; i++)
                {
                    if (modifiers[i] == CTL_Settings.DisplayTooltipModifier)
                    {
                        index = i;
                        break;
                    }
                }
                index = EditorGUILayout.Popup(
                    CTL_Styles.sGUIC_Settings_DisplayTooltipModifier,
                    index,
                    optionsModifiers);
                CTL_Settings.DisplayTooltipModifier = modifiers[index];
            }
            EditorGUILayout.EndHorizontal();

            //CTL...SETTINGS btn exclude file/folder
            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button(CTL_Styles.sGUIC_Settings_ExcludeFile))
            {
                CTL_Settings.AddExludedPath(EditorUtility.OpenFilePanel(CTL_Styles.sGUIC_Settings_ExcludeFile.text, CTL_Tools.GetAssetFolderPath(), "cs"));
            }
            if (GUILayout.Button(CTL_Styles.sGUIC_Settings_ExcludeFolder))
            {
                CTL_Settings.AddExludedPath(EditorUtility.OpenFolderPanel(CTL_Styles.sGUIC_Settings_ExcludeFolder.text, CTL_Tools.GetAssetFolderPath(), ""));
            }
            EditorGUILayout.EndHorizontal();

            string excludedPath = null;

            foreach (string pathExcluded in CTL_Settings.ExcludedPaths.PathList)
            {
                EditorGUILayout.BeginHorizontal();
                if (GUILayout.Button("X", GUILayout.Width(30)))
                {
                    excludedPath = pathExcluded;
                }
                if (GUILayout.Button("Select", GUILayout.Width(50)))
                {
                    Selection.activeObject = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>("ASSETS\\" + pathExcluded);
                }
                GUIStyle pathLabelStyle = new GUIStyle("label");
                if (!CTL_Tools.IsValidPath("ASSETS\\" + pathExcluded))
                {
                    pathLabelStyle.normal.textColor = new Color(1f, .25f, .25f);
                }
                EditorGUILayout.LabelField(CTL_Tools.GetRelativePath(pathExcluded), pathLabelStyle);
                EditorGUILayout.EndHorizontal();
            }

            if (excludedPath != null)
            {
                CTL_Settings.RemoveExludedPath(excludedPath);
            }

            EditorGUILayout.EndScrollView();
            GUILayout.FlexibleSpace();


            if (CTL_Settings.DEBUG_MODE)
            {
                //CTL...DEBUG btn load settings
                if (GUILayout.Button("/!\\ Load settings /!\\"))
                {
                    CTL_Settings.Load();
                }
                //CTL...DEBUG btn export settings
                if (GUILayout.Button("/!\\ Export settings /!\\"))
                {
                    CTL_Settings.Instance.Export();
                }
                //CTL...DEBUG btn refresh styles
                if (GUILayout.Button("/!\\ Refresh Styles /!\\"))
                {
                    CTL_Styles.SetupStyles(true);
                }
                //CTL...DEBUG btn delete persistant data
                if (GUILayout.Button("/!\\ DeleteAllPersistantData /!\\"))
                {
                    CTL_Settings.DeleteAllPersistantData();
                }
            }

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Read the doc"))
            {
                Application.OpenURL("http://julien-foucher.com/?a=codetodolist&b=doc&s=assetsettings");
            }
            if (GUILayout.Button("Rate this asset"))
            {
                Application.OpenURL("http://julien-foucher.com/?a=codetodolist&b=store&s=assetsettings");
            }
            EditorGUILayout.EndHorizontal();
        }