Beispiel #1
0
static void
vinagre_bookmarks_fill_tree (GSList *entries, GtkTreeStore *store, GtkTreeIter *parent, GdkPixbuf *pixbuf)
{
  GSList                *l;
  GtkTreeIter            iter;
  VinagreBookmarksEntry *entry;

  for (l = entries; l; l = l->next)
    {
      entry = VINAGRE_BOOKMARKS_ENTRY (l->data);
      if (vinagre_bookmarks_entry_get_node (entry) != VINAGRE_BOOKMARKS_ENTRY_NODE_FOLDER)
	continue;

      gtk_tree_store_append (store, &iter, parent);
      gtk_tree_store_set (store, &iter,
                          IMAGE_COL, pixbuf,
                          NAME_COL, vinagre_bookmarks_entry_get_name (entry),
                          ENTRY_COL, entry,
		          -1);
      vinagre_bookmarks_fill_tree (vinagre_bookmarks_entry_get_children (entry),
				   store,
				   &iter,
				   pixbuf);
    }
}
static void
vinagre_bookmarks_entry_dispose (GObject *object)
{
  VinagreBookmarksEntry *entry = VINAGRE_BOOKMARKS_ENTRY (object);

  switch (entry->priv->node)
    {
      case VINAGRE_BOOKMARKS_ENTRY_NODE_CONN:
	if (entry->priv->conn)
	  {
	    g_object_unref (entry->priv->conn);
	    entry->priv->conn = NULL;
	  }
	break;

      case VINAGRE_BOOKMARKS_ENTRY_NODE_FOLDER:
	if (entry->priv->children)
	  {
	    g_slist_foreach (entry->priv->children, (GFunc) g_object_unref, NULL);
	    g_slist_free (entry->priv->children);
	    entry->priv->children = NULL;
	  }
	break;

      default:
	g_assert_not_reached ();
    }

  G_OBJECT_CLASS (vinagre_bookmarks_entry_parent_class)->dispose (object);
}
static void
vinagre_bookmarks_entry_finalize (GObject *object)
{
  VinagreBookmarksEntry *entry = VINAGRE_BOOKMARKS_ENTRY (object);

  if (entry->priv->node == VINAGRE_BOOKMARKS_ENTRY_NODE_FOLDER)
    g_free (entry->priv->name);

  G_OBJECT_CLASS (vinagre_bookmarks_entry_parent_class)->finalize (object);
}
VinagreBookmarksEntry *
vinagre_bookmarks_entry_new_folder (const gchar *name)
{
  VinagreBookmarksEntry *entry;

  g_return_val_if_fail (name != NULL, NULL);

  entry = VINAGRE_BOOKMARKS_ENTRY (g_object_new (VINAGRE_TYPE_BOOKMARKS_ENTRY, NULL));
  vinagre_bookmarks_entry_set_node (entry, VINAGRE_BOOKMARKS_ENTRY_NODE_FOLDER);
  vinagre_bookmarks_entry_set_name (entry, name);

  return entry;
}
VinagreBookmarksEntry *
vinagre_bookmarks_entry_new_conn (VinagreConnection *conn)
{
  VinagreBookmarksEntry *entry;

  g_return_val_if_fail (VINAGRE_IS_CONNECTION (conn), NULL);

  entry = VINAGRE_BOOKMARKS_ENTRY (g_object_new (VINAGRE_TYPE_BOOKMARKS_ENTRY, NULL));
  vinagre_bookmarks_entry_set_node (entry, VINAGRE_BOOKMARKS_ENTRY_NODE_CONN);
  vinagre_bookmarks_entry_set_conn (entry, conn);

  return entry;

}