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