public static string GetMessageClassPath(string inFilePath, string outPath) { string rosPackageName = MessageAutoGen.GetRosPackageName(inFilePath); string outFolder = MessageAutoGen.GetMessageOutFolder(outPath, rosPackageName); string extension = Path.GetExtension(inFilePath); string className = MsgAutoGenUtilities.CapitalizeFirstLetter(Path.GetFileNameWithoutExtension(inFilePath)); return(Path.Combine(outFolder, "msg", className + ".cs")); }
public static string[] GetServiceClassPaths(string inFilePath, string outPath) { string rosPackageName = MessageAutoGen.GetRosPackageName(inFilePath); string outFolder = MessageAutoGen.GetMessageOutFolder(outPath, rosPackageName); string extension = Path.GetExtension(inFilePath); string className = MsgAutoGenUtilities.CapitalizeFirstLetter(Path.GetFileNameWithoutExtension(inFilePath)); string[] result = new string[types.Length]; for (int Idx = 0; Idx < types.Length; ++Idx) { result[Idx] = Path.Combine(outFolder, "srv", className + types[Idx] + ".cs"); } return(result); }
CachedEntryStatus GetFileStatus(string path) { switch (Path.GetExtension(path)) { case ".msg": string builtPath = MessageAutoGen.GetMessageClassPath(path, MessageGenBrowserSettings.Get().outputPath); return(File.Exists(builtPath) ? CachedEntryStatus.BuiltMsgFile : CachedEntryStatus.UnbuiltMsgFile); case ".srv": string[] builtPaths = ServiceAutoGen.GetServiceClassPaths(path, MessageGenBrowserSettings.Get().outputPath); return(builtPaths.All(file => File.Exists(file)) ? CachedEntryStatus.BuiltSrvFile : CachedEntryStatus.UnbuiltSrvFile); } return(CachedEntryStatus.Ignored); }
protected override List <string> Generate(string inPath, string outPath, string rosPackageName = "") { return(MessageAutoGen.GenerateSingleMessage(inPath, outPath, rosPackageName)); }
void ShowCachedEntry(CachedEntry entry) { if (entry.status == CachedEntryStatus.Ignored) { return; } else if (entry.status != CachedEntryStatus.Folder) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(entry.label); if (entry.hasBuildButton && GUILayout.Button(entry.buildLabel, GUILayout.Width(BUTTON_WIDTH))) { // build this msg/srv file switch (entry.status) { case CachedEntryStatus.BuiltMsgFile: case CachedEntryStatus.UnbuiltMsgFile: MessageAutoGen.GenerateSingleMessage(entry.path, MessageGenBrowserSettings.Get().outputPath); break; case CachedEntryStatus.BuiltSrvFile: case CachedEntryStatus.UnbuiltSrvFile: ServiceAutoGen.GenerateSingleService(entry.path, MessageGenBrowserSettings.Get().outputPath); break; } AssetDatabase.Refresh(); m_IsCacheDirty = true; } EditorGUILayout.EndHorizontal(); } else { bool isFoldedOut = m_FoldedOutHash.Contains(entry.path); EditorGUILayout.BeginHorizontal(); bool shouldBeFoldedOut = EditorGUILayout.Foldout(isFoldedOut, entry.label, true, EditorStyles.foldout); if (entry.hasBuildButton && GUILayout.Button(entry.buildLabel, GUILayout.Width(BUTTON_WIDTH))) { // build this directory MessageAutoGen.GenerateDirectoryMessages(entry.path, MessageGenBrowserSettings.Get().outputPath); ServiceAutoGen.GenerateDirectoryServices(entry.path, MessageGenBrowserSettings.Get().outputPath); AssetDatabase.Refresh(); m_IsCacheDirty = true; } EditorGUILayout.EndHorizontal(); if (isFoldedOut) { EditorGUI.indentLevel++; foreach (CachedEntry subEntry in entry.contents) { ShowCachedEntry(subEntry); } EditorGUI.indentLevel--; } if (shouldBeFoldedOut != isFoldedOut) { m_IsCacheDirty = true; if (shouldBeFoldedOut) { m_FoldedOutHash.Add(entry.path); } else { m_FoldedOutHash.Remove(entry.path); } } } }