gboolean plugin_done(void) { hooks_unregister_hook(FOLDER_ITEM_UPDATE_HOOKLIST, hook_f_item); hooks_unregister_hook(FOLDER_UPDATE_HOOKLIST, hook_f); hooks_unregister_hook(MSGINFO_UPDATE_HOOKLIST, hook_m_info); hooks_unregister_hook(OFFLINE_SWITCH_HOOKLIST, hook_offline); hooks_unregister_hook(MAIN_WINDOW_CLOSE, hook_mw_close); hooks_unregister_hook(MAIN_WINDOW_GOT_ICONIFIED, hook_got_iconified); hooks_unregister_hook(ACCOUNT_LIST_CHANGED_HOOKLIST, hook_account); hooks_unregister_hook(THEME_CHANGED_HOOKLIST, hook_theme_changed); notify_save_config(); notify_gtk_done(); /* foldercheck cleanup */ notification_foldercheck_write_array(); notification_free_folder_specific_array(); #ifdef NOTIFICATION_BANNER notification_collected_msgs_free(banner_collected_msgs); banner_collected_msgs = NULL; notification_banner_destroy(); #endif #ifdef NOTIFICATION_LCDPROC notification_lcdproc_disconnect(); #endif #ifdef NOTIFICATION_TRAYICON notification_trayicon_destroy(); #endif #ifdef NOTIFICATION_INDICATOR notification_indicator_destroy(); #endif notification_core_free(); #ifdef HAVE_LIBNOTIFY if(notify_is_initted()) notify_uninit(); #endif #ifdef NOTIFICATION_HOTKEYS notification_hotkeys_unbind_all(); #endif notification_pixbuf_free_all(); debug_print("Notification plugin unloaded\n"); /* Returning FALSE here means that g_module_close() will not be called on the plugin. * This is necessary, as needed libraries are not designed to be unloaded. */ return FALSE; }
static GdkPixbuf* notification_trayicon_create(void) { GdkPixbuf *trayicon_nomail; GtkActionGroup *action_group; trayicon_nomail = notification_pixbuf_get(NOTIFICATION_TRAYICON_NOMAIL); notification_trayicon_destroy(); trayicon = gtk_status_icon_new_from_pixbuf(trayicon_nomail); g_signal_connect(G_OBJECT(trayicon), "activate", G_CALLBACK(notification_trayicon_on_activate), NULL); g_signal_connect(G_OBJECT(trayicon), "popup-menu", G_CALLBACK(notification_trayicon_on_popup_menu), NULL); g_signal_connect(G_OBJECT(trayicon), "size-changed", G_CALLBACK(notification_trayicon_on_size_changed), NULL); /* Popup-Menu */ action_group = cm_menu_create_action_group("SysTrayiconPopup", trayicon_popup_menu_entries, G_N_ELEMENTS(trayicon_popup_menu_entries), NULL); gtk_action_group_add_toggle_actions(action_group, trayicon_popup_toggle_menu_entries, G_N_ELEMENTS(trayicon_popup_toggle_menu_entries), NULL); MENUITEM_ADDUI("/Menus", "SysTrayiconPopup", "SysTrayiconPopup", GTK_UI_MANAGER_MENU) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "GetMail", "SysTrayiconPopup/GetMail", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "GetMailAcc", "SysTrayiconPopup/GetMailAcc", GTK_UI_MANAGER_MENU) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Separator1", "SysTrayiconPopup/---", GTK_UI_MANAGER_SEPARATOR) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Email", "SysTrayiconPopup/Email", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "EmailAcc", "SysTrayiconPopup/EmailAcc", GTK_UI_MANAGER_MENU) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Separator2", "SysTrayiconPopup/---", GTK_UI_MANAGER_SEPARATOR) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "OpenAB", "SysTrayiconPopup/OpenAB", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Separator3", "SysTrayiconPopup/---", GTK_UI_MANAGER_SEPARATOR) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "ToggleOffline", "SysTrayiconPopup/ToggleOffline", GTK_UI_MANAGER_MENUITEM) #ifdef HAVE_LIBNOTIFY MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "ShowBubbles", "SysTrayiconPopup/ShowBubbles", GTK_UI_MANAGER_MENUITEM) #endif MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Separator4", "SysTrayiconPopup/---", GTK_UI_MANAGER_SEPARATOR) MENUITEM_ADDUI("/Menus/SysTrayiconPopup", "Exit", "SysTrayiconPopup/Exit", GTK_UI_MANAGER_MENUITEM) traymenu_popup = gtk_menu_item_get_submenu(GTK_MENU_ITEM( gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/SysTrayiconPopup"))); return trayicon_nomail; }