2009-02-01 48 views
6

我正在用C++開發用於印刷電路板和原理圖(又名EDA CAD)的計算機輔助設計軟件包。它使用Lua來處理一些特定的事情,但我想擴展Lua的角色,以便實現大部分的用戶界面邏輯。如何設計CAD包裝的結構?

我想重新建立的方式,它可以讓人們通過編輯的Lua很容易地改變用戶界面行爲的內部,也可以增加全新的功能。

的問題是,短期暴露某種巨大的API來的Lua代碼的,我想不出一個好辦法做到這一點。我懷疑一個龐大的API,帶有一個我能想到的所有功能的函數可能是一個糟糕的設計。我如何設計一個讓用戶實現我從未想過的事情的系統?

有沒有一本很好的文檔或我可以閱讀的書,或者是一個人們談論這類事情的論壇。我一直在尋找並思考好幾個月,而我仍然不確定答案是什麼。

順便說一句,該項目被稱爲LiquidPCB

非常感謝

雨果

回答

0

嘗試SWIG(簡體包裹生成器)。它可以爲現有的C/C++頭文件生成Lua包裝器。它可以讓你快速將所有的API公開給Lua。根據你的經驗,你可以決定不同的架構。

+0

我的問題是關於Lua的問題,關於應用程序的*結構更多。我可以使用Lua,Python或C++。問題的確是:「應用程序和插件之間的界面應該是什麼樣的?」 – Rocketmagnet 2009-02-11 15:30:09

1

很明顯,你將需要揭露一些功能,通過您的API來LUA使開發人員可以編寫和組合這些功能。

我偶然發現了這個好的presentation關於如何正確設計一個API,並且所包含的建議與我過去所做的相匹配。它會幫助你指導你的設計。

一旦你有一個API,我建議使用LUA或C++中的command pattern創建與UI的橋樑。在過去,我已經將每個API調用封裝在一個Command中,然後可以通過腳本調用該命令。我不知道lua,但我知道Python是一種很好的腳本語言,可以與您的命令一起使用。

祝你的項目好運。

0

開源項目?

通過它用戶的聲音,將有編程知識一定水平,他們也將要實現新的功能。以這種方式履行兩個角色,即客戶和開發者。

爲什麼不能有一個公開的只讀源代碼樹,他們可以檢出,處理並向您提交補丁。如果您認爲自己的工作足夠好並且相關程度足夠高,則可以將其納入下一個版本。

如果你認爲開發商一般不夠好,你可以給他們的源代碼樹直接寫訪問,並開始計劃他們的新功能。

+0

它已經在Sourceforge上很久了。它被稱爲Liquidpcb。 – Rocketmagnet 2009-04-22 22:47:05

1

我想指出新的Blender版本2.50的發展情況。以前的Python API曾經是一個手寫層,試圖包裝大多數功能。 new API將通過Data API自動換行訪問數據結構。更多文檔here

0

新的Sketchup Ruby API是您正在尋找的一個很好的例子。將它與舊API比較,以獲得關於不是要做的一些有趣見解。