gtk

gtk

GTK+(GIMP Toolkit)是一套源碼以LGPL許可協議分發、跨平台的圖形工具包。最初是為GIMP寫的,已成為一個功能強大、設計靈活的一個通用圖形庫,是GNU/Linux下開發圖形界面的應用程序的主流開發工具之一。並且,GTK+也有Windows版本和Mac OS X版。

詳細說明


GTK+是一種圖形用戶界面(GUI)工具包。也就是說,它是一個庫(或者,實際上是若干個密切相關的庫的集合),它支持創建基於GUI的應用程序。可以把GTK+想像成一個工具包,從這個工具包中可以找到用來創建GUI的許多已經準備好的構造塊。
最初,GTK+是作為另一個著名的開放源碼項目——GNU Image Manipulation Program(GIMP)——的副產品而創建的。在開發早期的GIMP版本時,Peter Mattis和Spencer Kimball創建了GTK(它代表GIMP Toolkit),作為Motif工具包的替代,後者在那個時候不是免費的。(當這個工具包獲得了面向對象特性和可擴展性之後,才在名稱後面加上了一個加號。)
這差不多已經10年過去了。今天,在GTK+的最新穩定版本——2.8版上(3.0測試中),仍然在進行許多活動,同時,GIMP無疑仍然是使用GTK+的最著名的程序之一,不過它已經不是惟一的使用GTK+的程序了。已經為GTK+編寫了成百上千的應用程序,而且至少有兩個主要的桌面環境(Xfce和GNOME)用GTK+為用戶提供完整的工作環境。
GTK+雖然是用C語言寫的,但是您可以使用你熟悉的語言來使用GTK+,因為GTK+已經被綁定到幾乎所有流行的語言上,如:C++,PHP、Guile,Perl、Python、TOM、Ada95、Objective C、Free Pascal and Eiffel。

應用程序


GTK+優秀應用程序
GIMP-GNU圖像處理程序
GNOME、XFCE等桌面環境和大部分窗口管理器都基於GTK+
Inkscape-類似於Illustrator、CorelDraw的矢量圖形繪製工具
Pidgin-支持多種協議(IRC、Gtalk、Yahoo Talk、MSN、QQ等等)的聊天工具
Firefox 、Chrome-兩大流行瀏覽器
GTK+優勢
不論開發的需要是什麼,GTK+ 可能就是您正在尋找的答案。GTK+ 提供了許多東西:
它既現代,而且得到了積極的開發與維護,圍繞它有一個充滿活力的社區。它提供了廣泛的選項,用於把工作擴展到儘可能多的人,其中包括一個針對國際化、本地化和可訪問性的完善的框架。它簡單易用,對開發人員和用戶來說都是這樣。它的設計良好、靈活而可擴展。它是自由軟體,有一個自由的開放源碼許可。它是可移植的,從用戶和開發人員的角度都是這樣。
現代化、更新快
GTK+ 是採用軟體開發中的最新技術開發的,只要發現缺陷(BUG)(肯定有缺陷,因為沒有任何軟體是完美的),開發人員就會儘力在下一版本中修補缺陷。使用現代的軟體意味著,您不會陷在過時的工作中,而跟不上時代的發展。
持續的維護和開發也意味著您擁有影響工具包的未來發展方向的能力。另外,在出現新的發行版時,會引入基於用戶反饋的新特性和新功能,而舊的問題則得到修補。
國際化、可訪問性
在創建要讓所有人使用的軟體的時候,請記住三個關鍵字:國際化、本地化和可訪問性(通常分別縮寫為 i18n、l10n 和 a11y)。
國際化:
國際化是將程序準備為被母語不是開發應用程序所採用的語言的人使用的過程,所以應用程序不依賴於對任何特定語言的任何假設。
i18n 遠遠不只是對程序使用的文本進行翻譯。它還意味著要考慮所使用的不同腳本和字母表、不同的編寫方向、顯示許多語言所需要的特殊處理以及為用戶提供輸入文本的適當方法。不是每種語言都可以簡單地把每個字母映射到鍵盤上的不同鍵,而且還必須實現更好的複雜性,例如確保在錯誤消息中使用正確的單複數形式。
本地化:
本地化與 i18n 密切相關,因為為國際用戶準備應用程序不僅僅是改變語言。程序還必須能夠理解並尊重日期、貨幣顯示、數字標註、文本排序所使用的不同習慣,以及許多可能不太注意的細節之處 —— 例如有些符號的使用,在世界的不同地方可能會被認為是不恰當的或無禮的。
正像 i18n,正確的 l10n 要求在代碼中添加很多東西,而這些是事後很難輕鬆加入的。GTK+ 提供了針對 i18n 和 l10n 的恰當工具,會讓代碼(和二進位)可以在許多語言和地域上不加修改地運行。切換地域所需要的就是隨操作系統(針對 l10n)或者一個可獨立於實際的程序進行處理和發布的翻譯文件(針對 i18n)一起發布的一組數據。帶來的靈活性會得到開發人員、翻譯者和用戶的熱愛。
可訪問性:
是讓每個人都可以使用您的程序。有些用戶的視力不佳,有些人可能不能用鍵盤或滑鼠,而有些人可能只能移動他們的眼睛。要確保每個想使用您的應用程序的用戶都能使用,需要做許多工作。幸運的是,GTK+ 提供了一個途徑,可以通過一個完善的預先存在的 a11y 框架,立即得到這方面的支持,而您這邊幾乎什麼工作也不需要做。使用這個框架(它是UNIX系統上的事實標準),可以把應用程序帶給各類用戶。
您也能享受 a11y 的許多優勢 —— 例如執行自動 GUI 測試的能力。通過讓特殊需求用戶運行的可訪問性軟體可以使用您的應用程序,您也可以讓測試軟體可以訪問它,例如,檢查行為是否正確 —— 這在傳統的 GUI 編程中會帶來嚴重的問題。
以上三點可能是使用工具包的充足理由 —— 特別是 GTK+,它在這三個領域都有優秀的支持。這個支持絕不完美,但在同類軟體中是最好的,而且把這些關鍵字整合進應用程序的重要性並沒有提到應有高度。在今天的世界中,計算機無處不在,用戶眾多而且獨特,所以不能認為一個遺漏一整群用戶的應用程序是一個完整的產品。

