簡介:
"系統托盤"是一個運行在指定的 X 螢幕上的應用程式,它顯示由其它正在啟動並執行應用程式提供的小表徵圖,以此來提供通知功能。在 Windows XP 裡稱之為"通知區域"。在 GNOME 案頭系統中,系統托盤顯示在案頭上的功能表列(gnome-panel)上,如果你的功能表列上預設沒有"系統托盤",那麼可以通過右鍵點功能表列->添 加到功能表列...,然後選擇"系統通知區域“來添加。
前言:
在 GNOME 系統中,系統通知功能分兩部分實現:
1)系統功能表欄的上的通知區域,這個是在 gnome-panel/applets/notification_area , 這相當於系統通知的服務端,所有通知表徵圖都會顯示在這塊地區裡
2)應用程式端,GNOME 環境中所有使用了系統通知功能的程式,都自己包含了來自 libegg 中的兩個實現系統通知功能應用程式端介面的庫:eggtrayicon.c, eggtrayicon.h。 libegg 是一個包含了許多沒有納入但可能在末來某個時候被納入到 GNOME 正式發行的包裡的功能庫。(eggtrayicon.c和eggtrayicon.h見附件)
實現你自己的通知功能表徵圖
現在就需要在咱們已經的代碼裡調用 eggtrayicon.h 裡的函數來實現我們的通知功能了。
1. 首先在你的源碼裡引用標頭檔 eggtrayicon.h
2. 調用 GtkWidget *egg_tray_icon_new(void) 來建立一個通知表徵圖控制項,如 tray_icon.
3. 在 tray_icon 加入自己的控制項
CODE: [Copy to clipboard]
#include "eggtrayicon.h"
void
create_tray (tray_demo * tray)
{
GtkWidget *image;
GtkWidget *event_box;
GtkTooltips *tooltips;
EggTrayIcon *tray_icon;
tooltips = gtk_tooltips_new ();
tray_icon = egg_tray_icon_new ("Tray icon demo");
event_box = gtk_event_box_new ();
gtk_container_add (GTK_CONTAINER (tray_icon), event_box);
g_signal_connect (G_OBJECT (event_box), "button-press-event",
G_CALLBACK (tray_button_press_event_cb), tray);
gtk_tooltips_set_tip (GTK_TOOLTIPS(tooltips), event_box, _("Try a left/right click"),NULL);
image = load_image (GCN_ICON);
gtk_container_add (GTK_CONTAINER (event_box), image);
gtk_widget_show_all (GTK_WIDGET (tray_icon));
return;
}