簡介
GTK(GIMP Toolkit)是一套跨多種平台的圖形工具包,按LGPL許可協定發布的。雖然最初是為GIMP寫的,但目前已發展為一個功能強大、設計靈活的一個通用圖形庫。特別是被GNOME選中使得GTK+廣為流傳,成為Linux下開發圖形界面的應用程式的主流開發工具之一,當然GTK+並不要求必須在Linux上,事實上,目前GTK+已經有了成功的windows版本。GTK雖然是用C語言寫的,但是您可以使用你熟悉的語言了使用GTK,因為GTK+已經被綁定到幾乎所有流行的語言上,如:C++, Guile, Perl, Python, TOM, Ada95, Objective C, Free Pascal, and Eiffel。
在 GTK+ 的最新版本 —— 2.8 版上,仍然在進行許多活動,同時,GIMP 無疑仍然是使用 GTK+ 的最著名的程式之一,不過現在它已經不是惟一的使用 GTK+ 的程式了。已經為 GTK+ 編寫了成百上千的應用程式,而且至少有兩個主要的桌面環境(Xfce 和 GNOME)用 GTK+ 為用戶提供完整的工作環境。
特點
使用 GTK+ 這樣的庫比起編寫自己的 GUI 代碼來有多個優勢。例如,它可以顯著節約開發時間,讓開發人員把精力集中在項目真正重要和真正獨特的地方,而不必重複公共的功能。對於用戶來說,這意味著他們使用的應用程式之間具有更好的一致性:工具包能在哪使用,應用程式就能跟到哪裡。就像使用 LEGO 一樣,所有的人都使用同一兼容尺寸這一事實,意味著設計可以在使用庫的人之間共享,不論他們在哪裡使用它。在現實中,現代的 GUI 工具包做的工作不僅僅是避免重複。它們提供了許多高級功能,用戶希望在他們的應用程式中擁有這些功能,但是用別的方法得不到這些功能,因為在這類工具包上所投入的時間和工作,要遠遠超過在單一應用程式上的花費。所以,如果在應用程式中使用 GUI 對您來說很重要,那么請使用工具包。除此之外別無他法。現在剩下的惟一問題就是,應當使用哪個工具包?
優勢
不論開發的需要是什麼,GTK+ 可能就是您正在尋找的答案。GTK+ 提供了許多東西:它既現代,而且得到了積極的開發與維護,圍繞它有一個充滿活力的社區。
它提供了廣泛的選項,用於把工作擴展到儘可能多的人,其中包括一個針對國際化、本地化和可訪問性的完善的框架。
它簡單易用,對開發人員和用戶來說都是這樣。
它的設計良好、靈活而可擴展。
它是自由軟體,有一個自由的開放源碼許可。
它是可移植的,從用戶和開發人員的角度都是這樣。
設計良好、靈活和可擴展
編寫 GTK+ 的方式允許在不扭曲基本設計的情況下,讓維護人員添加新功能、讓用戶利用新功能。工具包也是可擴展的,這意味著可以向其中添加自己的塊,並用使用內置塊一樣的方式使用它們。例如,可以編寫自己的控制元素,比如說用於顯示應用程式處理的科學數據,並讓它正確地遵照用戶選擇的顯示風格,就像 GTK+ 自身的控制項那樣。更進一步,GTK+ 是可定製的,這樣就可以讓它適應自己的需求。GTK+ 有一個系統,可以在所有應用程式之間複製設定,包括主題的選擇。主題 是一組一同發布的定製設定,會影響 GTK+ 使用的基本控制項看起來的效果,甚至某種程度上的行為方式。使用主題,可以(例如)模擬另一個作業系統的觀感。
帶有自由開放源碼許可的自由軟體
自由軟體 意味著每個人不僅可以自由地獲得和使用這個工具包,還可以在滿足某些條件的情況下修改並重新發布它。自由開放源碼許可 意味著這些條件不是嚴格限制的,可以得到的自由程度是顯著的。最重要的是,GTK+ 採用了 Lesser General Public License (LGPL) 許可,這是 GNU 許可家族中一個不太嚴格的許可。LGPL 允許自由地獲取、修改和發布它覆蓋的任何軟體,只要對修改也保持自由即可。LGPL 還允許任何人使用該庫提供的功能,而不 要求用戶公開應用程式代碼。(這對於許多工業套用來說很重要,因為由於以前的協定或許可,這種場合下一般不希望公開代碼或者公開代碼是顯然不現實的。)使用 LGPL 許可,您既可以是開放源碼社區的好夥伴也可以是好公民。可移植
最後(但並不是最不重要),GTK+ 是可移植的。這意味著用戶可以在許多平台和系統上運行它。另一方面,開發人員可以把軟體提供給眾多用戶,卻只要編寫一次程式,還可以使用許多不同的編程和開發平台、工具和程式語言。所有這些都可以理解為更多的潛在用戶,您可以利用更好地滿足需求的更廣泛的技能和工具。所有這些優勢組合在一起,讓 GTK+ 成為軟體開發的堅實基礎。有了它,就能夠把注意力集中在解決實際問題上,而不必重新發明輪子,而且您也可以確信創建的應用程式會按照用戶預期的方式運作、解決他們的問題,而不必創建新的應用程式。
現代的且開發積極的工具包
GTK+ 是採用軟體開發中的最新技術開發的,只要發現缺陷(肯定有缺陷,因為沒有任何軟體是完美的),開發人員就會盡力在下一版本中修補缺陷。使用現代的軟體意味著,您不會陷在過時的工作中,而跟不上時代的發展。持續的維護和開發也意味著您擁有影響工具包的未來發展方向的能力。另外,在出現新的發行版時,會引入基於用戶反饋的新特性和新功能,而舊的問題則得到修補。
國際化、本地化和可訪問性
在創建要讓所有人使用的軟體的時候,請記住三個關鍵字:國際化、本地化和可訪問性(通常分別縮寫為 i18n、l10n 和 a11y)。國際化 是將程式準備為被母語不是開發應用程式所採用的語言的人使用的過程,所以應用程式不依賴於對任何特定語言的任何假設。
i18n 遠遠不只是對程式使用的文本進行翻譯。它還意味著要考慮所使用的不同腳本和字母表、不同的編寫方向、顯示許多語言所需要的特殊處理以及為用戶提供輸入文本的適當方法。不是每種語言都可以簡單地把每個字母映射到鍵盤上的不同鍵,而且還必須實現更好的複雜性,例如確保在錯誤訊息中使用正確的複數。
本地化 與 i18n 密切相關,因為為國際用戶準備應用程式不僅僅是改變語言。程式還必須能夠理解並尊重日期、貨幣顯示、數字標註、文本排序所使用的不同習慣,以及許多可能不太注意的細節之處 —— 例如有些符號的使用,在世界的不同地方可能會被認為是不恰當的或無禮的。
正像 i18n,正確的 l10n 要求在代碼中添加很多東西,而這些是事後很難輕鬆加入的。GTK+ 提供了針對 i18n 和 l10n 的恰當工具,會讓代碼(和二進制)可以在許多語言和地域上不加修改地運行。切換地域所需要的就是隨作業系統(針對 l10n)或者一個可獨立於實際的程式進行處理和發布的翻譯檔案(針對 i18n)一起發布的一組數據。帶來的靈活性會得到開發人員、翻譯者和用戶的熱愛。
可訪問性
是讓每個人都可以使用您的程式。有些用戶的視力不佳,有些人可能不能用鍵盤或滑鼠,而有些人可能只能移動他們的眼睛。要確保每個想使用您的應用程式的用戶都能使用,需要做許多工作。幸運的是,GTK+ 提供了一個途徑,可以通過一個完善的預先存在的 a11y 框架,立即得到這方面的支持,而您這邊幾乎什麼工作也不需要做。使用這個框架(它是 UNIX® 系統上的事實標準),可以把應用程式帶給各類用戶。您也能享受 a11y 的許多優勢 —— 例如執行自動 GUI 測試的能力。通過讓特殊需求用戶運行的可訪問性軟體可以使用您的應用程式,您也可以讓測試軟體可以訪問它,例如,檢查行為是否正確 —— 這在傳統的 GUI 編程中會帶來嚴重的問題。(還值得記住的是:現在,a11y 不再被當作 “好” 東西。許多法規 —— 例如有關美國政府用軟體的規則 —— 實際上要求軟體對特殊需求的用戶有恰當的支持。)
以上三點可能是使用工具包的充足理由 —— 特別是 GTK+,它在這三個領域都有優秀的支持。這個支持絕不完美,但在同類軟體中是最好的,而且把這些關鍵字整合進應用程式的重要性並沒有提到應有高度。在今天的世界中,計算機無處不在,用戶眾多而且獨特,所以不能認為一個遺漏一整群用戶的應用程式是一個完整的產品。
簡單易用
這一點應當很明顯,但是它實際上含義豐富。工具包對用戶應當容易,這樣才有可能創建簡單的、直覺的和樂於使用的界面,哪怕針對的是新手。創建人機互動的正確模型不是一項簡單的任務,GTK+ 正是長時間工作的結果,而且是眾多的甚至困難的決策的結果。GTK+ 對於開發人員也易於使用。它允許開發人員用簡單的方式說出自己想要的東西,不會用所謂正規方式給開發人員帶來負擔,這些正規方式是計算機為了彌補它們固有的缺乏想像力的缺陷而施加給人類的負擔。
版本發布
2012年5月13日,GTK+ 3.4.3 發布,該版本重寫了 GtkIconView 的大小和布局,修復了一些小 bug。2012年07月18日,GTK+ 3.5.8 發布,該版本增加一個新的命令行工具 gtk-launch 用於從桌面檔案中啟動套用,新的部件 GtkStrengthBar 用於顯示某些級別和數量;更新了 Wayland 協定,修復了很多小bug。
2012年08月08日,GTK+ 3.5.10 發布,該版本改進了 Wayland 後端,廢棄對 GDK 執行緒的支持,修復了一些小bug。
2012年08月22日 ,GTK+ 3.5.12 發布,GUI 開發工具包。
2012年09月06日,GTK+ 3.5.16 發布,該版本修復了啟動 Nautilus 時的關鍵警告信息。
2012年09月23日 ,GTK+ 3.5.18 發布,GTK+ 3.5.18 改進內容:
1. GMenu 支持 actions 命名空間,允許子選單包含打開的 action,添加一個新的函式 gtk_menu_shell_bind_model().
2. 支持 CSS 的 cross-fading 和 transitions 以及動畫
3. 調整 Scrollbar 和比例行為以適應 OS X 平台
4. 修復了一些小 bug。
2012年12月31日,GTK+ 3.7.4 發布,大大改進字型處理。
GTK+ 3.7.4 大大改進了字型處理,在字元串里適當處理 Unicode省略號;一些顯著的性能提升等等。