static void init_bookmarks (GeditCollaborationWindowHelper *helper) { GeditCollaborationBookmarks *bookmarks; GList *item; bookmarks = gedit_collaboration_bookmarks_get_default (); item = gedit_collaboration_bookmarks_get_bookmarks (bookmarks); while (item) { GeditCollaborationBookmark *bookmark = item->data; bookmark_added (helper, bookmark); item = g_list_next (item); } helper->priv->added_handler_id = g_signal_connect (bookmarks, "added", G_CALLBACK (on_bookmark_added), helper); helper->priv->removed_handler_id = g_signal_connect (bookmarks, "removed", G_CALLBACK (on_bookmark_removed), helper); }
static void gedit_collaboration_window_helper_finalize (GObject *object) { GeditCollaborationWindowHelper *helper; GeditCollaborationBookmarks *bookmarks; helper = GEDIT_COLLABORATION_WINDOW_HELPER (object); bookmarks = gedit_collaboration_bookmarks_get_default (); if (helper->priv->added_handler_id) { g_signal_handler_disconnect (bookmarks, helper->priv->added_handler_id); } if (helper->priv->removed_handler_id) { g_signal_handler_disconnect (bookmarks, helper->priv->removed_handler_id); } if (helper->priv->io) { g_object_unref (helper->priv->io); } if (helper->priv->certificate_credentials) { inf_certificate_credentials_unref (helper->priv->certificate_credentials); } if (helper->priv->builder) { g_object_unref (helper->priv->builder); } G_OBJECT_CLASS (gedit_collaboration_window_helper_parent_class)->finalize (object); }
void on_action_item_delete (GtkAction *action, GeditCollaborationWindowHelper *helper) { GtkTreeIter iter; GtkTreeIter selected; InfcBrowser *browser; InfcBrowserIter *browser_iter; InfcBrowserIter parent; if (!inf_gtk_browser_view_get_selected (INF_GTK_BROWSER_VIEW (helper->priv->browser_view), &selected)) { return; } gtk_tree_model_sort_convert_iter_to_child_iter ( GTK_TREE_MODEL_SORT ( gtk_tree_view_get_model ( GTK_TREE_VIEW (helper->priv->browser_view) ) ), &iter, &selected ); gtk_tree_model_get (GTK_TREE_MODEL (helper->priv->browser_store), &iter, INF_GTK_BROWSER_MODEL_COL_BROWSER, &browser, INF_GTK_BROWSER_MODEL_COL_NODE, &browser_iter, -1); parent = *browser_iter; if (!infc_browser_iter_get_parent (browser, &parent)) { /* Toplevel bookmark */ InfXmlConnection *connection = infc_browser_get_connection (browser); GeditCollaborationBookmarks *bookmarks; GeditCollaborationBookmark *bookmark = g_object_get_data (G_OBJECT (connection), BOOKMARK_DATA_KEY); /* Close connection first */ if (infc_browser_get_status (browser) != INFC_BROWSER_DISCONNECTED) { inf_xml_connection_close (connection); } inf_gtk_browser_store_remove_connection (helper->priv->browser_store, connection); bookmarks = gedit_collaboration_bookmarks_get_default (); gedit_collaboration_bookmarks_remove (bookmarks, bookmark); } else { /* Remove the iter itself */ infc_browser_remove_node (browser, browser_iter); } g_object_unref (browser); if (browser_iter) { infc_browser_iter_free (browser_iter); } }