天天看點

SharpDevelop學習筆記--什麼是Addin

像這樣根結點是addin的一個xml檔案就是addin

SharpDevelop學習筆記--什麼是Addin

<addin name = "typed collection wizard"

SharpDevelop學習筆記--什麼是Addin

  author = "mike krueger"

SharpDevelop學習筆記--什麼是Addin

  copyright = "gpl"

SharpDevelop學習筆記--什麼是Addin

  url = "unknown"

SharpDevelop學習筆記--什麼是Addin

  description = "creates a typed collection"

SharpDevelop學習筆記--什麼是Addin

  version = "1.0.0">

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

  <runtime>

SharpDevelop學習筆記--什麼是Addin

    <import assembly="typedcollectionwizard.dll"/>

SharpDevelop學習筆記--什麼是Addin

  </runtime>

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

  <extension path = "/sharpdevelop/templates/file/typedcollection">

SharpDevelop學習筆記--什麼是Addin

    <dialogpanel id = "collectiongenerator"

SharpDevelop學習筆記--什麼是Addin

      label = "typed collection"

SharpDevelop學習筆記--什麼是Addin

      class = "typedcollectiongenerator.typedcollectionwizardpanel"/>

SharpDevelop學習筆記--什麼是Addin

  </extension>

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

</addin>

<runtime>中包含的是這個addin正常工作所需的程式集清單,

<extension>中包含的子結點,叫做一個codon 

addin類中分析addin檔案的部分

SharpDevelop學習筆記--什麼是Addin

public class addin

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

...{

SharpDevelop學習筆記--什麼是Addin

    string name        = null;

SharpDevelop學習筆記--什麼是Addin

    string author      = null;

SharpDevelop學習筆記--什麼是Addin

    string copyright   = null;

SharpDevelop學習筆記--什麼是Addin

    string url         = null;

SharpDevelop學習筆記--什麼是Addin

    string description = null;

SharpDevelop學習筆記--什麼是Addin

    string version     = null;

SharpDevelop學習筆記--什麼是Addin

    string filename    = null;

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

    hashtable        runtimelibraries       = new hashtable();

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

    arraylist        extensions = new arraylist();

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

    /**//// <summary>

SharpDevelop學習筆記--什麼是Addin

    /// returns a hashtable with the runtime libraries

SharpDevelop學習筆記--什麼是Addin

    /// where the key is the assembly name and the value

SharpDevelop學習筆記--什麼是Addin

    /// is the assembly object.

SharpDevelop學習筆記--什麼是Addin

    /// </summary>

SharpDevelop學習筆記--什麼是Addin

    public hashtable runtimelibraries 

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

    ...{

SharpDevelop學習筆記--什麼是Addin

        get 

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

        ...{

SharpDevelop學習筆記--什麼是Addin

            return runtimelibraries;

SharpDevelop學習筆記--什麼是Addin

        }

SharpDevelop學習筆記--什麼是Addin

    }

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

    /// returns a arraylist with all extensions defined by

SharpDevelop學習筆記--什麼是Addin

    /// this addin.

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

    public arraylist extensions 

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

            return extensions;

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

    /// initializes this addin. it loads the xml definition in file

SharpDevelop學習筆記--什麼是Addin

    /// filename.

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

    public void initialize(string filename)

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

        this.filename = filename;

SharpDevelop學習筆記--什麼是Addin

        xmldocument doc = new xmldocument();

SharpDevelop學習筆記--什麼是Addin

        doc.load(filename);

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

        try 

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

            name        = doc.selectsinglenode("addin/@name").value;

SharpDevelop學習筆記--什麼是Addin

            author      = doc.selectsinglenode("addin/@author").value;

SharpDevelop學習筆記--什麼是Addin

            copyright   = doc.selectsinglenode("addin/@copyright").value;

SharpDevelop學習筆記--什麼是Addin

            url         = doc.selectsinglenode("addin/@url").value;

SharpDevelop學習筆記--什麼是Addin

            description = doc.selectsinglenode("addin/@description").value;

SharpDevelop學習筆記--什麼是Addin

            version     = doc.selectsinglenode("addin/@version").value;

SharpDevelop學習筆記--什麼是Addin

        } 

SharpDevelop學習筆記--什麼是Addin

        catch (exception) 

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

            throw new addinloadexception("這不是一個标準的addin檔案,不包含,作者,版權,位址等資訊");

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

        foreach (object o in doc.documentelement.childnodes) 

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

            if (!(o is xmlelement)) 

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

            ...{

SharpDevelop學習筆記--什麼是Addin

                continue;

SharpDevelop學習筆記--什麼是Addin

            }

SharpDevelop學習筆記--什麼是Addin

            xmlelement curel = (xmlelement)o;

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

            switch (curel.name) 

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

                case "runtime"://動态地加入運作時支援庫

SharpDevelop學習筆記--什麼是Addin

                    addruntimelibraries(path.getdirectoryname(filename), curel);

SharpDevelop學習筆記--什麼是Addin

                    break;

SharpDevelop學習筆記--什麼是Addin

                case "extension"://加入extension

SharpDevelop學習筆記--什麼是Addin

                    addextensions(curel);

SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin
SharpDevelop學習筆記--什麼是Addin

}