public void SetSorting(int index, bool ascending)
        {
            if (CTL_MainWindow.sIsRefreshing)
            {
                return;
            }
            if (index < 0 || index > mColumns.Length)
            {
                return;
            }

            switch ((eColumnType)index)
            {
            case eColumnType.KEYWORD:
                CTL_TodoObject.SortByKeyword(ascending);
                break;

            case eColumnType.COMMENT:
                CTL_TodoObject.SortByMessage(ascending);
                break;

            case eColumnType.FILE_NAME:
                CTL_TodoObject.SortByFileName(ascending);
                break;

            case eColumnType.LINE_NUMBER:
                CTL_TodoObject.SortByLineNumber(ascending);
                break;
            }

            CTL_Settings.SaveColumnSort(index, ascending);
        }
        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());
        }
        void RefreshList()
        {
            //CTL...generate settings in case not generated before
            CTL_Settings.GenerateInstanceIfNotExist();

            sNeedRefreshAuto = false;
            if (sIsRefreshing)
            {
                return;
            }

            //CTL...clear refs
            for (int i = 0; i < sFilesObjects.Count; i++)
            {
                sFilesObjects[i].Clear();
            }
            sFilesObjects.Clear();

            //CTL...start refresh thread
            sFileParsed    = 0;
            sFileCount     = 0;
            sIsRefreshing  = true;
            mRefreshWorker = new CTL_RefreshWorker();
            mRefreshWorker.ProcessChanged += worker_ProcessChanged;
            mRefreshWorker.WorkCompleted  += worker_WorkCompleted;
            mRefreshThread = new Thread(mRefreshWorker.Work);
            mRefreshThread.Start();
        }
Exemple #4
0
        public static void Load()
        {
            if (DEBUG_MODE)
            {
                Debug.Log("load");
            }
            sInstance = new CTL_Settings();

            sInstance.mKeywordsList = new CTL_KeywordList();

            string _filePath = GetFilePath();

            bool keywordListInit = false;               //CTL...at first load it should stay false

            if (File.Exists(_filePath))
            {
                StreamReader _sr = null;
                try
                {
                    _sr = new StreamReader(_filePath);
                    string   _line          = _sr.ReadLine();
                    string[] _split         = new string[2];
                    int      dataStartIndex = 0;
                    while (!string.IsNullOrEmpty(_line))
                    {
                        dataStartIndex = _line.IndexOf(SEPARATOR) + 1;
                        if (dataStartIndex > 0 && dataStartIndex < _line.Length)
                        {
                            _split[0] = _line.Substring(0, dataStartIndex - 1);
                            _split[1] = _line.Substring(dataStartIndex);
                        }
                        else
                        {
                            Debug.LogError("cannot parse settings " + _line);
                            _line = _sr.ReadLine();
                            continue;
                        }

                        switch (_split[0])
                        {
                        case "a":
                            sInstance.mAutoRefresh = bool.Parse(_split[1]);
                            break;

                        case "b":
                            keywordListInit = true;
                            sInstance.mKeywordsList.LoadFromString(_split[1]);
                            break;

                        case "c":
                            sInstance.mCaseSensitive = bool.Parse(_split[1]);
                            break;

                        case "d":
                            sInstance.mDisplayContainerType = (eDisplayContainerType)int.Parse(_split[1]);
                            break;

                        case "e":
                            sInstance.mEnableHelpTooltips = bool.Parse(_split[1]);
                            break;

                        case "f":
                            sInstance.mExcludedPaths = CTL_Exclude.LoadFromString(_split[1]);
                            break;

                        case "g":
                            sInstance.mColumnSortIndex = int.Parse(_split[1]);
                            break;

                        case "h":
                            sInstance.mColumnSortAscending = bool.Parse(_split[1]);
                            break;

                        case "i":
                            sInstance.mColumnVisible = GenerateColumnVisibilityArrayFromString(_split[1]);
                            break;

                        case "j":
                            sInstance.mEnableCommentTooltip = bool.Parse(_split[1]);
                            break;

                        case "k":
                            sInstance.mDisplayKeywordInCommentTooltip = bool.Parse(_split[1]);
                            break;

                        case "l":
                            sInstance.mDisplayFilenameAndLineInCommentTooltip = bool.Parse(_split[1]);
                            break;

                        case "m":
                            sInstance.mDisplayTooltipModifier = (EventModifiers)int.Parse(_split[1]);
                            break;

                        case "n":
                            sInstance.mColumnSize = GenerateColumnSizeArrayFromString(_split[1]);
                            break;

                        case "o":
                            sInstance.mSearchFieldContent = _split[1];
                            break;

                        case "p":
                            sInstance.mCommentClickModifier_OpenFile = (EventModifiers)int.Parse(_split[1]);
                            break;

                        case "q":
                            sInstance.mParseCSFiles = bool.Parse(_split[1]);
                            break;

                        case "r":
                            sInstance.mParseJSFiles = bool.Parse(_split[1]);
                            break;

                        case "s":
                            sInstance.mKeywordSortOrder = (eKeywordSortOrder)int.Parse(_split[1]);
                            break;

                        case "t":
                            sInstance.mTrimCommentOnParse = bool.Parse(_split[1]);
                            break;

                        default:
                            UnityEngine.Debug.LogWarning("Unknown data for " + _split[0]);
                            break;
                        }
                        _line = _sr.ReadLine();
                    }
                }
                catch (Exception e) { Debug.LogError("Fail during prefs parsing:" + e.ToString()); }
                finally { if (_sr != null)
                          {
                              _sr.Dispose();
                          }
                }
            }
            if (!keywordListInit)
            {
                sInstance.mKeywordsList.LoadFromString("");
            }
        }
        //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();
        }