Exemple #1
0
    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();
    }
Exemple #2
0
 private static XElement FormattedXML(ParameterWithDoc paramWithDoc)
 {
     return(new XElement("ParamWithDoc", new XElement("name", paramWithDoc.Name), new XElement("doc", new XCData(paramWithDoc.Doc))));
 }
Exemple #3
0
    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);
    }