• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            桃源谷

            心靈的旅行

            人生就是一場旅行,不在乎旅行的目的地,在乎的是沿途的風(fēng)景和看風(fēng)景的心情 !
            posts - 32, comments - 42, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            CodeBlocks插件開發(fā)指南(二)

            Posted on 2010-04-20 22:21 lymons 閱讀(5131) 評論(0)  編輯 收藏 引用 所屬分類: C++ 、C開發(fā)環(huán)境

              CodeBlocks插件開發(fā)指南(二)
            By Lymons(lymons@gmail.com) 2010/4/14

            1. 創(chuàng)建Plugin工程

                   File主菜單中,選擇new -> Projects… , 打開工程創(chuàng)建向?qū)υ捒颉?/span>


                   Projects的列表框中,選擇 Code::Blocks plugin ,然后點擊 Go 按鈕,進(jìn)入插件創(chuàng)建向?qū)υ捒颉?/span>

             

                   創(chuàng)建向?qū)У牡谝粋€畫面中有重要信息說明。請注意的是里面提到了必須設(shè)置#cb, #wx這兩個全局變量。不過,還好咱們在《CodeBlock插件開發(fā)指南 一》中已經(jīng)對這兩個變量進(jìn)行了設(shè)置。
            咱們在這里,直接點擊Next進(jìn)入到下一個畫面即可。

             

                   在下面這個畫面,要設(shè)定工程標(biāo)題(Project title)和工程目錄(Folder to create project in:)。 首先要填寫Project title,也就是要寫入工程的名字。如果,工程標(biāo)題和工程目錄決定了,Project filename Resulting filename 會自動生成。
            注意:CodeBlocks的工程文件的后綴名是.cbp
            各項目都設(shè)定完畢后,點擊Next進(jìn)入到下一個畫面

             

                   下面是設(shè)置插件的名字,也就是將來編譯成功后,系統(tǒng)自動做成的插件的名字.例如,如果在這里把 Plugin name 設(shè)定成 testplug 的話,將來會在工程目錄下生成:testplugin.zip, testplugin.dll, testplugin.cbplugin 這個三個文件。


            Plugin name 中填入你想要的插件名字。盡可能的話請使用英文。
            Plugin type 的下拉列表框中有四項:
                 1. Generic
                 2. Tool
                 3. MIME handler
                 4. Wizard
            Options中有四個選項:
                 1. Provides configuration dialog
             提供配置對話框
                 2. Creates menu entries 
            提供主菜單入口
                 3. Creates popup men entries
            提供視圖上的彈出菜單入口
                 4. Creates toolbar 
            提供工具條
            上述的
            四個選項就是插件提供給用戶的四種gui接口。
            默認(rèn)情況下,只有第一項是可選項。如果想要四個選項都可選,則需要選擇Plugin type中的Generic。為了把每個項目都進(jìn)行說明,我們這里選擇的是Generic

            選擇Generic后,Options的四個選項全部變成可選狀態(tài)。
            我們把這四個選項都選上,然后點擊Next, 就進(jìn)入到下一個畫面

             

                   這個畫面是設(shè)定插件的版本,版權(quán)信息,因為是說明性的工程,在這里我們什么也沒有填寫。你可以根據(jù)自己的意愿隨便進(jìn)行填寫。

             

                   因為插件的GUI是用的是wxWidgets窗口庫,所以要在這里選擇插件所依賴的版本。
            我們在這里選擇wxWidgets 2.8.x。大家應(yīng)該還記得在前面我們已經(jīng)安裝了wxWidgets 2.8.10吧。然后,點擊Next進(jìn)入下一畫面。

             

                   下面是選擇編譯器,這是向?qū)υ捒蛑械淖詈笠粋€畫面。我們選擇GNU GCC Complier,然后點擊Finish完成插件工程的創(chuàng)建。

             

            恭喜你,到目前為止,你就創(chuàng)建了一個CodeBlocks的插件工程了。

            正常的情況下,該工程只包含一個.cpp文件和一個.h文件,這個文件根據(jù)你的插件名字來生成。我們這里就是testplug.cpp testplug.h


            注意,在testplug.cpp中包含了sdk.h configurationpanel.h 這兩個頭文件,他們位于CodeBlocks開發(fā)庫中,是開發(fā)插件必不可少的兩個頭文件。而插件在連接是所需要的靜態(tài)庫是前面編譯出來的libcodeblocks.a

            讓我們看看,這個插件里主要的東西:插件類的定義

            #ifndef TESTPLUG_H_INCLUDED

            #define TESTPLUG_H_INCLUDED

             

            // For compilers that support precompilation, includes <wx/wx.h>

            #include 
            <wx/wxprec.h>

             

            #ifndef WX_PRECOMP

                #include 
            <wx/wx.h>

            #endif

             

            #include 
            <cbplugin.h> // for "class cbPlugin"

             

            class testplug : public cbPlugin

            {

                
            public:

                    
            /** Constructor. */

                    testplug();

                    
            /** Destructor. */

                    
            virtual ~testplug();



            文件wx/wxprec.h, wx/wx.h wxWidgets庫的頭文件。
            大家可以看到,插件的類的名字是 testplug, 它繼承與cbPlugin, 基類cbPlugin的定義在 cbplugin.h里。

             

            2. 編譯&加載插件

                   現(xiàn)在我們可以從Build主菜單中選擇Build workspace來編譯這個插件工程了。不出意外的話,應(yīng)該是正常編譯通過的。如果你有編譯錯誤的話,請你參考《CodeBlock插件開發(fā)指南 一》來配置編譯環(huán)境。

            如果編譯成功的話,應(yīng)該會在工程目錄下生成如下文件:


            其中有三個是最重要的文件
                1. testplug.cbplugin
                    CodeBlocks
            在載入插件時所需要的文件
                2. testplug.dll
                   
            插件的實現(xiàn)被封裝到這個dll文件中
                3. testplug.zip.
                   
            包含了插件的版本信息,壓縮包里最主要就是manifest.xml
            不過,大家會發(fā)現(xiàn),這些文件中沒有可執(zhí)行文件。這是因為,插件本身并不是一個能夠獨立運行的可執(zhí)行文件,它僅僅是一個dll,它是要依附于CodeBlocks來生存的。

                   現(xiàn)在我們可以嘗試用CodeBlocks來載入剛才我們生成的插件。在Build主菜單中選擇Run就可以運行這個插件了。


                   嗯,奇怪了,點擊Run后,運行的怎么是Codeblocks呢。

            這就對了,這里Run(運行)的不是插件,而是裝載插件的CodeBlocksIDE環(huán)境,而我們是要在這個IDE中加載剛才我們創(chuàng)建的那個插件。
            值得注意的是,這里被運行起來的IDE環(huán)境是在前面我們編譯成功的那個codeblocks.exe, 大家還記得吧,這個可執(zhí)行文件在codeblocks-8.02\src\devel目錄下。如果忘記了,請參考《CodeBlock插件開發(fā)指南 一》的3- 。
            #
            注意,如果點擊Run菜單項后,codeblocks不能被運行的話,有原因可能是CodeBlocks默認(rèn)設(shè)定了只允許運行一個實例。所以,我們可以把這個設(shè)定去掉。我們從Settings菜單中選擇 Environments…


            此時,會彈出Environment settings對話框,然后我們選擇左邊的 General settings屬性頁。
            在屬性頁中把 “Allow only once running instance(needs application restart to take effect)”項目前面的√對號符選掉。
            然后重新啟動CodeBlocks生效此配置。


                   如果,另一個CodeBlocks能夠被正確啟動,我們就要嘗試載入剛才我們創(chuàng)建成功的插件。我們應(yīng)該從Plugins主菜單中選擇 Manage plugins…
            會彈出 Manage plugins對話框,然后我們點擊右邊的按鈕 Install new


            會彈出 Select plugin to install 文件選擇對話框,此時我們定位到我們的插件工程目錄中,選擇目錄里面的testplug.cbplugin文件就可以了。


            如果加載成功的話,我們會在Installed plugins: 中看到剛才我們載入的testplug插件,其實CodeBlocks載入就是我們編譯成功的testplug.dll文件。



                   大家會發(fā)現(xiàn),成功載入插件后,不管我們怎么操作都不能發(fā)現(xiàn)插件的用戶接口在哪兒。這是因為,我們僅僅是創(chuàng)建了一個空的插件工程,該工程里只提供了各種GUI方式的接口函數(shù),并沒有任何代碼實現(xiàn),所以不會看到該插件有什么效果的。

            唯一能看到視覺效果的是它的About對話框


            這個對話框中,什么信息都沒有。不過你應(yīng)該可以定制它的內(nèi)容。



            到目前為止,你應(yīng)該知道如何創(chuàng)建以及運行一個插件了。接下來我們要涉及到具體的編碼了。
              

            2. 添加右鍵彈出菜單

            3. 主菜單中添加下拉菜單

            4. 添加工具條

            5. ”Log&others”中添加一個面板(Panel)

            6. 添加一個單獨的面板

            7. 運行

                   Run

                   載入編譯好的插件

            我的個人簡歷第一頁 我的個人簡歷第二頁
            国产欧美久久一区二区| 伊色综合久久之综合久久| 久久久久亚洲AV片无码下载蜜桃 | 亚洲精品无码专区久久久| 色狠狠久久AV五月综合| 久久久久免费精品国产| 欧美综合天天夜夜久久| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲v国产v天堂a无码久久| 无遮挡粉嫩小泬久久久久久久| …久久精品99久久香蕉国产| 久久夜色精品国产亚洲av| 日产精品久久久一区二区| 久久精品国产99久久香蕉| 国产成年无码久久久免费| 国产精品九九久久精品女同亚洲欧美日韩综合区| 久久精品国产一区二区| 久久国产精品成人影院| 亚洲一区精品伊人久久伊人| 久久电影网一区| 亚洲伊人久久大香线蕉综合图片| 久久综合九色综合久99| 人妻精品久久久久中文字幕69| 四虎国产精品成人免费久久| 国内精品久久久久久野外| 亚洲精品国产字幕久久不卡| 中文精品99久久国产 | 91久久精品91久久性色| 亚洲中文久久精品无码| 久久国产AVJUST麻豆| 久久久久一级精品亚洲国产成人综合AV区| 久久综合给合久久狠狠狠97色69 | 波多野结衣中文字幕久久| 久久久久久久久久久久久久| 四虎影视久久久免费观看| 久久精品国产精品亚洲人人| 国产精品女同一区二区久久| 精品一久久香蕉国产线看播放| 国产精品99久久久久久猫咪 | 久久久亚洲欧洲日产国码aⅴ| 超级97碰碰碰碰久久久久最新|