gem-graph-client/libide/tree/ide-tree-node.h

217 lines
10 KiB
C

/* ide-tree-node.h
*
* Copyright 2018-2019 Christian Hergert <chergert@redhat.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
#pragma once
#include <libide-core.h>
G_BEGIN_DECLS
#define IDE_TYPE_TREE_NODE (ide_tree_node_get_type())
IDE_AVAILABLE_IN_3_32
G_DECLARE_FINAL_TYPE (IdeTreeNode, ide_tree_node, IDE, TREE_NODE, GObject)
typedef enum
{
IDE_TREE_NODE_VISIT_BREAK = 0,
IDE_TREE_NODE_VISIT_CONTINUE = 0x1,
IDE_TREE_NODE_VISIT_CHILDREN = 0x3,
} IdeTreeNodeVisit;
typedef enum
{
IDE_TREE_NODE_FLAGS_NONE = 0,
IDE_TREE_NODE_FLAGS_DESCENDANT = 1 << 0,
IDE_TREE_NODE_FLAGS_ADDED = 1 << 1,
IDE_TREE_NODE_FLAGS_CHANGED = 1 << 2,
IDE_TREE_NODE_FLAGS_REMOVED = 1 << 3,
} IdeTreeNodeFlags;
/**
* IdeTreeTraverseFunc:
* @node: an #IdeTreeNode
* @user_data: closure data provided to ide_tree_node_traverse()
*
* This function prototype is used to traverse a tree of #IdeTreeNode.
*
* Returns: #IdeTreeNodeVisit, %IDE_TREE_NODE_VISIT_BREAK to stop traversal.
*
* Since: 3.32
*/
typedef IdeTreeNodeVisit (*IdeTreeTraverseFunc) (IdeTreeNode *node,
gpointer user_data);
/**
* IdeTreeNodeCompare:
* @node: an #IdeTreeNode that iterate over children
* @child: an #IdeTreeNode to be inserted
*
* This callback function is a convenience wrapper around GCompareFunc
*
* Returns: int
*
* Since: 3.32
*/
typedef int (*IdeTreeNodeCompare) (IdeTreeNode *node,
IdeTreeNode *child);
IDE_AVAILABLE_IN_3_32
IdeTreeNode *ide_tree_node_new (void);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_get_has_error (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_has_error (IdeTreeNode *self,
gboolean has_error);
IDE_AVAILABLE_IN_3_32
const gchar *ide_tree_node_get_tag (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_tag (IdeTreeNode *self,
const gchar *tag);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_is_tag (IdeTreeNode *self,
const gchar *tag);
IDE_AVAILABLE_IN_3_32
GtkTreePath *ide_tree_node_get_path (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
const gchar *ide_tree_node_get_display_name (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_display_name (IdeTreeNode *self,
const gchar *display_name);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_get_is_header (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_is_header (IdeTreeNode *self,
gboolean header);
IDE_AVAILABLE_IN_3_32
GIcon *ide_tree_node_get_icon (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_icon (IdeTreeNode *self,
GIcon *icon);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_icon_name (IdeTreeNode *self,
const gchar *icon_name);
IDE_AVAILABLE_IN_3_32
GIcon *ide_tree_node_get_expanded_icon (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_expanded_icon (IdeTreeNode *self,
GIcon *expanded_icon);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_expanded_icon_name (IdeTreeNode *self,
const gchar *expanded_icon_name);
IDE_AVAILABLE_IN_3_32
gpointer ide_tree_node_get_item (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_item (IdeTreeNode *self,
gpointer item);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_get_children_possible (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_children_possible (IdeTreeNode *self,
gboolean children_possible);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_is_empty (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_has_child (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
guint ide_tree_node_get_n_children (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
IdeTreeNode *ide_tree_node_get_next (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
IdeTreeNode *ide_tree_node_get_previous (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
guint ide_tree_node_get_index (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
IdeTreeNode *ide_tree_node_get_nth_child (IdeTreeNode *self,
guint index_);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_prepend (IdeTreeNode *self,
IdeTreeNode *child);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_append (IdeTreeNode *self,
IdeTreeNode *child);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_insert_sorted (IdeTreeNode *self,
IdeTreeNode *child,
IdeTreeNodeCompare cmpfn);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_insert_before (IdeTreeNode *self,
IdeTreeNode *child);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_insert_after (IdeTreeNode *self,
IdeTreeNode *child);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_remove (IdeTreeNode *self,
IdeTreeNode *child);
IDE_AVAILABLE_IN_3_32
IdeTreeNode *ide_tree_node_get_parent (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_is_root (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_is_first (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_is_last (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
IdeTreeNode *ide_tree_node_get_root (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_holds (IdeTreeNode *self,
GType type);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_traverse (IdeTreeNode *self,
GTraverseType traverse_type,
GTraverseFlags traverse_flags,
gint max_depth,
IdeTreeTraverseFunc traverse_func,
gpointer user_data);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_add_emblem (IdeTreeNode *self,
GEmblem *emblem);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_get_reset_on_collapse (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_reset_on_collapse (IdeTreeNode *self,
gboolean reset_on_collapse);
IDE_AVAILABLE_IN_3_32
const GdkRGBA *ide_tree_node_get_background_rgba (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_background_rgba (IdeTreeNode *self,
const GdkRGBA *background_rgba);
IDE_AVAILABLE_IN_3_32
const GdkRGBA *ide_tree_node_get_foreground_rgba (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_foreground_rgba (IdeTreeNode *self,
const GdkRGBA *foreground_rgba);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_is_selected (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
gboolean ide_tree_node_get_use_markup (IdeTreeNode *self);
IDE_AVAILABLE_IN_3_32
void ide_tree_node_set_use_markup (IdeTreeNode *self,
gboolean use_markup);
IDE_AVAILABLE_IN_3_34
void ide_tree_node_set_flags (IdeTreeNode *self,
IdeTreeNodeFlags flags);
IDE_AVAILABLE_IN_3_34
IdeTreeNodeFlags ide_tree_node_get_flags (IdeTreeNode *self);
G_END_DECLS