linux環(huán)境程序設(shè)計(jì)教學(xué)第26章glade程序界面_第1頁(yè)
linux環(huán)境程序設(shè)計(jì)教學(xué)第26章glade程序界面_第2頁(yè)
linux環(huán)境程序設(shè)計(jì)教學(xué)第26章glade程序界面_第3頁(yè)
linux環(huán)境程序設(shè)計(jì)教學(xué)第26章glade程序界面_第4頁(yè)
linux環(huán)境程序設(shè)計(jì)教學(xué)第26章glade程序界面_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第26章Glade設(shè)計(jì)程序界面Glade是Linux系統(tǒng)中設(shè)計(jì)GTK+程序界面的所見(jiàn)即所得工具。開發(fā)者可將窗體構(gòu)件作為畫布,通過(guò)向畫布添加界面構(gòu)件設(shè)計(jì)程序界面。這種方式最大的優(yōu)勢(shì)在于設(shè)計(jì)的同時(shí)能直觀地看到界面構(gòu)件,并且可以隨時(shí)調(diào)整界面的設(shè)計(jì),設(shè)計(jì)界面如同畫圖一般。Glade所設(shè)計(jì)的界面以XML格式保存,因此界面和程序邏輯是完全分離的,使程序界面設(shè)計(jì)更為輕松。本章將介紹Glade的使用方法,以及C語(yǔ)言接口函數(shù)庫(kù)。26.1Glade簡(jiǎn)介Glade界面設(shè)計(jì)軟件是GNOME桌面環(huán)境的子項(xiàng)目,用于為GNOME桌面環(huán)境上運(yùn)行的程序提供圖形用戶界面。Glade使用GPL協(xié)議發(fā)布,雖然是開源軟件,但它的設(shè)計(jì)思想和易用性都領(lǐng)先于大多數(shù)商業(yè)集成開發(fā)環(huán)境中的界面設(shè)計(jì)工具。在Glade的界面中,大部分常用GTK+界面構(gòu)件被作為圖標(biāo)放在工具欄中。開發(fā)者如果需要向界面中添加某一個(gè)構(gòu)件,只需從工具欄上選擇即可。26.1Glade簡(jiǎn)介添加了界面構(gòu)件后,可直接在Glade中為界面構(gòu)件設(shè)置屬性,以及連接回調(diào)函數(shù)。設(shè)計(jì)的結(jié)果可保存為一個(gè)Glade界面項(xiàng)目文件,實(shí)際該文件是XML文件。如下例所示:<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><!DOCTYPEglade-interfaceSYSTEM"glade-2.0.dtd"><!--Generatedwithglade33.4.5onThuMar2621:13:512009--><glade-interface>

<widgetclass="GtkWindow"id="window">

<child>

<widgetclass="GtkButton"id="button">

<propertyname="visible">True</property>

<propertyname="can_focus">True</property>

<propertyname="receives_default">True</property>

<propertyname="label"translatable="yes">button</property>

<propertyname="response_id">0</property>

<signalname="clicked"handler="gtk_main_quit"/>

</widget>

</child>

