示例#1
0
static void
applet_change_orientation (PanelApplet       *applet,
                           PanelAppletOrient  orient,
                           AppletData         *data)
{
  na_tray_set_orientation (data->tray, get_orientation_from_applet (applet));
}
示例#2
0
static gboolean
applet_factory (PanelApplet *applet,
                const gchar *iid,
                gpointer     user_data)
{
  NaTray     *tray;
  AppletData *data;
  AtkObject  *atko;

  if (!(strcmp (iid, "OAFIID:GNOME_NotificationAreaApplet") == 0 ||
        strcmp (iid, "OAFIID:GNOME_SystemTrayApplet") == 0))
    return FALSE;

  tray = na_tray_new_for_screen (gtk_widget_get_screen (GTK_WIDGET (applet)),
				 get_orientation_from_applet (applet));

  data = g_slice_new (AppletData);
  data->applet = applet;
  data->tray = tray;
  data->about_dialog = NULL;

  g_object_set_data_full (G_OBJECT (applet),
                          "system-tray-data",
                          data,
                          (GDestroyNotify) free_applet_data);

  atko = gtk_widget_get_accessible (GTK_WIDGET (applet));
  atk_object_set_name (atko, _("Panel Notification Area"));

  panel_applet_set_flags (applet,
                          PANEL_APPLET_HAS_HANDLE|PANEL_APPLET_EXPAND_MINOR);
  
  g_signal_connect (applet, "change_orient",
                    G_CALLBACK (applet_change_orientation), data);
  g_signal_connect (applet, "change_background",
                    G_CALLBACK (applet_change_background), data);
  g_signal_connect (applet, "destroy",
		    G_CALLBACK (applet_destroy), data);

  panel_applet_set_background_widget (applet, GTK_WIDGET (applet));

  gtk_container_add (GTK_CONTAINER (applet), GTK_WIDGET (tray));
  
#ifndef NOTIFICATION_AREA_INPROCESS
  gtk_window_set_default_icon_name (NOTIFICATION_AREA_ICON);
#endif
  gtk_widget_show_all (GTK_WIDGET (applet));

  panel_applet_setup_menu_from_file (applet,
  			             NULL,
                                     "GNOME_NotificationAreaApplet.xml",
                                     NULL,
                                     menu_verbs,
                                     data);
  
  return TRUE;
}
示例#3
0
文件: main.c 项目: braikar/mate-panel
static void on_applet_realized(GtkWidget* widget, gpointer user_data)
{
    MatePanelApplet* applet;
    AppletData* data;
    NaTray* tray;
    GtkActionGroup* action_group;
    gchar* ui_path;

    applet = MATE_PANEL_APPLET(widget);
    data = g_object_get_data(G_OBJECT(widget), "system-tray-data");

    if (data != NULL)
    {
        return;
    }

    tray = na_tray_new_for_screen(gtk_widget_get_screen(GTK_WIDGET(applet)), get_orientation_from_applet(applet));

    data = g_slice_new(AppletData);
    data->applet = applet;
    data->tray = tray;

    g_object_set_data_full(G_OBJECT(applet), "system-tray-data", data, (GDestroyNotify) free_applet_data);

    g_signal_connect(applet, "change_orient", G_CALLBACK (applet_change_orientation), data);
    g_signal_connect(applet, "change_background", G_CALLBACK (applet_change_background), data);
    g_signal_connect(applet, "destroy", G_CALLBACK (applet_destroy), data);

    gtk_container_add(GTK_CONTAINER (applet), GTK_WIDGET (tray));
    gtk_widget_show(GTK_WIDGET(tray));

    action_group = gtk_action_group_new("ClockApplet Menu Actions");
    gtk_action_group_set_translation_domain(action_group, GETTEXT_PACKAGE);
    gtk_action_group_add_actions(action_group, menu_actions, G_N_ELEMENTS(menu_actions), data);
    ui_path = g_build_filename(NOTIFICATION_AREA_MENU_UI_DIR, "notification-area-menu.xml", NULL);
    mate_panel_applet_setup_menu_from_file(applet, ui_path, action_group);
    g_free(ui_path);
    g_object_unref(action_group);

}