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(); }
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(); }