/// <summary> /// Add document locale files /// </summary> /// <param name="files">list of pathes in given locale</param> /// <param name="locale">locale of files</param> public void AddLocaleFileList(string[] files, LanguageUtil.ELanguage locale) { foreach (string file in files) { var sig = Path.GetFileNameWithoutExtension(file); Debug.Assert(sig != null, "sig != null"); DocumentDataItem docItem = null; if (_hashtable.ContainsKey(sig)) { docItem = _hashtable[sig]; Debug.Assert(docItem.signature.Equals(sig)); } else { docItem = new DocumentDataItem { signature = sig, baseDocDirPath = baseDocDirPath }; _hashtable.Add(sig, docItem); _documentList.Add(docItem); } docItem.AddLocaleFile(file, locale); } }
public MemberSession(NewDataItemProject docProject, MemberItem member, LanguageUtil.ELanguage language) { DocProject = docProject; Language = language; Member = member; Load(); }
/// <summary> /// Adding locale to this DocumentDataItem /// </summary> /// <param name="path">file path to locale obj</param> /// <param name="locale">locale to add</param> internal void AddLocaleFile(String path, LanguageUtil.ELanguage locale) { if (FileMap.ContainsKey(locale)) { FileMap[locale] = path; } else { FileMap.Add(locale, path); } }
public MeaningfulBlock(IDataItem memberData, LanguageUtil.ELanguage language) { string memberDoc = null; DocumentDataItem docItem = memberData.GetDocumentDataItem(); if (docItem != null) { memberDoc = docItem.LoadDocumentOfLocale(language); } Init(memberData.GetAssemblyDataItem(), memberDoc); }
private static void CreateLocaleDirectory(String path, LanguageUtil.ELanguage locale) { var destinDir = DirectoryWithLangUtil.LocalizedDir(path, locale); try { //create a base dir based on language Directory.CreateDirectory(destinDir); } catch (DirectoryNotFoundException e) { Console.Out.WriteLine("createLocaleDirectory failed:{0}", e.Message); Console.Error.WriteLine("Could not create directory {0}", Path.GetFullPath(destinDir)); } }
private static string[] GetDocumentPathListOf(String path, LanguageUtil.ELanguage locale) { var destinDir = DirectoryWithLangUtil.LocalizedDir(path, locale); string[] sourceMemFiles = null; try { sourceMemFiles = Directory.GetFiles(destinDir); } catch (DirectoryNotFoundException) { Console.Error.WriteLine("Could not read from directory {0}. Please run DocDissector first!", path); } return(sourceMemFiles); }
public MemberSession(NewDataItemProject docProject, MemberItem member, string oldMemberText, LanguageUtil.ELanguage language) { DocProject = docProject; Language = language; Member = member; m_IsDummy = true; DummyModel = member.LoadDoc(oldMemberText, Language, false, false); if (language == LanguageUtil.ELanguage.English) { Model.EnforcePunctuation(); } Model.SanitizeForEditing(); TextOrig = Model.ToString(); TextCurrent = TextOrig; }
public void ReloadAllProjectData(LanguageUtil.ELanguage language = LanguageUtil.ELanguage.English) { m_MapNameToItem.Clear(); DateTime startTime = DateTime.Now; DateTime originalStartTime = startTime; // Populate list from assembly LoadAsmModules(); PrintElapsedTime("Loading ASM modules", ref startTime); PopulateFromAsm(); PrintElapsedTime("Populating from ASM", ref startTime); // Populate list from member files - does not actually load the MemDocModels PopulateFromMem(); PrintElapsedTime("PopulateFromMem", ref startTime); SearchAsmForPrivateApiMatchingOrphanDocs(); PrintElapsedTime("SearchingOrphanDocs", ref startTime); // For each member, load MemDocModel from disc. // We do this for all members, even the ones we know don't have member files. // This way the state and flags for each member are initialized correctly. foreach (MemberItem member in m_MapNameToItem.Values) { try { member.LoadDoc(); if (language != LanguageUtil.ELanguage.English) { member.LoadDoc(language); } } catch (Exception) { Console.WriteLine("error loading doc for {0}", member.ItemName); } } PrintElapsedTime("Loading member docs", ref startTime); var totalDuration = (startTime - originalStartTime).TotalSeconds; Console.WriteLine("Total time for ReloadAllProjectData = {0} sec", totalDuration); }
/// <summary> /// Get Collection of Undocumented APIs /// </summary> /// <param name="locale"></param> /// <returns></returns> public List <AssemblyDataItem> GetUndocumentedAPIs(LanguageUtil.ELanguage locale) { var list = new List <AssemblyDataItem>(); foreach (var item in Items) { if (item.DocDataItem == null) { list.Add(item); } else if (locale != LanguageUtil.ELanguage.Any) { if (!item.DocDataItem.HasDocForLocale(locale)) { list.Add(item); } } } return(list); }
/// <summary> /// Read file of given locale. /// If file is missing, it crosses out that document and set it to missing satus. /// </summary> /// <param name="locale">locale to read</param> /// <returns>contents of the document</returns> public String LoadDocumentOfLocale(LanguageUtil.ELanguage locale) { if (FileMap.ContainsKey(locale)) { try { var reader = File.OpenText(FileMap[locale]); var content = reader.ReadToEnd(); reader.Close(); return(content); } catch (Exception e) { Console.Out.WriteLine("File Save Failed:{0}", e.Message); FileMap.Remove(locale); } } return(null); }
/// <summary> /// Saves content to given locale /// </summary> /// <param name="content">content to save into file</param> /// <param name="locale">locale to save</param> /// <returns>true if succeeds</returns> public bool SaveDocumentOfLocale(String content, LanguageUtil.ELanguage locale) { String savingPath = null; if (FileMap.ContainsKey(locale)) { savingPath = FileMap[locale]; } else { var filename = DirectoryUtil.MemberNameWithExtension(signature, DirectoryUtil.MemExtension); if (LanguageUtil.IsEnglish(locale)) { savingPath = Path.Combine(baseDocDirPath, filename); } else { savingPath = string.Concat(Path.Combine(baseDocDirPath, locale.ToString()), Path.DirectorySeparatorChar, filename); } } try { File.WriteAllText(savingPath, content); if (!FileMap.ContainsKey(locale)) { FileMap.Add(locale, savingPath); } return(true); } catch (Exception e) { Console.Out.WriteLine("saveDocumentOfLocale failed:{0}", e.Message); FileMap.Remove(locale); } return(false); }
private string TextArea(string text, GUIStyle style, bool readOnly, LanguageUtil.ELanguage language) { // @TODO: Make SelectableLabel work correctly and then use that, /*if (readOnly) * { * EditorGUILayout.SelectableLabel (text, style); * return text; * }*/ Rect rect = GUILayoutUtility.GetRect(new GUIContent(text), style); // Hack to prevent select all when clicking in a text field Event evt = Event.current; Color oldCursorColor = GUI.skin.settings.cursorColor; if (evt.type == EventType.MouseDown && rect.Contains(evt.mousePosition)) { GUI.skin.settings.cursorColor = Color.clear; } //GUI.enabled = !readOnly || Event.current.type == EventType.Repaint; EditorGUI.BeginChangeCheck(); string newText = EditorGUI.TextArea(rect, text, style); if (EditorGUI.EndChangeCheck() && !readOnly) { text = newText; if (style != DocBrowser.styles.example && language == LanguageUtil.ELanguage.English) { text = MemberSubSection.EnforcePunctuation(text); } } GUI.skin.settings.cursorColor = oldCursorColor; return(text); }
void ToolbarGUI() { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); GUILayout.Space(1); if (!m_ShowMatchList) { // Hide List m_ShowList = !GUILayout.Toggle(!m_ShowList, "Hide List", EditorStyles.toolbarButton); GUILayout.Space(100); // Translation EditorGUI.BeginChangeCheck(); bool translatingNew = GUILayout.Toggle(m_Translating, "Translation Mode", EditorStyles.toolbarButton); LanguageUtil.ELanguage languageNew = m_Language; if (m_Translating) { languageNew = (LanguageUtil.ELanguage)EditorGUILayout.EnumPopup(m_Language, EditorStyles.toolbarPopup); } if (EditorGUI.EndChangeCheck()) { EditorGUIUtility.keyboardControl = 0; if (m_Editor == null || m_Editor.LeaveWithPermission()) { bool doLoad = m_Language != languageNew; m_Language = languageNew; m_Translating = translatingNew; if (translatingNew) { m_EditGrouping = false; } if (doLoad) { LoadMembers(); } OnSelectMember(m_List, m_List.selectedMemberName); } } } GUILayout.FlexibleSpace(); // Raw Names button ShowRawNames = GUILayout.Toggle(ShowRawNames, "Show Raw Names", EditorStyles.toolbarButton); // Diff button ShowDiff = GUILayout.Toggle(ShowDiff, "Show Diff", EditorStyles.toolbarButton); GUILayout.Space(100); // Reload if (GUILayout.Button("Reload", EditorStyles.toolbarButton)) { LoadMembers(); } EditorGUILayout.EndHorizontal(); }
void OpenMemberFile(MemberItem member, LanguageUtil.ELanguage language) { string filePath = DirectoryWithLangUtil.GetPathFromMemberNameAndDir(member.ItemName, DirectoryWithLangUtil.LocalizedDir(DirectoryUtil.MemberDocsDir, language)); System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("open", "-t " + filePath)); }
public static string GetPathFromMemberNameAndDir(string memberName, string dir, LanguageUtil.ELanguage lang) { if (!LanguageUtil.IsEnglish(lang)) { dir = Path.Combine(dir, lang.ToString()); } return(Path.Combine(dir, DirectoryUtil.MemberNameWithExtension(memberName, DirectoryUtil.MemExtension))); }
public static string LocalizedDir(string path, LanguageUtil.ELanguage locale) { var localizedPath = LanguageUtil.IsEnglish(locale) ? path : Path.Combine(path, locale.ToString()); return(localizedPath); }
public IEnumerable <DocumentDataItem> GetTranslatedAPIs(LanguageUtil.ELanguage currentDocumentLocale) { return(ValidEnglishDocs().Where(item => item.HasDocForLocale(currentDocumentLocale))); }
string ParamOrReturnGUI(bool hasAsm, bool hasDoc, string label, string text, LanguageUtil.ELanguage language, bool readOnly, out bool remove, IList list = null, int index = -1) { remove = false; EditorGUILayout.BeginHorizontal(); bool edit = !m_Browser.translating && !readOnly; bool hasSource, hasDest; if (m_Browser.translating) { hasSource = true; hasDest = !text.StartsWith(sTodoText); } else { hasSource = hasAsm; hasDest = hasDoc; } Rect labelRect = GUILayoutUtility.GetRect(160 + (edit ? 18 : 0), 16, GUILayout.ExpandWidth(false)); labelRect.xMin += 4; labelRect.y += 2; if (edit) { // Drag handle Rect dragRect = new Rect(labelRect.x, labelRect.y + 2, 14, 14); if (list != null) { DocBrowser.DragHandle(dragRect, typeof(ParameterWithDoc), list, index, DocBrowser.styles.dragHandle); } labelRect.xMin += 14 + 4; // remove button if (!hasSource) { Rect buttonRect = new Rect(labelRect.x, labelRect.y + 2, 14, 14); if (MiniButton(buttonRect, DocBrowser.styles.iconRemove)) { remove = true; } labelRect.xMin += 14; } } // Label GUI.Label(labelRect, label, DocBrowser.styles.paramLabel); // Text field if (!readOnly) { GUI.backgroundColor = GetColor(hasSource, hasDest); } text = TextArea(text, DocBrowser.styles.param, readOnly, language); GUI.backgroundColor = Color.white; EditorGUILayout.EndHorizontal(); // Handle dragging if (list != null) { Rect dragTargetRect = GUILayoutUtility.GetRect(10, 0); dragTargetRect.y -= 6; dragTargetRect.height = 14; DocBrowser.DragTarget(dragTargetRect, typeof(ParameterWithDoc), list, index + 1); } return(text); }
// check if given locale's document exists public bool HasDocForLocale(LanguageUtil.ELanguage locale) { return(FileMap.ContainsKey(locale)); }
public MemDocModel(IDataItemOld memberData, LanguageUtil.ELanguage language) { var block = new MeaningfulBlock(memberData, language); MeaningfulBlocks.Add(block); }