簡單易用

這一點應當很明顯,但是它實際上含義豐富。工具包對用戶應當容易,這樣才有可能創建簡單的、直覺的和樂於使用的界面,哪怕針對的是新手。創建人機交互的正確模型不是一項簡單的任務,GTK+ 正是長時間工作的結果,而且是眾多的甚至困難的決策的結果。
GTK+ 對於開發人員也易於使用。它允許開發人員用簡單的方式說出自己想要的東西,不會用所謂正規方式給開發人員帶來負擔,這些正規方式是計算機為了彌補它們固有的缺乏想像力的缺陷而施加給人類的負擔。
設計靈活、可擴展
編寫 GTK+ 的方式允許在不扭曲基本設計的情況下,讓維護人員添加新功能、讓用戶利用新功能。工具包也是可擴展的,這意味著可以向其中添加自己的塊,並用使用內置塊一樣的方式使用它們。例如,可以編寫自己的控制元素,比如說用於顯示應用程序處理的科學數據,並讓它正確地遵照用戶選擇的顯示風格,就像 GTK+ 自身的控制項那樣。
更進一步,GTK+ 是可定製的,這樣就可以讓它適應自己的需求。GTK+ 有一個系統,可以在所有應用程序之間複製設置,包括主題的選擇。主題 是一組一同發布的定製設置,會影響 GTK+ 使用的基本控制項看起來的效果,甚至某種程度上的行為方式。使用主題,可以(例如)模擬另一個操作系統的觀感(參見圖 1)。
自由、開放
自由軟體 意味著每個人不僅可以自由地獲得和使用這個工具包,還可以在滿足某些條件的情況下修改並重新發布它。自由開放源碼許可 意味著這些條件不是嚴格限制的,可以得到的自由程度是顯著的。最重要的是,GTK+ 採用了 Lesser General Public License (LGPL) 許可,這是 GNU 許可家族中一個不太嚴格的許可。LGPL 允許自由地獲取、修改和發布它覆蓋的任何軟體,只要對修改也保持自由即可。LGPL 還允許任何人使用該庫提供的功能,而不 要求用戶公開應用程序代碼。(這對於許多工業應用來說很重要,因為由於以前的協議或許可,這種場合下一般不希望公開代碼或者公開代碼是顯然不現實的。)使用 LGPL 許可,您既可以是開放源碼社區的好夥伴也可以是好公民。
可移植
最後(但並不是最不重要),GTK+ 是可移植的。這意味著用戶可以在許多平台和系統上運行它。另一方面,開發人員可以把軟體提供給眾多用戶,卻只要編寫一次程序,還可以使用許多不同的編程和開發平台、工具和編程語言。所有這些都可以理解為更多的潛在用戶,您可以利用更好地滿足需求的更廣泛的技能和工具。
所有這些優勢組合在一起,讓 GTK+ 成為軟體開發的堅實基礎。有了它,就能夠把注意力集中在解決實際問題上,而不必重新發明輪子,而且您也可以確信創建的應用程序會按照用戶預期的方式運作、解決他們的問題,而不必創建新的應用程序。