void ParametersAndReturnGUI(MemberSession member, int sectionIndex, bool readOnly) { MemberSubSection section = member.Model.SubSections[sectionIndex]; // Parameters if (section.Parameters.Count > 0) { GUILayout.Label("Parameters", DocBrowser.styles.docSectionHeader); // Handle dragging parameter into first slot Rect dragTargetRect = GUILayoutUtility.GetRect(10, 0); dragTargetRect.y -= 6; dragTargetRect.height = 14; DocBrowser.DragTarget(dragTargetRect, typeof(ParameterWithDoc), section.Parameters, 0); ParameterWithDoc paramToRemove = null; for (int i = 0; i < section.Parameters.Count; i++) { ParameterWithDoc p = section.Parameters[i]; string label = "<b>" + p.Name + " : </b>" + (p.HasAsm ? Extensions.GetNiceName(p.TypeString) : "?"); bool remove; p.Doc = ParamOrReturnGUI(p.HasAsm, p.HasDoc, label, p.Doc, member.Language, readOnly, out remove, section.Parameters, i); if (remove) { paramToRemove = p; } } if (paramToRemove != null) { section.Parameters.Remove(paramToRemove); } } // Returns if (section.ReturnDoc != null) { GUILayout.Label("Returns", DocBrowser.styles.docSectionHeader); ReturnWithDoc p = section.ReturnDoc; string label = (p.HasAsm ? Extensions.GetNiceName(p.ReturnType) : "?"); bool remove; p.Doc = ParamOrReturnGUI(p.HasAsm, p.HasDoc, label, p.Doc, member.Language, readOnly, out remove); if (remove) { section.ReturnDoc = null; } } EditorGUILayout.Space(); }
private static XElement FormattedXML(ParameterWithDoc paramWithDoc) { return(new XElement("ParamWithDoc", new XElement("name", paramWithDoc.Name), new XElement("doc", new XCData(paramWithDoc.Doc)))); }
private MemberSession MergeTranslated(MemDocModel english, MemDocModel translatedOld) { MemberSession translatedNewMember = new MemberSession(m_Browser.docProject, m_Item, translatedOld.Language); MemDocModel translatedNew = translatedNewMember.Model; // If number of sections don't match at all, make new list of sections if (english.SubSections.Count != translatedNew.SubSections.Count) { translatedNew.SubSections.Clear(); for (int i = 0; i < english.SubSections.Count; i++) { translatedNew.SubSections.Add(new MemberSubSection("")); } } for (int s = 0; s < english.SubSections.Count; s++) { MemberSubSection engSec = english.SubSections[s]; MemberSubSection newSec = translatedNew.SubSections[s]; // Replace signatures newSec.SignatureList = engSec.SignatureList; // Replace flags newSec.IsCsNone = engSec.IsCsNone; newSec.IsUndoc = engSec.IsUndoc; // Merge parameters List <ParameterWithDoc> oldParams = newSec.Parameters; newSec.Parameters = new List <ParameterWithDoc> (); foreach (ParameterWithDoc engParam in engSec.Parameters) { ParameterWithDoc newParam = new ParameterWithDoc(engParam.Name); newParam.Types = engParam.Types; ParameterWithDoc oldParam = oldParams.FirstOrDefault(e => e.Name == engParam.Name); if (oldParam != null && !string.IsNullOrEmpty(oldParam.Doc)) { newParam.Doc = oldParam.Doc; } else { newParam.Doc = GetInitialTranslationString(engParam.Doc); } newSec.Parameters.Add(newParam); } // Merge return type if (engSec.ReturnDoc == null) { newSec.ReturnDoc = null; } else { string returnDocString = newSec.ReturnDoc != null ? newSec.ReturnDoc.Doc : GetInitialTranslationString(engSec.ReturnDoc.Doc); newSec.ReturnDoc = new ReturnWithDoc(); newSec.ReturnDoc.ReturnType = engSec.ReturnDoc.ReturnType; newSec.ReturnDoc.Doc = returnDocString; } // Merge text blocks bool blockTypesMatch = true; if (newSec.TextBlocks.Count != engSec.TextBlocks.Count) { blockTypesMatch = false; } else { for (int i = 0; i < engSec.TextBlocks.Count; i++) { if (engSec.TextBlocks[i].GetType() != newSec.TextBlocks[i].GetType()) { blockTypesMatch = false; } } } // If block types match, only replace examples if (blockTypesMatch) { for (int i = 0; i < engSec.TextBlocks.Count; i++) { TextBlock engBlock = engSec.TextBlocks[i]; if (engBlock is ExampleBlock) { newSec.TextBlocks[i] = engBlock; } } } // If block types don't match, replace examples and make all description // blocks have TODO in them (except if the English one is empty too). else { newSec.TextBlocks.Clear(); for (int i = 0; i < engSec.TextBlocks.Count; i++) { TextBlock engBlock = engSec.TextBlocks[i]; if (engBlock is ExampleBlock) { newSec.TextBlocks.Add(engBlock); } else if (engBlock is DescriptionBlock) { newSec.TextBlocks.Add(new DescriptionBlock(GetInitialTranslationString(engBlock.Text))); } } } } translatedNewMember.TextOrig = translatedOld.ToString(); translatedNewMember.TextCurrent = translatedNew.ToString(); translatedNewMember.Diff.Compare(translatedNewMember.TextOrig, translatedNewMember.TextCurrent); return(translatedNewMember); }