</widget></glade-interface>26.1Glade簡(jiǎn)介這段代碼是用Glade生成的,它實(shí)現(xiàn)了一個(gè)窗體構(gòu)件和窗體中放置的一個(gè)按鈕構(gòu)件。代碼第一行定義了XML格式版本和字符編碼,第二行是實(shí)際用途的說(shuō)明。從第5行開始定義窗體構(gòu)件,而按鈕構(gòu)件是作為窗體構(gòu)件的子構(gòu)件定義。其中,還為按鈕構(gòu)件的clicked信號(hào)連接了gtk_main_quit()函數(shù),實(shí)現(xiàn)了按鈕構(gòu)件的功能。XML格式的引入是Glade最主要的特性,它使程序的界面部分完全獨(dú)立。在大部分情況下,開發(fā)者不用去修改XML格式的內(nèi)容,只需要通過(guò)libglade函數(shù)庫(kù)將程序邏輯部分與界面項(xiàng)目文件連接起來(lái)。Glade的另一特性是能夠直接顯示容器的層次,而閱讀源程序很難理解復(fù)雜的容器結(jié)構(gòu)。安裝Glade可在其官方網(wǎng)站下載源代碼編譯,地址為?;蛘咴诮K端輸入下列命令:apt-getinstallglade安裝成功后,可選擇GNOME桌面的“Dash主頁(yè)”|“Glade”命令啟動(dòng)Glade程序。26.2構(gòu)造圖形界面任何復(fù)雜的圖形界面都可以使用Glade構(gòu)造,它可以縮短圖形界面設(shè)計(jì)的周期,并在最大程度上保證代碼的正確性。在使用Glade前,開發(fā)者需要對(duì)GTK+有初步的認(rèn)識(shí),本書前一部分的內(nèi)容已介紹了這些知識(shí)。Glade可成為首選的界面設(shè)計(jì)軟件,替代C語(yǔ)言中繁復(fù)的編碼過(guò)程。本節(jié)將介紹使用Glade構(gòu)造圖形界面的方法。26.2.1添加窗體Glade提供了11種窗體構(gòu)件供用戶選擇,這些都是在GTK+中所預(yù)定義的。開發(fā)者可在Glade主界面左側(cè)“頂層”選項(xiàng)卡中選擇所需要添加的窗體構(gòu)件。選項(xiàng)卡中每一個(gè)按鈕對(duì)應(yīng)著一種窗體構(gòu)件,這些按鈕的名稱依次為:1.通用窗體構(gòu)件通用窗體構(gòu)件即gtk_window_new()函數(shù)所創(chuàng)建的窗體,單擊該構(gòu)件可在Glade主界面的編輯區(qū)域創(chuàng)建一個(gè)新窗體。Glade中所顯示的為窗體的主體部分,窗體的標(biāo)題欄和邊框不會(huì)顯示。其橙色邊框所界定的范圍為實(shí)際窗體的尺寸,可用鼠標(biāo)拖動(dòng)藍(lán)色邊框改變窗體的尺寸。窗體主體中間的網(wǎng)格區(qū)域表示是未添加界面構(gòu)件的容器區(qū)域,該部分可放置界面構(gòu)件。一個(gè)Glade項(xiàng)目中可以建立多個(gè)窗體構(gòu)件,每個(gè)窗體構(gòu)件都作為一個(gè)頂層容器被顯示在Glade主界面右上方的“容器”列表中??稍凇叭萜鳌绷斜碇须p擊窗體構(gòu)件的名稱打開窗體進(jìn)行編輯?;蛘哂覔舸绑w名稱,在彈出菜單中選擇“刪除”命令,從項(xiàng)目中刪除一個(gè)窗體構(gòu)件。Glade支持窗體的復(fù)制、剪切和粘貼操作,用于在同一個(gè)項(xiàng)目?jī)?nèi)創(chuàng)建窗體的副本,或者將窗體復(fù)制到不同項(xiàng)目中。26.2.1添加窗體2.通用窗體構(gòu)件(失去焦點(diǎn)的)該通用窗體構(gòu)件即gtk_offscreen_window_new()函數(shù)所創(chuàng)建的窗體,單擊該構(gòu)件可在Glade主界面的編輯區(qū)域創(chuàng)建一個(gè)新窗體。3.通用對(duì)話框構(gòu)件通用對(duì)話框構(gòu)件對(duì)應(yīng)gtk_dialog_new_with_button()函數(shù)所創(chuàng)建的窗體,它的內(nèi)部由一個(gè)縱向組裝盒容器和一個(gè)按鈕盒容器組成。通用對(duì)話框在程序運(yùn)行時(shí)不顯示最小化和最大化按鈕,用戶也不能通過(guò)拖拉操作改變其尺寸。通用對(duì)話框的縱向組裝盒內(nèi)可放置其它容器或窗體構(gòu)件。按鈕盒預(yù)留了兩個(gè)按鈕的位置,該位置只能放置按鈕構(gòu)件或者按鈕構(gòu)件的子類。如果按鈕的個(gè)數(shù)少于或多于按鈕盒預(yù)留的位置,可在“常規(guī)”選項(xiàng)卡修改按鈕的個(gè)數(shù)。26.2.1添加窗體4.關(guān)于對(duì)話框關(guān)于對(duì)話框是通過(guò)gtk_about_dialog_new()函數(shù)建立的,用于顯示當(dāng)前應(yīng)用程序的信息。關(guān)于對(duì)話框繼承了通用對(duì)話框的特性,只是預(yù)先定義了一些界面構(gòu)件在其內(nèi)。關(guān)于對(duì)話框中顯示的內(nèi)容可直接在“常規(guī)”選項(xiàng)卡中設(shè)置。這些內(nèi)容對(duì)應(yīng)所有應(yīng)用程序的特性,并遵循通用版式,如下所示:(1)名稱。對(duì)話框構(gòu)件在程序中的名稱,對(duì)應(yīng)gtk_about_dialog_set_name()函數(shù)的功能。該函數(shù)的一般形式為:voidgtk_about_dialog_set_name(GtkAboutDialog*about,

constgchar*name);(2)程序名稱。當(dāng)前項(xiàng)目所建立應(yīng)用程序的名稱,程序名稱用大字號(hào)顯示在關(guān)于對(duì)話框中心區(qū)域。對(duì)應(yīng)gtk_about_dialog_set_program_name()函數(shù)的功能,該函數(shù)的一般形式為:voidgtk_about_dialog_set_program_name(GtkAboutDialog*about,

constgchar*name);(3)程序版本。當(dāng)前項(xiàng)目的版本號(hào),顯示在程序名稱之后,使用與程序名稱相同的字號(hào)。對(duì)應(yīng)gtk_about_dialog_set_version()函數(shù)的功能,它的一般形式為:voidgtk_about_dialog_set_version(GtkAboutDialog*about,

constgchar*version);26.2.1添加窗體(4)版權(quán)字符串。當(dāng)前項(xiàng)目的版權(quán)信息,顯示在程序名稱下方,使用較小的字號(hào)。對(duì)應(yīng)gtk_about_dialog_set_copyright()函數(shù)的功能,它的一般形式為:voidgtk_about_dialog_set_copyright(GtkAboutDialog*about,constgchar*copyright);(5)評(píng)論字符串。評(píng)論字符串是當(dāng)前應(yīng)用程序主要功能的表述,顯示在程序名稱和版權(quán)字符串之間。對(duì)應(yīng)ments()函數(shù)的功能,它的一般形式為:voidments(GtkAboutDialog*about,constgchar*comments);(6)網(wǎng)站URL。當(dāng)前項(xiàng)目發(fā)行者的網(wǎng)站地址,顯示在版權(quán)信息下方,字符串有下劃線。單擊該地址將在瀏覽器中打開所指向的網(wǎng)頁(yè)。對(duì)應(yīng)gtk_about_dialog_set_website()函數(shù),它的一般形式為:voidgtk_about_dialog_set_website(GtkAboutDialog*about,constgchar*website);(7)網(wǎng)站標(biāo)簽。如果設(shè)置了網(wǎng)站標(biāo)簽,那么網(wǎng)站地址不會(huì)直接顯示在關(guān)于對(duì)話框上,而是用網(wǎng)站標(biāo)簽內(nèi)的字符串代替。對(duì)應(yīng)gtk_about_dialog_set_website_label()函數(shù),它的一般形式為:voidgtk_about_dialog_set_website_label(GtkAboutDialog*about,constgchar*website_label);26.2.1添加窗體(8)許可。設(shè)置許可信息后,關(guān)于對(duì)話框的左下角將出現(xiàn)一個(gè)許可按鈕,按下該按鈕會(huì)在一個(gè)新對(duì)話框中列出許可信息的內(nèi)容。許可信息的內(nèi)容通常為GPL協(xié)議相關(guān)信息。許可信息可通過(guò)gtk_about_dialog_set_license()函數(shù)設(shè)置,它的一般形式為:voidgtk_about_dialog_set_license(GtkAboutDialog*about,

constgchar*license);(9)作者。當(dāng)前項(xiàng)目的程序開發(fā)者名稱,可輸入多個(gè)作者的信息。設(shè)置作者信息后,界面左下角將增加一個(gè)鳴謝按鈕。按下該按鈕會(huì)彈出“鳴謝”對(duì)話框,列出作者、翻譯、美工等信息。如果要在作者名稱后插入電子郵件地址或網(wǎng)絡(luò)地址,并且使它們成為超級(jí)連接,可通過(guò)尖括號(hào)“<>”包圍地址信息實(shí)現(xiàn)。作者信息可通過(guò)gtk_about_dialog_set_authors()函數(shù)設(shè)置,它的一般形式為:voidgtk_about_dialog_set_authors(GtkAboutDialog*about,

constgchar**authors);(10)文檔撰寫者。當(dāng)前項(xiàng)目的說(shuō)明書等文檔撰寫者的名稱,該信息顯示在“鳴謝”對(duì)話框中。對(duì)應(yīng)gtk_about_dialog_set_documenters()函數(shù)的功能,它的一般形式為:voidgtk_about_dialog_set_documenters(GtkAboutDialog*about,

constgchar**documenters);(11)翻譯者。當(dāng)前項(xiàng)目的翻譯工作者名稱,該信息顯示在“鳴謝”對(duì)話框中。對(duì)應(yīng)gtk_about_dialog_set_translator_credits()函數(shù)的功能,它的一般形式為:voidgtk_about_dialog_set_translator_credits(GtkAboutDialog*about,

constgchar*translator_credits);26.2.1添加窗體(12)美工。當(dāng)前項(xiàng)目的美工名稱,該信息顯示在“鳴謝”對(duì)話框中。對(duì)應(yīng)gtk_about_dialog_set_artists()函數(shù)的功能,它的一般形式為:voidgtk_about_dialog_set_artists(GtkAboutDialog*about,

constgchar**artists);(13)標(biāo)志。用于設(shè)置當(dāng)前項(xiàng)目的標(biāo)志,可以是GTK+支持的任何圖形格式文件,顯示在標(biāo)題欄下方。設(shè)置標(biāo)志文件可通過(guò)gtk_about_dialog_set_logo()函數(shù)實(shí)現(xiàn),它的一般形式為:voidgtk_about_dialog_set_logo(GtkAboutDialog*about,

GdkPixbuf*logo);26.2.1添加窗體5.顏色選擇對(duì)話框顏色選擇對(duì)話框?qū)?yīng)GTK+庫(kù)中的gtk_color_selection_dialog_new()函數(shù)所建立的對(duì)話框,用于選擇顏色。窗體中的大部分內(nèi)容是固定的,不可被用戶修改,用戶只能在其中的縱向組裝盒容器中添加界面構(gòu)件。6.文件選擇對(duì)話框文件選擇對(duì)話框可通過(guò)gtk_file_chooser_dialog_new()函數(shù)創(chuàng)建,它有一個(gè)縱向組裝盒可用于放置界面構(gòu)件,另外還提供了一個(gè)按鈕盒放置按鈕。如果沒(méi)有指定按鈕,那么Glade會(huì)為其自動(dòng)從按鈕庫(kù)添加GTK_STOCK_CANCEL和GTK_STOCK_OPEN。文件選擇對(duì)話框有一個(gè)重要屬性,即“動(dòng)作”屬性??稍凇俺R?guī)”選項(xiàng)卡中設(shè)置,它有4個(gè)選項(xiàng),默認(rèn)為“打開”,其它選項(xiàng)依次為“保存”、“選擇目錄”和“創(chuàng)建目錄”。這4個(gè)選項(xiàng)用于設(shè)置對(duì)話框的功能特性,與此同時(shí)對(duì)話框的標(biāo)題和外觀也會(huì)跟隨設(shè)置改變。7.字體選擇對(duì)話框字體選擇對(duì)話框?qū)?yīng)gtk_font_selection_dialog_new()函數(shù)的功能,它的大部分組件不能被修改,只提供了一個(gè)縱向組裝盒用于添加界面構(gòu)件。26.2.1添加窗體8.消息對(duì)話框消息對(duì)話框?qū)?yīng)gtk_message_dialog_new()函數(shù)的功能,所有內(nèi)容均可在“常規(guī)”選項(xiàng)卡中設(shè)置。如下所示。消息類型:用于定義消息對(duì)話框顯示的風(fēng)格,選項(xiàng)依次為“信息”、“警告”、“問(wèn)題”、“錯(cuò)誤”和“其它”。消息按鈕:用于定義消息對(duì)話框中所顯示的按鈕,選項(xiàng)依次為“無(wú)”、“確定”、“關(guān)閉”、“取消”、“是,否”和“確定,取消”。文字:用大字體顯示的消息文本。次要文本:用小字體顯示的消息文本。9.最近選擇對(duì)話框最近選擇對(duì)話框?qū)?yīng)gtk_recent_chooser_dialog_new()函數(shù)的功能,用于顯示最近用戶編輯過(guò)的文件?!俺R?guī)”選項(xiàng)卡的“限制”微調(diào)框可設(shè)置文件顯示的最多個(gè)數(shù)?!芭判蝾愋汀毕吕斜砜蚩稍O(shè)置文件列表的排序方法,依次為“無(wú)”、“最近使用最多的一個(gè)”、“最近使用最少的一個(gè)”和“定制”。對(duì)話框中有一個(gè)按鈕盒構(gòu)件,可裝入要顯示的按鈕。10.輔助輔助是一種分為多頁(yè)顯示內(nèi)容的向?qū)Т绑w,在GTK+庫(kù)中可使用gtk_assistant_new()函數(shù)創(chuàng)建。每一頁(yè)中都默認(rèn)放置著一個(gè)文本標(biāo)簽構(gòu)件,用于顯示文本信息。如果需要放置其它構(gòu)件,可將文本標(biāo)簽刪除。窗體的右下方有兩個(gè)按鈕,分別用于向前翻頁(yè)和向后翻頁(yè)。如果當(dāng)前頁(yè)面是第一面,“后退”按鈕將被隱藏。如果是最后一頁(yè),“前進(jìn)”按鈕會(huì)被“應(yīng)用”按鈕替代。11.選擇打開程序?qū)υ捒蜻x擇打開程序?qū)υ捒驅(qū)?yīng)gtk_app_chooser_dialog_new()函數(shù)的功能,用于顯示最近打開文件的應(yīng)用程序。26.2.2添加容器Glade提供了19種容器構(gòu)件供用戶選擇,這些都是在GTK+中所預(yù)定義的。開發(fā)者可在Glade主界面左側(cè)“容器”選項(xiàng)卡中選擇所需要添加的容器構(gòu)件。選項(xiàng)卡中每一個(gè)按鈕對(duì)應(yīng)著一種容器構(gòu)件。根據(jù)使用方法和作用的不同,可將這些容器依次分為下列類別。1.橫向組裝盒與縱向組裝盒單擊縱向組裝盒按鈕時(shí),Glade會(huì)提示輸入條目數(shù),該數(shù)值是容器中單元格的個(gè)數(shù)。在使用gtk_hbox_new()和gtk_vbox_new()時(shí)并不需要提供這些參數(shù),設(shè)置單元格的個(gè)數(shù)是為了便于可視化編輯。設(shè)置后可在“常規(guī)”選項(xiàng)卡中修改單元格的個(gè)數(shù)。在容器中可繼續(xù)裝入其它的容器,容器的層次并沒(méi)有限制。Glade對(duì)容器的管理非常靈活,其主界面右上方的“容器”列表內(nèi)將根據(jù)容器名稱顯示出容器的層次。如果需要在容器的上一級(jí)增加一個(gè)容器,可右擊編輯區(qū)內(nèi)的容器,或者右擊“容器”列表中的容器名。在彈出菜單“添加上一級(jí)”子菜單中,選擇要添加的容器。刪除容器則有兩種方式。第一種是右擊編輯區(qū)中的容器或“容器”列表中的容器名,在彈出菜單中選擇“刪除”命令。這將刪除容器本身,以及容器內(nèi)的所有界面構(gòu)件。另一種方法是在彈出菜單中選擇“清除上一級(jí)”命令,只有容器的上一級(jí)容器被刪除,容器本身的層次向前移了一位。復(fù)制、剪切和粘貼也可用于容器,影響的將是容器內(nèi)的所有界面構(gòu)件。Glade會(huì)為這些構(gòu)件的副本重新命名。2.表格表格按鈕對(duì)應(yīng)gtk_table_new()函數(shù)的功能,按下時(shí)將提示輸入表格的行數(shù)和列數(shù)?;蛘咴趧?chuàng)建表格后,通過(guò)“常規(guī)”選項(xiàng)卡中的“行數(shù)”和“列數(shù)”輸入框修改。3.筆記本筆記本按鈕對(duì)應(yīng)gtk_notebook_new()函數(shù),按下時(shí)將提示輸入筆記本的頁(yè)數(shù)。該頁(yè)數(shù)可在創(chuàng)建筆記本后通過(guò)“常規(guī)”選項(xiàng)卡中“頁(yè)”微調(diào)框中修改。筆記本構(gòu)件中選項(xiàng)卡的名稱作為文本標(biāo)簽構(gòu)件列在“容器”列表內(nèi),可單擊該名稱,在“常規(guī)”選項(xiàng)卡的“標(biāo)簽”文本框中修改。26.2.2添加容器4.框架和外觀框架創(chuàng)建框架構(gòu)件所對(duì)應(yīng)的是gtk_frame_new()函數(shù),使用Glade創(chuàng)建框架構(gòu)件時(shí)會(huì)自動(dòng)添加一個(gè)對(duì)齊構(gòu)件和一個(gè)標(biāo)簽構(gòu)件。對(duì)齊構(gòu)件是框架內(nèi)的下一層容器,標(biāo)簽構(gòu)件顯示在框架的右上方??蚣艿倪吙蝻L(fēng)格可在“常規(guī)”選項(xiàng)卡內(nèi)的“框架陰影”下拉列表框中設(shè)置,選項(xiàng)依次為“無(wú)”、“里面”、“突出”、“向內(nèi)蝕刻”和“向外蝕刻”。外觀框架又稱比例框架構(gòu)件,所對(duì)應(yīng)的是gtk_aspect_frame_new()函數(shù)。外觀框架的比例屬性可在“常規(guī)”選項(xiàng)卡內(nèi)的“比率”微調(diào)框內(nèi)設(shè)置。5.菜單條Glade添加菜單條的功能遠(yuǎn)比gtk_menu_bar_new()函數(shù)所實(shí)現(xiàn)的功能要豐富,它能同時(shí)添加菜單容器和菜單項(xiàng)。Glade沒(méi)有將菜單容器和菜單項(xiàng)作為獨(dú)立的界面構(gòu)件,而是提供了菜單編輯器專門用于設(shè)計(jì)菜單。右擊編輯區(qū)中的菜單,在彈出菜單中選擇“編輯”命令,將打開菜單編輯器。在菜單編輯器左側(cè)的標(biāo)簽列表中選擇菜單項(xiàng)名稱后,可編輯該菜單項(xiàng)。菜單編輯器右側(cè)有4個(gè)屬性可以設(shè)置,依次如下。名稱:在代碼中訪問(wèn)該菜單項(xiàng)的名稱。類型:根據(jù)GTK+對(duì)菜單項(xiàng)的定義,可選取的值有“普通的”、“圖像”、“復(fù)選”、“單選”和“分割條”。標(biāo)簽:顯示在菜單中的字符串。工具提示:鼠標(biāo)懸停時(shí)顯示的文本,菜單編輯器會(huì)為菜單項(xiàng)自動(dòng)添加工具提示對(duì)象。庫(kù)存條目:該選項(xiàng)在菜單項(xiàng)“類型”設(shè)置為“圖像”時(shí)顯示,可從圖像庫(kù)中選擇菜單項(xiàng)的圖形。如果要添加一個(gè)菜單項(xiàng),可單擊“添加”按鈕,新菜單項(xiàng)將在菜單項(xiàng)列表中所選菜單項(xiàng)后一位,且處于同一層?;蛘哂覔袅斜碇械牟藛雾?xiàng),選擇“添加子項(xiàng)目”命令,創(chuàng)建所選菜單項(xiàng)的下一級(jí)菜單。菜單編輯器的下方是信號(hào)與事件的列表,可直接在此為菜單項(xiàng)連接事件與回調(diào)函數(shù)。如果要為菜單項(xiàng)添加快捷方式,操作步驟為:(1)在“容器”列表內(nèi)選擇菜單項(xiàng)。(2)選擇“容器”列表下的公共選項(xiàng)卡,單擊“快捷鍵”后的編輯按鈕。(3)在“選擇快捷鍵”對(duì)話框中,選擇對(duì)應(yīng)的信號(hào)、按鍵和控制鍵。26.2.2添加容器6.工具條工具條對(duì)應(yīng)gtk_toolbar_new()函數(shù)的功能,創(chuàng)建后在編輯區(qū)右擊工具條,在彈出的快捷菜單中選擇“編輯”命令,可打開“工具條編輯器”對(duì)話框。在“工具條編輯器”中,可單擊“添加”按鈕添加一個(gè)工具構(gòu)件?!邦愋汀毕吕斜砜蛴糜诙x工具構(gòu)件的類型,默認(rèn)為“按鈕”。工具構(gòu)件的信號(hào)與事件可在對(duì)話框下側(cè)的信號(hào)列表中設(shè)置。7.水平窗格和垂直窗格水平窗格和垂直窗格對(duì)應(yīng)gtk_hpaned_new()和gtk_vpaned_new()函數(shù)的功能,初始位置可在“常規(guī)”選項(xiàng)卡內(nèi)的“位置”微調(diào)框中設(shè)置,并且要將“位置設(shè)置”的值設(shè)為“是”才能在程序中生效。8.橫向按鈕盒與縱向按鈕盒橫向按鈕盒與縱向按鈕盒對(duì)應(yīng)gtk_hbutton_box_new()和gtk_vbutton_box_new()函數(shù)的功能。為了方便編輯,需要在“常規(guī)”選項(xiàng)卡內(nèi)的“條目數(shù)”微調(diào)框中指定按鈕盒內(nèi)單元格的個(gè)數(shù),默認(rèn)值為3。9.陳列陳列即是指布局容器,對(duì)應(yīng)gtk_layout_new()函數(shù)的功能。布局容器最大尺寸可在“常規(guī)”選項(xiàng)卡內(nèi)的“寬度”和“高度”微調(diào)框中設(shè)置。10.固定固定容器對(duì)應(yīng)gtk_fixed_new()函數(shù)的功能。26.2.2添加容器11.事件框事件框?qū)?yīng)gtk_event_box_new()函數(shù)的功能。12.展開器展開器對(duì)應(yīng)gtk_expander_new()函數(shù)的功能,它由一個(gè)箭頭構(gòu)件、一個(gè)標(biāo)簽和一個(gè)容器所組成。單擊箭頭可改變箭頭的方向。當(dāng)箭頭構(gòu)件指向下時(shí),展開器內(nèi)的容器構(gòu)件將顯示。而在箭頭指向右方時(shí),展開器內(nèi)的容器將被隱藏。13.視口視口即視見(jiàn)區(qū),對(duì)應(yīng)gtk_viewport_new()函數(shù)的功能?!俺R?guī)”選項(xiàng)卡內(nèi)的“陰影類型”下拉列表框可設(shè)置其邊框的類型,選項(xiàng)依次為“無(wú)”、“里面”、“突出”、“向內(nèi)蝕刻”和“向外蝕刻”。14.可滾動(dòng)的窗口可滾動(dòng)的窗口即滾動(dòng)條窗體構(gòu)件,對(duì)應(yīng)gtk_scrolled_window_new()函數(shù)的功能。它包括一組滾動(dòng)條構(gòu)件和一個(gè)視見(jiàn)區(qū),但在Glade中不可直接訪問(wèn)其子構(gòu)件的屬性。如果要設(shè)置滾動(dòng)條構(gòu)件的顯示狀態(tài),可通過(guò)“常規(guī)”選項(xiàng)卡內(nèi)的“水平滾動(dòng)條策略”和“垂直滾動(dòng)條策略”下拉列表框設(shè)置。26.2.2添加容器15.對(duì)齊對(duì)齊容器對(duì)應(yīng)gtk_alignment_new()函數(shù)。在“常規(guī)”選項(xiàng)卡中可設(shè)置其屬性,這些屬性依次為:水平排列:取值范圍為0.0至1.0,即最左到最右。垂直排列:取值范圍為0.0至1.0,即最上到最下。水平縮放比率:如果水平方向可用的空間比子構(gòu)件所需要的多,設(shè)置子部件將使用多少。0.0表示不用,1.0表示全部。垂直縮放比率:如果垂直方向可用的空間比子構(gòu)件所需要的多,設(shè)置子部件將使用多少。0.0表示不用,1.0表示全部。頂部留空:上方的邊界值。底部留空:下方的邊界值。左部留空:左面的邊界值。右部留空:右面的邊界值。26.2.3添加構(gòu)件Glade提供了兩組界面構(gòu)件,分別位于“控制和顯示”選項(xiàng)卡與“過(guò)時(shí)的Gtk+”選項(xiàng)卡中。后者是GTK+為了保持與舊版本兼容所以仍然在使用的界面構(gòu)件。這些界面構(gòu)件均已被其它構(gòu)件所替代,并且不再被更新,甚至可能會(huì)被將來(lái)的版本拋棄,應(yīng)謹(jǐn)慎選擇這些構(gòu)件。常用的界面構(gòu)件可分為如下幾類。1.按鈕按鈕構(gòu)件共有9種。單擊代表構(gòu)件的按鈕后,將鼠標(biāo)指針移動(dòng)到編輯區(qū)的容器上方,可見(jiàn)光標(biāo)變?yōu)橐粋€(gè)加號(hào)外加構(gòu)件圖標(biāo)的形狀。再次按下鼠標(biāo)左鍵,構(gòu)件將被添加到容器以內(nèi)。這些按鈕依次為。普通按鈕對(duì)應(yīng)gtk_button_new()函數(shù)的功能。開關(guān)按鈕對(duì)應(yīng)gtk_toggle_button_new()函數(shù)的功能。復(fù)選按鈕對(duì)應(yīng)gtk_check_button_new()函數(shù)的功能。微調(diào)按鈕對(duì)應(yīng)gtk_spin_button_new()函數(shù)的功能。單選按鈕對(duì)應(yīng)gtk_radio_button_new()函數(shù)的功能,Glade可以自動(dòng)為單選按鈕添加GSList鏈表。如果要使多個(gè)單選按鈕使用同一個(gè)鏈表,即劃為同一組,可單擊“常規(guī)”選項(xiàng)卡“組”后的編輯按鈕,彈出“在工程中選擇單選按鈕”對(duì)話框。然后選擇該組中第一個(gè)單選按鈕的名稱。文件選擇按鈕對(duì)應(yīng)gtk_file_chooser_button_new()函數(shù)的功能。顏色按鈕對(duì)應(yīng)gtk_color_button_new()函數(shù)的功能。字體按鈕對(duì)應(yīng)gtk_font_button_new()函數(shù)的功能。連接按鈕對(duì)應(yīng)gtk_link_button_new()函數(shù)的功能,連接的網(wǎng)絡(luò)地址可在“常規(guī)”選項(xiàng)卡內(nèi)的URL文本框中輸入。26.2.3添加構(gòu)件2.圖像圖像對(duì)應(yīng)gtk_image_new_from_stock()函數(shù)的功能,可在“常規(guī)”選項(xiàng)卡內(nèi)“庫(kù)存圖像”下拉列表框中設(shè)置圖像,默認(rèn)情況下使用的是圖像庫(kù)內(nèi)GTK_MISSING_IMAGE。圖像的尺寸可在“圖標(biāo)大小”微調(diào)框內(nèi)設(shè)置,取值對(duì)應(yīng)GtkIconSize枚舉類型,有效取值范圍為0至6。如果要在圖像構(gòu)件中使用文件,可將“編輯類型”設(shè)為文件名,然后在“文件的名稱”中進(jìn)行設(shè)置。3.標(biāo)簽和加速鍵列表標(biāo)簽對(duì)應(yīng)gtk_label_new()函數(shù)的功能。“常規(guī)”選項(xiàng)卡內(nèi)“標(biāo)簽”文本框用于編輯顯示的文字,“對(duì)齊”下拉列表框用于定義對(duì)齊方式。加速鍵列表即快捷標(biāo)簽,對(duì)應(yīng)gtk_accel_label_new()函數(shù)的功能??旖萱I在“公共”選項(xiàng)卡,“加速鍵”文本框中設(shè)置。4.文本條目和文本視圖文本條目即文本框,對(duì)應(yīng)gtk_entry_new()函數(shù)的功能。文本視圖對(duì)應(yīng)gtk_text_view_new()函數(shù)的功能?!俺R?guī)”選項(xiàng)卡中,“可編輯”用于決定是否鎖定文本框,“可見(jiàn)狀態(tài)”用于設(shè)置是否顯示文本框中的文本,“文字”文本框中可設(shè)置初始文本。5.范圍構(gòu)件范圍構(gòu)件共有4種分別是水平比例、垂直比例、水平滾動(dòng)條和垂直滾動(dòng)條?!俺R?guī)”選項(xiàng)卡“調(diào)整部件”中可設(shè)置范圍構(gòu)件的屬性。6.組合框與組合框條目組合框?qū)?yīng)bo_box_new()函數(shù)的功能,組合框條目對(duì)應(yīng)bo_box_entry_new()函數(shù)的功能。后者比前者多出一個(gè)文本框子構(gòu)件。單擊“常規(guī)”選項(xiàng)卡內(nèi)“條目”文本框后的編輯框,其中可編輯需要顯示的條目,多個(gè)條目用回車鍵分隔。26.2.3添加構(gòu)件7.進(jìn)度條進(jìn)度條對(duì)應(yīng)gtk_progress_bar_new()函數(shù)的功能。進(jìn)度條已完成的進(jìn)度比例可在“常規(guī)”選項(xiàng)卡“完成比例”微調(diào)框中設(shè)置。8.樹視圖和圖標(biāo)視圖樹視圖對(duì)應(yīng)gtk_tree_view_new()函數(shù)的功能,圖標(biāo)視圖對(duì)應(yīng)gtk_icon_view_new()函數(shù)的功能。9.可移動(dòng)的框可移動(dòng)的框?qū)?yīng)gtk_handle_box_new()函數(shù)的功能。10.狀態(tài)欄狀態(tài)欄對(duì)應(yīng)gtk_statusbar_new()函數(shù)的功能。11.日歷日歷構(gòu)件對(duì)應(yīng)gtk_calendar_new()函數(shù)的功能,可在“常規(guī)”選項(xiàng)卡“年”、“月”、“日”微調(diào)框中設(shè)置默認(rèn)選中的。其中“月份”的取值范圍為0至11,如果“日”的值設(shè)為0則不指定具體天數(shù)。26.2.3添加構(gòu)件12.彈出式菜單彈出式菜單并不會(huì)直接在編輯區(qū)中顯示,添加后會(huì)列出在“容器”列表中??墒褂貌藛尉庉嬈鬟M(jìn)行編輯。13.水平分割條和垂直分割條水平分割條對(duì)應(yīng)gtk_hseparator_new()函數(shù)的功能,垂直分割條對(duì)應(yīng)gtk_vseparator_new()函數(shù)的功能。14.箭頭箭頭對(duì)應(yīng)gtk_arrow_new()函數(shù)的功能。箭頭的方向可在“常規(guī)”選項(xiàng)卡內(nèi)“箭頭方向”下拉列表框中設(shè)置。15.繪圖區(qū)域繪圖區(qū)域?qū)?yīng)gtk_drawing_area_new()函數(shù)的功能。16.最近選擇器最近選擇器對(duì)應(yīng)gtk_recent_chooser_widget_new()函數(shù)的功能。其設(shè)置方法與最近選擇對(duì)話框類似。17.文件選擇部件文件選擇部件對(duì)應(yīng)gtk_file_chooser_widget_new()函數(shù)的功能。其設(shè)置方法與文件選擇對(duì)話框類似。26.2.4設(shè)置構(gòu)件屬性在Glade中,界面構(gòu)件的屬性被分為3類,分別位于“常規(guī)”、“打包”、“公共”選項(xiàng)卡中?!俺R?guī)”選項(xiàng)卡內(nèi)主要是構(gòu)件基本信息和特有的屬性?;拘畔ㄏ铝袃?nèi)容。類:構(gòu)件對(duì)應(yīng)GTK+庫(kù)的類名,該值不可修改。名稱:在程序中訪問(wèn)構(gòu)件的名稱,添加構(gòu)件時(shí)Glade會(huì)為其自動(dòng)指定一個(gè)?!按虬边x項(xiàng)卡用于設(shè)置構(gòu)件在容器中的位置,對(duì)于窗體和頂級(jí)容器不可用。其中屬性的設(shè)置如下。位置:如果上一級(jí)容器內(nèi)有多個(gè)單元格,那么第一個(gè)單元格的位置為0,依次類推。留空:用于設(shè)置構(gòu)件與上一級(jí)容器的上下間距。展開:用于設(shè)置是否展開界面構(gòu)件。填充:用于設(shè)置是否讓界面構(gòu)件占滿整個(gè)容器。包裹類型:可設(shè)置為“開始”或“結(jié)束”,用于定義界面裝入容器時(shí)的順序?!肮病边x項(xiàng)卡用于設(shè)置構(gòu)件的公共屬性,這些屬性均為GtkWidget類中定義的,因此可用于所有界面構(gòu)件。公共屬性的設(shè)置如下。寬度請(qǐng)求:設(shè)置構(gòu)件最小需求尺寸中寬度的數(shù)值。高度請(qǐng)求:設(shè)置構(gòu)件最小需求尺寸中高度的數(shù)值。26.2.4設(shè)置構(gòu)件屬性可見(jiàn):設(shè)置構(gòu)件是否在界面中顯示出來(lái)。敏感:設(shè)置構(gòu)件是否接受用戶的輸入。工具提示:鼠標(biāo)光標(biāo)在構(gòu)件上方懸停時(shí)所顯示的文本,Glade會(huì)自動(dòng)創(chuàng)建工具提示對(duì)象。不全部顯示:用于屏蔽gtk_widget_show_all()函數(shù)對(duì)該構(gòu)件的影響??衫L圖:設(shè)置應(yīng)用程序是否可以直接在此構(gòu)件上繪圖。接受焦點(diǎn):設(shè)置構(gòu)件是否可以接受輸入焦點(diǎn)。對(duì)于按鈕類構(gòu)件,默認(rèn)為“是”;對(duì)于容器類構(gòu)件,默認(rèn)為“否”。有焦點(diǎn):設(shè)置構(gòu)件是否已經(jīng)擁有輸入焦點(diǎn),對(duì)于“接受焦點(diǎn)”設(shè)置為“是”的構(gòu)件有效。如果多個(gè)構(gòu)件設(shè)置為“是”,只有第一個(gè)有效。為焦點(diǎn):設(shè)置構(gòu)件是否是頂級(jí)容器內(nèi)的聚焦部件。如果設(shè)置為“是”,當(dāng)構(gòu)件上一級(jí)容器獲得焦點(diǎn)時(shí),那么焦點(diǎn)會(huì)落在該構(gòu)件上。對(duì)于“接受焦點(diǎn)”設(shè)置為“是”的構(gòu)件有效。如果多個(gè)構(gòu)件設(shè)置為“是”,只有第一個(gè)有效。26.2.4設(shè)置構(gòu)件屬性可成為默認(rèn):設(shè)置構(gòu)件是否可以成為默認(rèn)的構(gòu)件,用于接受Enter鍵的響應(yīng)。接受默認(rèn)動(dòng)作:設(shè)置構(gòu)件在成為焦點(diǎn)時(shí)是否可以接受默認(rèn)動(dòng)作,即對(duì)于空格鍵的響應(yīng)。對(duì)于“接受焦點(diǎn)”設(shè)置為“是”的構(gòu)件有效。如果多個(gè)構(gòu)件設(shè)置為“是”,只有第一個(gè)有效。事件:用于決定界面構(gòu)件可接受哪些GtkEvent事件類型的響應(yīng)。單擊其右側(cè)編輯按鈕,將彈出“選擇區(qū)域”對(duì)話框,可在其中“選擇獨(dú)立區(qū)域”列表中選擇需要響應(yīng)的事件。擴(kuò)展事件:用于決定構(gòu)件可接受哪些擴(kuò)展事件。有工具提示:用于決定是否顯示工具提示對(duì)象中的文本。工具提示標(biāo)記:工具提示對(duì)象顯示的文本,在“有工具提示”設(shè)置為“是”時(shí)顯示。工具提示文本:如果設(shè)置了“工具提示文本”,那么“工具提示標(biāo)記”將無(wú)效??旖萱I:用于設(shè)置構(gòu)件的快捷方式,單擊右側(cè)編輯按鈕將彈出“選擇快捷鍵”對(duì)話框,可在其中編輯多組快捷方式。26.2.5添加事件和回調(diào)Glade主界面的“信號(hào)”選項(xiàng)卡中可為界面構(gòu)件連接事件、信號(hào)和回調(diào)函數(shù)。所選構(gòu)件可用的事件將以該構(gòu)件對(duì)應(yīng)的類的繼承關(guān)系顯示信號(hào)。上圖是文本輸入框所對(duì)應(yīng)的信號(hào)。最底層為GObject類定義的信號(hào),最頂層則是文本輸入框所屬的GtkEntry類定義的信號(hào)。單擊類名稱左側(cè)的展開器,將顯示出該類定義的所有信號(hào)。選擇信號(hào)名稱后,可為該信號(hào)連接回調(diào)函數(shù)和數(shù)據(jù),對(duì)應(yīng)g_signal_connect()函數(shù)的功能?;卣{(diào)函數(shù)可單擊對(duì)應(yīng)單元格中的下拉列表選擇?;卣{(diào)函數(shù)列表中的前2條函數(shù)是Glade根據(jù)構(gòu)件名稱命名的,其余為可用的GTK+函數(shù)。如果需要自定義回調(diào)函數(shù)名稱,可在單元格內(nèi)直接輸入。26.2.5添加事件和回調(diào)回調(diào)函數(shù)后可設(shè)置傳遞給回調(diào)函數(shù)的用戶數(shù)據(jù),該數(shù)據(jù)通常是回調(diào)函數(shù)中最后一個(gè)實(shí)際參數(shù)的名稱,可以為變量名或常量。如果回調(diào)函數(shù)并非GTK+中提供的函數(shù),那么回調(diào)函數(shù)的實(shí)現(xiàn)必須在具體C語(yǔ)言代碼中進(jìn)行,兩者使用的名稱必須一致。信號(hào)列表中有一項(xiàng)“之后”單選框,選擇后將使用g_signal_connect_after()函數(shù)連接信號(hào)與回調(diào)函數(shù)。當(dāng)為信號(hào)設(shè)置回調(diào)函數(shù)后,信號(hào)名的左側(cè)會(huì)多出一個(gè)展開器。如果需要為同一個(gè)信號(hào)連接更多的回調(diào)函數(shù),可單擊該展開器添加更多回調(diào)函數(shù)。26.3C語(yǔ)言代碼聯(lián)編Glade的項(xiàng)目文件是一個(gè)單獨(dú)的“.glade”文件,可通過(guò)GTK+庫(kù)將該項(xiàng)目文件添加到C語(yǔ)言源代碼中。這樣,就能在C語(yǔ)言編程寫的程序中直接使用Glade設(shè)計(jì)的用戶界面。本節(jié)將介紹GTK+庫(kù)使用Glade項(xiàng)目文件的方法。26.3.1GTK+庫(kù)使用Glade項(xiàng)目文件通過(guò)GTK+函數(shù)庫(kù)連接Glade項(xiàng)目文件至少包含兩個(gè)步驟,這些工作必須在GTK+庫(kù)初始化后,且沒(méi)有進(jìn)入GTK+主循環(huán)時(shí)完成。步驟如下:(1)創(chuàng)建GtkBuilder對(duì)象。GtkBuilder對(duì)象是用于動(dòng)態(tài)加載XML格式用戶界面的類型,可使用gtk_builder_new()函數(shù)創(chuàng)建。它的一般形式為:GtkBuilder對(duì)象名;對(duì)象名=glade_xml_new();gtk_builder_add_from_file(GtkBuilder*builder,

constgchar*filename,

GError**error);其中,builder參數(shù)為glade_xml_new()執(zhí)行后創(chuàng)建的對(duì)象。filename參數(shù)為Glade項(xiàng)目文件的路徑和名稱。error參數(shù)為函數(shù)執(zhí)行錯(cuò)誤后返回錯(cuò)誤信息,NULL表示使用默認(rèn)錯(cuò)誤機(jī)制。26.3.1GTK+庫(kù)使用Glade項(xiàng)目文件(2)獲得界面構(gòu)件??蓮挠行У腉tkBuilder對(duì)象中獲得界面構(gòu)件,然后對(duì)其進(jìn)行操作。至少要獲得頂層窗體構(gòu)件,然后使用GTK+函數(shù)將其顯示出來(lái)。gtk_builder_get_object()函數(shù)用于獲得界面構(gòu)件,它的一般形式為:gtk_builder_get_object(GtkBuilder*builder,

constgchar*name);builder參數(shù)為GtkBuilder對(duì)象的名稱,name參數(shù)為Glade項(xiàng)目中界面構(gòu)件的名稱。函數(shù)返回值是GtkWidget對(duì)象。(3)連接信號(hào)。在Glade中定義了信號(hào)后,可使用gtk_builder_connect_signals()函數(shù)將這些信號(hào)全部連接到C語(yǔ)言代碼中。它的一般形式為:voidgtk_builder_connect_signals(GtkBuilder*builder,

gpointeruser_data);其中,user_data參數(shù)為用戶自定義的信號(hào),通常這個(gè)參數(shù)為NULL。26.3.1GTK+庫(kù)使用Glade項(xiàng)目文件下面用一個(gè)例子說(shuō)明GTK+函數(shù)庫(kù)使用Glade項(xiàng)目文件的基本操作方法,首先在Glade里創(chuàng)建一個(gè)名為ui.glade的項(xiàng)目文件。然后在項(xiàng)目文件中添加一個(gè)窗體構(gòu)件,并在其中裝入一個(gè)縱向組裝盒、一個(gè)標(biāo)簽構(gòu)件和一個(gè)按鈕構(gòu)件。將窗體命名為MainWindow,標(biāo)簽命名為label。在“常規(guī)”選項(xiàng)卡內(nèi)將按鈕的“配置按鈕內(nèi)容”屬性設(shè)為“庫(kù)存按鈕”,將“庫(kù)存按鈕”屬性設(shè)為“退出(Q)”。然后為窗體構(gòu)件連接信號(hào)。選擇窗體,單擊“信號(hào)”選項(xiàng)卡。找到信號(hào)列表中GtkWidget項(xiàng),單擊左側(cè)展開器,展開GtkWidget類中定義的信號(hào)。選擇delete-event信號(hào),為其添加回調(diào)函數(shù)gtk_main_quit,如圖26.45所示。26.3.1GTK+庫(kù)使用Glade項(xiàng)目文件選擇按鈕構(gòu)件,選擇“信號(hào)”選項(xiàng)卡。找到信號(hào)列表中GtkButton項(xiàng),單擊左側(cè)展開器,展開GtkButton類中定義的信號(hào)。選擇clicked信號(hào),為其添加回調(diào)函數(shù)gtk_main_quit。保存Glade項(xiàng)目文件。在上述Glade項(xiàng)目文件同一個(gè)目錄中建立一個(gè)C語(yǔ)言源代碼文件,可以使用任意文件名。編輯該文件,寫入如下代碼:在編譯參數(shù)中加入編譯參數(shù)“`pkg-config--cflags--libsgtk+-3.0`-export-dynamic”,編譯該程序。編譯成功后運(yùn)行程序,如圖26.46所示。程序中使用gtk_builder_add_from_file()函數(shù)讀取Glade項(xiàng)目文件ui.glade,創(chuàng)建了一個(gè)GtkBuilder對(duì)象。然后通過(guò)gtk_builder_get_object()函數(shù)獲得了Glade項(xiàng)目中的window和label構(gòu)件。程序運(yùn)行時(shí),修改了標(biāo)簽label的字符串,并使用gtk_widget_show_all()函數(shù)將窗體構(gòu)件window內(nèi)的所有構(gòu)件顯示出來(lái)。Glade項(xiàng)目中為window和button構(gòu)件所連接的信號(hào)在執(zhí)行g(shù)tk_builder_connect_signals()函數(shù)后即可被程序所使用。所以單擊窗體的關(guān)閉按鈕,或者按下“退出”按鈕時(shí),將調(diào)用gtk_main_quit()函數(shù)結(jié)束程序。26.3.2使用GTK+多語(yǔ)言支持Linux系統(tǒng)本身具備完善的多語(yǔ)言支持體系,可使同一個(gè)可執(zhí)行文件擁有不同地方語(yǔ)言的圖形界面。這其中涉及到兩個(gè)重要概念:國(guó)際化與本地化。國(guó)際化是指將開發(fā)者原先使用的母語(yǔ)翻譯成多種其它的語(yǔ)言。由于實(shí)現(xiàn)翻譯的途徑、翻譯的工作效率、翻譯的可重用性等因素各不相同,使翻譯工作面臨很大困境,也阻礙了軟件的推廣和應(yīng)用。為了方便地將軟件翻譯成不同語(yǔ)言的版本,就需要一套翻譯規(guī)范和通用工具,于是就誕生了i18n工具集。i18n即“internationalization”的縮寫形式,主要使用gettext軟件包實(shí)現(xiàn)國(guó)際化支持。本地化是指可執(zhí)行文件能夠根據(jù)當(dāng)前的語(yǔ)言環(huán)境選擇圖形界面上使用的語(yǔ)言。除語(yǔ)言以外,字符編碼、語(yǔ)法、度量單位、日期時(shí)間格式、閱讀習(xí)慣、使用習(xí)慣等也是需要考慮的問(wèn)題,因此設(shè)計(jì)了l10n工具集。l10n是localization的縮寫形式,主要使用locale軟件包實(shí)現(xiàn)本地化支持。在概念中,本地化包含國(guó)際化,兩者相輔相成。本節(jié)假設(shè)開發(fā)者的母語(yǔ)為英語(yǔ),本地應(yīng)用為簡(jiǎn)體中文,演示libglade對(duì)多語(yǔ)言的支持。下面是具體操作步驟:26.3.2使用GTK+多語(yǔ)言支持1.為Glade項(xiàng)目創(chuàng)建po和mo文件po文件意為可移植對(duì)象;mo文件意為機(jī)器對(duì)象。po文件是面向翻譯人員、提取于Glade項(xiàng)目的一種資源文件。當(dāng)軟件升級(jí)的時(shí)候,通過(guò)使用gettext軟件包處理po文件,可以在一定程度上使翻譯成果得以繼承,減輕翻譯人員的負(fù)擔(dān)。mo文件是面向計(jì)算機(jī)的、由po文件通過(guò)gettext軟件包編譯而成的二進(jìn)制文件。程序通過(guò)讀取mo文件使自身的界面轉(zhuǎn)換成用戶使用的語(yǔ)言。假設(shè)已建立了一個(gè)Glade項(xiàng)目文件ui.glade,其中包含一個(gè)主窗體window,窗體標(biāo)題為UserInformation。窗體中放置著一個(gè)表格容器,然后在容器中裝入一組標(biāo)簽構(gòu)件,構(gòu)件的標(biāo)簽分別是Name、Gender和Age。再將標(biāo)簽為Male和Female的單選按鈕裝入表格。最后裝入一個(gè)文本框、一個(gè)微調(diào)按鈕和一組按鈕庫(kù)按鈕。在包含Glade項(xiàng)目文件的目錄中創(chuàng)建名為po的目錄,進(jìn)入po目錄,創(chuàng)建一個(gè)名為POTFILES.in的新文件。用文本編輯器打開該文件,輸入Glade項(xiàng)目文件的文件名后保存,如下所示:ui.glade安裝intltool工具集,其中包含了gettext軟件包。在終端中輸入下列命令:apt-getinstallintltool安裝后,將工作目錄設(shè)為“POTFILES.in”文件的目錄。輸入下列命令創(chuàng)建po文件:intltool-update--potgettext-package=ui26.3.2使用GTK+多語(yǔ)言支持gettext-package參數(shù)的名稱為Glade項(xiàng)目文件的前綴名。命令執(zhí)行成功時(shí)會(huì)創(chuàng)建untitled.pot文件,該文件是po文件的模板。復(fù)制該文件,創(chuàng)建名為zh_CN.po的副本。用文本編輯器打開該文件進(jìn)行,將charset=CHARSET改為utf-8,將msgi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論