天天看點

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+ 成為軟體開發的堅實基礎。有了它,就能夠把注意力集中在解決實際問題上,而不必重新發明輪子,而且您也可以确信建立的應用程式會按照使用者預期的方式運作、解決他們的問題,而不必建立新的應用程式。

繼續閱讀